Чистота функции

Чистота функции

В функциональных языках программирования, чистая функция, это функция, которая:

  1. является детерминированной;
  2. не обладает побочными эффектами.

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

Содержание

Детерминированность функции

Недетерминированность функции — возможность возвращения функцией разных значений несмотря на то, что ей передаются на вход одинаковые значения входных аргументов. В этом случае невозможно построить однозначную таблицу значений функции; для таких функций таблицы значений выглядят как список (может быть, бесконечный) возможных значений, которые функция принимает на заданном наборе входных параметров.

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

Побочные эффекты функции

В императивных языках некоторые функции в процессе выполнения своих вычислений могут модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации, вызывая их обработчики. Такие функции называются функциями с побочными эффектами. Другим видом побочных эффектов является модификация переданных в функцию параметров (переменных), когда в процессе вычисления выходного значения функции изменяется и значение входного параметра.

Описывать функции без побочных эффектов позволяет практически любой язык программирования. Однако некоторые языки поощряют или даже требуют от некоторых видов функций использования побочных эффектов. Например, во многих объектно-ориентированных языках в функцию-член класса передаётся скрытый параметр — указатель на экземпляр класса, от имени которого вызывается соответствующая функция (например, в C++ этот параметр называется this, а в Object Pascal - self), который эта функция неявно модифицирует. Тем не менее, в языке C++ можно указать для метода класса модификатор const, тем самым сообщив компилятору о том, что метод не модифицирует данные класса.

Ортогональность детерминированности и побочных эффектов

Обычно, функции, обладающие побочными эффектами не являются детерминированными, поэтому функции без побочных эффектов, детерминированные функции и чистые функции иногда путают. В действительности это разные свойства функций. Например, функция rand, которая возвращает случайное число, или гипотетическая функция GetGlobalVarX, которая возвращает значение глобальной переменной X (и больше ничего не делает), не являются детерминированными, хотя они и не обладают побочными эффектами. А вот гипотетическая функция print, выводящая текст на экран и всегда возвращающая 0, наоборот — является детерминированной, но обладает побочным эффектом (вывод текста на экран). Ни одна из них не является чистой.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Чистота функции" в других словарях:

  • Чистота языка программирования — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. Чистота …   Википедия

  • ГОСТ Р 51109-97: Промышленная чистота. Термины и определения — Терминология ГОСТ Р 51109 97: Промышленная чистота. Термины и определения оригинал документа: 6.2.29 абсолютная тонкость фильтрования: Максимальный размер частиц искусственного загрязнителя сферической формы, обнаруженных в фильтрате. Определения …   Словарь-справочник терминов нормативно-технической документации

  • Медицина — I Медицина Медицина система научных знаний и практической деятельности, целями которой являются укрепление и сохранение здоровья, продление жизни людей, предупреждение и лечение болезней человека. Для выполнения этих задач М. изучает строение и… …   Медицинская энциклопедия

  • анализ — 3.8.7 анализ (review): Деятельность, предпринимаемая для установления пригодности, адекватности и результативности (3.2.14) рассматриваемого объекта для достижения установленных целей. Примечание Анализ может также включать определение… …   Словарь-справочник терминов нормативно-технической документации

  • метод — метод: Метод косвенного измерения влажности веществ, основанный на зависимости диэлектрической проницаемости этих веществ от их влажности. Источник: РМГ 75 2004: Государственная система обеспечения еди …   Словарь-справочник терминов нормативно-технической документации

  • система — 4.48 система (system): Комбинация взаимодействующих элементов, организованных для достижения одной или нескольких поставленных целей. Примечание 1 Система может рассматриваться как продукт или предоставляемые им услуги. Примечание 2 На практике… …   Словарь-справочник терминов нормативно-технической документации

  • КРОВЬ — КРОВЬ, жидкость, заполняющая артерии, вены и капиляры организма и состоящая из прозрачной бледножелтоват. цвета плаз мы и взвешенных в ней форменных элементов: красных кровяных телец, или эритроцитов, белых, или лейкоцитов, и кровяных бляшек, или …   Большая медицинская энциклопедия

  • объект — 3.14 объект (object): Элемент, который может быть охарактеризован посредством измерения его атрибутов. Источник …   Словарь-справочник терминов нормативно-технической документации

  • Цикл — совокупность процессов в системе периодически повторяющихся движений, при которых объект, подвергающийся изменению в определенной последовательности, вновь приходит в исходное положение. Источник: ГОСТ 2846 …   Словарь-справочник терминов нормативно-технической документации

  • блок — 23.02.13 блок* [block]: Часть текста, определенная пользователем, с которой проводят операции обработки текста. Источник: ГОСТ Р ИСО/МЭК 2382 23 2004: Информационная технология. Словарь. Часть 23. Обработка текста …   Словарь-справочник терминов нормативно-технической документации


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»