Песочница

Лиспекс

Познакомьтесь с Лиспексом на небольшом решающем правиле, а затем выберите курс из шести шагов, Песочницу или точное руководство.

Лиспекс создан как небольшой Лисп для решений, которые должно быть легко перечитать. Правило записано обычным текстом. В документированных пределах один и тот же ввод даёт одинаковый наблюдаемый ответ, а результат может сохранять форму данных, вместо того чтобы исчезать внутри приложения.

Сначала посмотрите на форму

Программа на Лиспексе строится из значений и форм в скобках. В вычисляемой форме первое имя указывает, что делать, а остальные выражения передают входные данные.

LISPEX
(+ 2 3)

Результат

OUTPUT
5

Вложенные формы читаются изнутри наружу. Ниже define даёт значению имя, >= отвечает на вопрос, а if выбирает одно из двух значений данных.

LISPEX
(define total 62)

(if (>= total 50)
    '(decision free-shipping)
    '(decision standard-shipping))

Результат

OUTPUT
(decision free-shipping)

Апостроф перед '(decision free-shipping) означает «сохранить этот список как данные». Без него Лиспекс попытался бы вызвать процедуру decision. Это небольшое различие, возможность формы исполняться или сохраняться в виде данных, относится к полезным идеям, которые вы будете осваивать постепенно.

Для каких задач подходит Лиспекс

Лиспекс подходит для правил вроде проверок прав, сроков возврата, ценовых границ, выбора маршрута и повторяемых преобразований. Его эталонная среда опирается на детерминированные правила вычисления, точную арифметику там, где она возможна, и устойчивую диагностику. Такие свойства делают небольшое правило более удобным для повторного запуска и сравнения.

Лиспекс намеренно не является универсальной средой для скриптов операционной системы. Он не прячет сетевые вызовы, часы, случайные значения или импорт пакетов внутри решения. Ваше приложение передаёт ввод и само решает, что делать с возвращённым значением.

Выберите вход

Если вы хотите…Откройте
выучить язык за шесть шаговПуть обучения
запустить код без установкиПесочницу
увидеть повседневный синтаксис на одной страницеСинтаксис одним взглядом
установить локальную средуПервую программу
собрать и запустить проверенный Native-артефактЗапуск проверенного байткода
найти точную форму или процедуруСправочник синтаксиса или Указатель процедур

Точные изображения, проверенный байткод Native и Ваучер Лиспекса являются полноценными возможностями продукта, но ни одна из них не требуется для изучения языка. Изображения переносят точный исходный код. Байткод даёт явный локальный маршрут через виртуальную машину. Ваучер Лиспекса проверяет записанное решение позже. Он подтверждает, кто подписал правило, привязывает вашу собственную копию исходного кода и ввода и может потребовать одно точное локальное решение. Сначала освойте небольшой язык, тогда эти пути станут понятнее.

Запуск правила, которому вы не доверяете

Обычный способ запуска Лиспекса учитывает не всю работу, которую способно вызвать запущенное правило, и не всю память, учитываемую для этого правила. Продукты с выбором маршрута работают аналогично, как и авторский запуск через lispex mcp serve. Используйте их только с правилами, которым вы доверяете.

Для правила, которому вы не доверяете, у загружаемой программы есть команда lispex embed. Она предоставляет уменьшенный ограниченный набор возможностей языка. Она задаёт лимит на работу и лимит на память, и оба значения получаются одинаковыми при каждом запуске. У неё нет доступа к хост-машине и нет перехода к другому способу запуска. Эти лимиты соблюдаются внутри того же процесса, а не в песочнице на уровне операционной системы. Отмена вызова или завершение процесса не дают ни решения, ни portable core, небольшой переносимой записи, которую оставляет после себя завершённый запуск.

Обещание руководства

Документация отделяет то, что продукт делает, от того, чего он не утверждает. Эталонной средой выполнения служит Rust. Топаз это отдельный язык и его компилятор, и Лиспекс использует его в двух местах. Одно это виртуальная машина Топаза, которая выполняет подготовленные инструкции, другое это набор инструментов AOT, который заранее компилирует правило в отдельную программу. LIL, то есть Лиспекс, написанный на Лиспексе, и LIT, то есть Лиспекс, написанный на Топазе, являются проверочными бэкендами с ограниченным охватом. Они не служат скрытым запасным путём и не являются доказательством того, что все реализации везде совпадают. Вы можете пропустить эти механизмы во время прохождения курса и вернуться к Средам и бэкендам, когда понадобится развёртывание или перекрёстная проверка.

Слова, которые документация повторяет

Несколько слов повторяются в руководстве, в инструкциях и в истории выпусков. Для курса ни одно из них не нужно.

СловоЧто оно значит
вычислительпрограмма, которая выполняет правило
treeвстроенный интерпретатор, который читает ваш исходник напрямую
VMвиртуальная машина, то есть программа, которая выполняет подготовленные инструкции вместо чтения исходника
AOTкомпиляция заранее, которая превращает правило в программу до её запуска
каноническийзаписанный каждый раз одинаково, поэтому один и тот же ввод даёт одни и те же байты
boundedвыполнение в пределах фиксированного лимита работы и памяти
meterсчётчик, который измеряет объём работы, потраченный на запуск
маршрутодин способ выполнить правило
route lockнебольшой файл, где записан выбранный маршрут без указания расположения продукта на машине
portable coreнебольшая запись, которая связывает правило, ввод, лимиты и результат одного запуска
квитанциязапись о том, что дал один запуск или одна установка
сводная проверкаодин прогон проверок, собранный в единый вывод
поверхностьместо, где доступен Лиспекс, например Native, npm, сборка WebAssembly или Песочница, а поверхность языка означает охваченную его часть
ТопазОтдельный язык и его компилятор. Лиспекс использует его как виртуальную машину Топаза, выполняющую подготовленные инструкции, и как набор инструментов AOT, который заранее компилирует правило в отдельную программу
LILИнтерпретатор Лиспекса, написанный на Лиспексе
LITЛиспекс, написанный на Топазе
WASMсборка WebAssembly

Готовы? Откройте Путь обучения или сразу Первую программу, если предпочитаете учиться запуская код.