recurse
(recur fun) -> any
(recurse ..) -> any
Реализует анонимную рекурсию, определяя функцию recurse на лету. Во время выполнения fun
символ recurse привязан к определению функции fun
.
https://software-lab.de/doc/refR.html#recur
Важная концепция и безусловно интересна её реализация в PicoLisp. Как к концепции, к этой теме есть планы вернуться специально. Здесь же только можно заметить, что концепция связана с другой концепцией lambda. Реализация в документации описана достаточно подробно и с большим количеством примеров, см. обе предыдущие ссылки. В связи с этим акцентируется внимание на механизме привязки символов к определениям. Рассматриваются нюансы, например, когда CAR
список символов или символ.
“Лямбда-выражение всегда имеет список исполняемых выражений в качестве своего CDR
. Однако CAR
должен быть либо списком символов, либо одним символом, и он управляет оценкой аргументов исполняемой функции в соответствии со следующими правилами … ” (цитата по ссылке lambda).
Реализована оптимизации “хвостового вызова“, о чем будет ещё замечено в контексте соответствующих функций.