Чистая функция
- Чистая функция в программировании обладает свойствами: идентичные возвращаемые значения для идентичных аргументов и отсутствие побочных эффектов.
- Примеры чистых функций: этаж, max, f() без изменения переменных.
- Нечистые функции: изменение возвращаемого значения в статической переменной, нелокальной переменной, изменяемом ссылочном аргументе или потоке ввода/вывода.
- Библиотечная функция C++ sin() не является чистой из-за зависимости от режима округления IEEE.
- Ввод-вывод в чистых функциях: операции ввода подрывают ссылочную прозрачность, операции вывода создают побочные эффекты.
- Монада ввода-вывода — идиома программирования для выполнения ввода-вывода в чисто функциональных языках.
- Запоминание: выходные данные чистой функции могут быть кэшированы для сокращения вычислительных затрат.
- Оптимизация компилятора: методы оптимизации компилятора могут использоваться для функций без побочных эффектов.
- Некоторые языки программирования (Fortran, D, GCC) поддерживают объявление чистого свойства функции.
- Чистые функции хорошо подходят для модульного тестирования из-за идентичных возвращаемых значений для одинаковых аргументов.
Полный текст статьи: