Рассмотрим следующую рекурсивную привязку верхнего уровня:
let f = (a => f a);
(где arg => expr
- лямбда-выражение)
Чтобы определить f
в глобальной среде, сначала мы должны оценить значение f
, а именно a => f a
. Но поскольку f
еще не определено, выражение a => f a
может вызвать ошибку.
Как интерпретаторы / компиляторы функциональных языков решают эту проблему?