Как называется функция, результат которой зависит только от ее параметров? - PullRequest
4 голосов
/ 13 января 2010

Я пишу игрушечный компилятор, который может оптимизировать вызовы функций, если результат зависит только от значений аргументов. Таким образом, такие функции, как xor и concatenate, зависят только от их входных данных, при вызове их с одинаковыми входными данными всегда получается один и тот же результат. Но такие функции, как time и rand, зависят от «скрытого» состояния программы, и вызов их с одним и тем же вводом может привести к разным выводам. Я просто пытаюсь выяснить, что такое прилагательное, которое отличает эти два типа функций, таких как «изоморфный» или «повторный» или что-то в этом роде Может кто-нибудь сказать мне слово, которое я ищу?

Ответы [ 3 ]

8 голосов
/ 13 января 2010

Вы ищете термин Чистый

7 голосов
/ 13 января 2010

Я думаю, это называется Чистая функция :

В компьютерном программировании функция может быть описана как чистая, если оба эти утверждения о функции выполняются:

  • Функция всегда оценивает одно и то же значение результата, учитывая одно и то же значение аргумента. Значение результата функции не может зависеть от какой-либо скрытой информации или состояния, которые могут изменяться по мере выполнения программы или между различными выполнениями программы, а также не может зависеть от какого-либо внешнего ввода от устройств ввода-вывода.
  • Оценка результата не вызывает какого-либо семантически наблюдаемого побочного эффекта или вывода, такого как мутация изменяемых объектов или вывод на устройства ввода-вывода.

Значение результата не должно зависеть от всех (или любых) значений аргумента. Однако это не должно зависеть ни от чего, кроме значений аргумента.

3 голосов
/ 13 января 2010

Полагаю, вы могли бы сказать, что прилагательное "чисто", если вы говорите "чистая функция".

Я всегда узнал, что функция, выходные данные которой всегда одинаковы, когда аргументы всегда одинаковы, называется "детерминированной". Лично я чувствую, что это более описательный термин. Я предполагаю, что «чистая функция» по определению является детерминированной, и кажется, что чистая функция также обязана не иметь побочных эффектов. Я предполагаю, что это не должно иметь место для всех детерминированных функций (при условии, что возвращаемое значение всегда одинаково для одних и тех же аргументов).

Ссылка на Википедию: http://en.wikipedia.org/wiki/Deterministic_algorithm

Цитата:

С учетом конкретного ввода он всегда будет выдавать один и тот же вывод, а базовый компьютер всегда будет проходить через одну и ту же последовательность состояний.

...