Как ужеуже́ говорилось, использование локальных переменных представляет собой побочный эффект, поэтому оно недопустимо в функциональных языках. Однако в некоторых случаях использование локальных переменных носит оптимизирующий характер, что позволяет сэкономить время и ресурсы во время вычислений.
Пусть <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> будет называться локальной переменной.