Основы функционального программирования/Структуры данных и базисные операции — 2: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 101:
=== Локальные переменные ===
 
Как ужеуже́ говорилось, использование локальных переменных представляет собой побочный эффект, поэтому оно недопустимо в функциональных языках. Однако в некоторых случаях использование локальных переменных носит оптимизирующий характер, что позволяет сэкономить время и ресурсы во время вычислений.
 
Пусть <math>f</math> и <math>h</math> — функции, и необходимо вычислить выражение <math>h (f (X), f(X))</math>. Если в языке нет оптимизирующих методов, то в этом случае произойдетпроизойдёт двойное вычисление выражения <math>f (X)</math>. Чтобы этого не произошло, можно прибегнуть к такому изощренному способу: <math>(v\lambda v.h (v, v))(f (X))</math>. Естественно, что в этом случаетслучае выражение <math>f (X)</math> вычислится первым и один раз. Для того, чтобы минимизировать использование λ-исчисления, далее будет применяться следующая форма записи:
 
<math>\mathbf{let} v = f (X) \mathbf{in} h (v, v)</math>
 
(словаслова́ <math>\mathbf{let}</math>, <math>=</math> и <math>\mathbf{in}</math> — зарезервированы в языке). В этом случае переменная <math>v</math> будет называться локальной переменной.
 
== Элементы программирования ==