Сейчас очень модная тема, чуть ли не серебряная пуля, да.
Давайте рассмотрим код
Код:
1 + 2
Допустим, хотим немножко подурачиться. Запишем по-другому:
Код:
(let x=1 (function() ( x + 2))) или x + 2, where x=1
Круто? А то... А если градус идиотизма еще прибавить?
Код:
(let x=1 y=2 (function() (x + y))) или x + y, where x=1, y=2
Зачем это нужно, спросите Вы? Затем, что так достигается ссылочная прозрачность.
А зачем нужна чистота?
Предположим, есть функция,
Код:
(let x=getSomeValue() (function() ( x + 2))) или x + 2, where x= getSomeValue()
Как конпелятор этого петушиного языка подставит в компилтайме значение x, если ф-ция содержит муттабельную переменную? Вот это и есть суть.
Только вот нормальному программисту достаточно написать
Код:
1 + 2
, или, в крайнем случае,
Код:
1 + getSomeValue()
. Сказать, что эта строка является "программированием" можно с натяжкой. Секретарша тоже может в калькуляторе напечатать
Код:
1 + 2
, это не значит, что она написала программу. А программу она напишет, толко если сделает ЭТО (не минет, нет, всего лишь вычисление) в фапэ-стиле, да.
UPD Ну да, забыл сказать, что если математика головного мозга, поциенту этот код перестает казаться странным. Это диагноз.