Что определяет чистоту в FunC? Функции чтения/записи
-
Что определяет чистоту функции?
А) Он должен считывать только параметры функции. Б) Он может считывать значения вне параметров функции и возвращать значение, зависящее от параметров. C) Он может считывать значения вне параметров функции, но возвращаемое значение должно быть независимым от глобальных данных.
Во всех трех случаях функция не изменяет данные за пределами своей области действия.
<***Скрыто***
click to show
-
В контексте языка FunC эти три варианта определяют концепцию чистой функции.
Чистая функция - это функция, которая:
A) ** Считывает только значения, переданные** ему в качестве параметров, и не обращается ни к какому внешнему состоянию. Это означает, что его выходные данные определяются исключительно входными параметрами.
B) ** Может считывать значения вне параметров функции, но его вывод по-прежнему зависит только от значений, переданных ему в качестве параметров. ** Он не полагается ни на какое внешнее состояние или глобальные данные.
C) Может ** считывать значения вне параметров функции ** , но его выходные данные должны быть независимыми от каких-либо глобальных данных. Это означает, что он не должен использовать какие-либо глобальные переменные или данные или зависеть от них.
Эти определения чистой функции помогают гарантировать, что выходные данные функции предсказуемы и непротиворечивы, что облегчает их понимание, тестирование и отладку.
Практически: а) присутствует модификатор "нечистый" - гарантирует правильное поведение б) отсутствует модификатор "нечистый" - компилятор функции будет делать странные вещи, например, удалять некоторый код без вашего разрешения.
Это автоматически удалит вызов функции в двух случаях: a) функция ничего не возвращает: () fun() { }
б) функция возвращает что-то, но это что-то ничему не присваивается:
(int) fun() { return 5; } ... int a = fun(); ;; fun is called fun(); ;; fun call is removed"