Песочница

Основные формы

Ядро, с которым напрямую работает программа, выполняющая правило, состоит из цитирования, ссылки на переменную, if, последовательности, lambda, применения, присваивания, определения, лексического связывания и фиксированных узлов управления.

Проверьте запуском

LISPEX
((lambda (x) (if #t x 0)) 42)

Наблюдаемый результат

OUTPUT
42

Как рассуждать

  • У if обязательна ветвь else, а begin и тела процедур сохраняют порядок слева направо.
  • lambda поддерживает фиксированные и точечные параметры. set! меняет существующую ячейку, а define создаёт или обновляет верхнеуровневую ячейку.
  • quote возвращает неизменяемые литеральные данные, и программа не обрабатывает их элементы как выражения.
  • module записывается как (module имя (export имя ...) (import имя ...) тело ...) и допустим только на верхнем уровне. Внутри другой формы это E130. Заголовочные клаузы export и import идут перед телом.
  • Заголовок module проверяется и отбрасывается, а тело раскрывается наружу. Пространства имён он не создаёт. Не ждите от него сокрытия. Именно поэтому (f 21) ниже вызывается снаружи модуля.
LISPEX
(module doubling
  (export twice)
  (define (twice x) (* x 2)))

(twice 21)

Наблюдаемый результат

OUTPUT
42

Контракты форм

ФормаЧисло аргументов / вычислениеРезультат или ошибка
quoteодин datum, элементы не вычисляютсянеизменяемые данные
ifусловие, истинная и ложная ветви, сначала условиезначения выбранной ветви. E320, если условие даёт не одно значение
lambdaпараметры и 1..N форм телазамыкание. E302 при неверном числе аргументов
set!имя и правая часть с одним значениемноль значений. E303, если имя не связано
let / letrecсписок связываний и 1..N форм телазначения последней формы тела. E321 при раннем чтении letrec
moduleимя, 0..2 заголовочные клаузы, 1..N форм телатело, раскрытое наружу. E130 везде, кроме верхнего уровня

Частая ошибка

Удобные сокращённые формы перечислены в справочнике производных форм.

Куда дальше

Сокращения, которые нормализуются в эти формы, собраны на странице производных форм, а порядок вычисления подвыражений разобран в руководстве.

Производные формы · Выражения и порядок вычисления