Песочница

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

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

Кратко

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

Результат

OUTPUT
42

Текущие гарантии

  • У if обязательна ветвь else; begin и тела процедур сохраняют порядок слева направо.
  • lambda поддерживает фиксированные и точечные параметры; set! меняет существующую ячейку; define создаёт или обновляет верхнеуровневую ячейку.
  • quote возвращает неизменяемые литеральные данные; runtime не вычисляет их элементы.

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

ФормаАрность / вычислениеРезультат или ошибка
quote1 datum; элементы не вычисляютсянеизменяемый datum
iftest, consequent, alternate; сначала testпакет выбранной ветви; E320 если test не одно значение
lambdaformals и 1..N форм телаclosure; E302 при неверной арности
set!имя и RHS одного значенияноль значений; E303 если имя не связано
let / letrecсписок связываний и 1..N форм телапоследний пакет; E321 при чтении неинициализированного letrec

Границы

  • Удобные surface-формы относятся к справочнику производных форм.