2010-05-28 3 views
0

Я часто перекрещиваю это преобразование кода (или даже математическое преобразование). (Пример Python, но относится к любому языку.)Что такое символическое преобразование кода?

Я пойти функцию

def f(x): 
    return x 

Я использую его в другой.

def g(x): 
    return f(x)*f(x) 

print g(2) 

приводит к 4

Но я хочу, чтобы удалить функциональную зависимость, и я изменить функцию г в

def g(f): 
    return f*f 

print g(f(2)) 

приводит к 4 слишком

Как вы называете это вид преобразования, локально превращая функцию в скаляр?

ответ

0

Я не уверен, что для этого есть определенный термин.

В общих чертах для функционального программирования обычно не проводится различие между передачей скалярных аргументов и передачей функций в качестве аргументов.

В первом примере я мог бы до сих пор называют g(f(2)) и он должен рассчитать f(f(2))*f(f(2)), который (так как f(x) тождественное преобразование) также приведет к 4 в качестве ответа.

+0

Да, но если f (x) занимает много времени (это не так) g (f (2)) во втором случае в два раза быстрее, чем g (2). Я ищу назначение для такого рода оптимизации кода. – user352966

+0

А, я понимаю, что вы имеете в виду. В этом случае, возможно, Memoization (http://en.wikipedia.org/wiki/Memoization) - это термин, который вы используете? Я бы ожидал/надеюсь, что компилятор и/или время выполнения будут следить за этим типом оптимизации. – Paolo

+0

Спасибо за ссылку, что ответить на «оптимизацию» часть картины, но я искал более «математический» термин: другого примера может быть, определение ОДЫ: в: у '(т) = y (t)^2; y - функция. Уравнение можно переписать: f (t) = y (t)^2; Чтобы решить эту проблему, вы создаете новую функцию: f2 (y, t) -> y^2; где в этом случае y является вещественным. Вы преобразовали f в f2 тем же самым процессом, который я сделал с g (x) Что-то вроде «скаляризации функции» имело бы смысл, к сожалению, это не так. – user352966

Смежные вопросы