let? ... let

let - определяет локальные переменные. Значение символа sym
- или значения символов sym
в списке второй формы - сохраняются, и символы привязываются к вычисленным аргументам any
. Аргументы lst
во второй форме могут состоять только из символов и подсписков и соответствовать аргументу any
(деструктурирующая привязка). prg
выполняется, затем символы восстанавливаются до своих исходных значений. Возвращается результат prg
. Передача NIL
в качестве аргумента sym
является условием ошибки. В шаблонах деструктуризации NIL
обозначает позицию "неважно".
let? - условное связывание и выполнение локальной переменной: если any
вычисляется как NIL
, возвращается NI
L. В противном случае значение символа sym сохраняется, и sym
привязывается к вычисленному аргументу any
. prg
выполняется, затем sym восстанавливается до своего исходного значения. Возвращается результат prg
. Передача NIL
в качестве аргумента sym
является условием ошибки. (let? sym 'any ..)
эквивалентно (when 'any (let sym @ ..))
.
https://picolisp.tiddlyhost.com/#let
Очень часто можно встретить в коде. Собственно, один из способов синтаксически выразить механизм организации памяти и, в частности, поименовать её фрагмент (блок). Синтаксический сахар. Особенно для деклартивного стиля или когда декларируется, что все данные, все динамично (и даже “связывание”). В принципе, примитивная функция перехода от имени параметра к его значению, в этом случае её описание, где было бы достаточно продемонстрировать просто как пару, а при необходимости скобками, специфицируя последние, например. А, вообще, можно и не специфицировать локальные и глобальные переменные, организуя и глобальные одним объектом (функциональным). В системе vlang, например, все переменные “привязываются в контексте функций“. И, более того, как уже выше замечено, объявление переменной или определение - это не что иное как примитивная, ориентированный переход вычислительного шага.
Subscribe to my newsletter
Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Sergey Shishkin
Sergey Shishkin
Всегда чему-то учусь!