На Лиспексе можно написать правила для решений приложения, например издательские правила вёрстки, и получить ответ в виде данных. Разберите два примера и запустите первую программу.
Оба примера можно выполнить в Песочнице без установки. Для начала достаточно понимать вызов функции и вопрос с ответом «да» или «нет».
Сложение двух чисел
(+ 2 3)Результат
5Скобки объединяют выражение. + задаёт операцию, а 2 и 3 служат её
аргументами. Такие вызываемые операции в Лиспексе называются процедурами.
Решение о начале главы
В этом издательстве каждая глава начинается с нечётной страницы.
(define последняя-страница 37)
(if (odd? последняя-страница)
'(решение вставить-пустую)
'(решение начать-сразу))Результат
(решение вставить-пустую)define даёт номеру 37, последней странице предыдущей главы, имя
последняя-страница. Условие (odd? последняя-страница) истинно, поэтому
if выбирает первый ответ. Следующей была бы чётная страница 38, поэтому
сначала вставляется пустая страница. Если бы предыдущая глава закончилась на
чётной странице, результатом стал бы список (решение начать-сразу).
Апостроф сохраняет (решение вставить-пустую) как список данных. Без него
Лиспекс попытался бы вызвать процедуру с именем решение. Приложение может
прочитать этот список и вставить пустую страницу.
Запуск своей программы
Урок Первая программа предлагает запустить код, изменить число и исправить пропущенную скобку. Путь обучения состоит из шести уроков. В них вы создадите издательское правило вёрстки и проверите 2 оставшиеся строки, 1 строку и заголовок главы.
| Следующая задача | Страница |
|---|---|
| Запустить код в браузере или сохранить локальный файл | Первая программа |
| Найти часто используемый синтаксис | Синтаксис одним взглядом |
| Найти форму или процедуру | Справочник синтаксиса или Указатель процедур |
| Читать SICP, изменять и запускать примеры | Lispex · курс SICP |
Откуда правило получает данные
Приложение передаёт входные данные и определяет действия по полученному ответу. В правилах Лиспекса нет скрытых сетевых вызовов, часов, случайных значений или импорта пакетов. Эталонная реализация использует точную арифметику там, где это возможно, и заданные правила вычисления и диагностики.
При сравнении запусков сохраняйте одинаковыми байты исходника и ввода, исполнитель и профиль ресурсов. Профиль ресурсов задаёт доступный объём вычислений и памяти. Сравнивайте одни и те же каналы результата, вывода и диагностики. Подробнее об этом написано в разделе Детерминированность и профили ресурсов.
Обычный запуск выполняет доверенный исходник непосредственно в вызывающем
процессе. Так же работают инструменты сравнения способов выполнения и
вычислитель для разработки в lispex mcp serve. Чтобы задать лимиты работы
и памяти для правила принятия решений, используйте Native lispex embed.
Он работает внутри вызывающего процесса. После завершения он создаёт запись,
связывающую правило, ввод, лимиты и результат. Необходимые файлы и команды
описаны в руководстве по профилю ресурсов.
Сохранение и передача правил
| Задача | Возможность и руководство |
|---|---|
| Сохранить точные байты исходника в пикселях и восстановить их | Изображения Лиспекса |
| Подготовить инструкции для виртуальной машины, программы для их локального выполнения | Запуск проверенного байткода |
| Сверить подписанное решение со своим исходником, вводом и требуемым локальным результатом | Ваучер Лиспекса |
| Написать правило и подключить его к приложению | Правила и приложения |
| Сохранить байт-код | Байт-код и развёртывание |
| Исследовать различия реализаций | Сравнение реализаций |
Справочник сред выполнения описывает эталонную реализацию и интерпретаторы для сравнения результатов. Следующий урок начинается на странице Первая программа.