Песочница

Введение

Напишите на Лиспексе правило, которое вычисляет решение по входным данным. Разберите два примера и запустите первую программу.

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

Оба примера можно выполнить в Песочнице без установки. Для начала достаточно понимать вызов функции и вопрос с ответом «да» или «нет».

Сложение двух чисел

LISPEX
(+ 2 3)

Результат

ВЫВОД
5

Скобки объединяют выражение. + задаёт операцию, а 2 и 3 служат её аргументами. Такие вызываемые операции в Лиспексе называются процедурами.

Решение о начале главы

В этом издательстве каждая глава начинается с нечётной страницы.

LISPEX
(define последняя-страница 37)

(if (odd? последняя-страница)
    '(решение вставить-пустую)
    '(решение начать-сразу))

Результат

ВЫВОД
(решение вставить-пустую)

define даёт номеру 37, последней странице предыдущей главы, имя последняя-страница. Условие (odd? последняя-страница) истинно, поэтому if выбирает первый ответ. Следующей была бы чётная страница 38, поэтому сначала вставляется пустая страница. Если бы предыдущая глава закончилась на чётной странице, результатом стал бы список (решение начать-сразу).

Апостроф сохраняет (решение вставить-пустую) как список данных. Без него Лиспекс попытался бы вызвать процедуру с именем решение. Приложение может прочитать этот список и вставить пустую страницу.

Запуск своей программы

Урок Первая программа предлагает запустить код, изменить число и исправить пропущенную скобку. Путь обучения состоит из шести уроков. В них вы создадите издательское правило вёрстки и проверите 2 оставшиеся строки, 1 строку и заголовок главы.

Следующая задачаСтраница
Запустить код в браузере или сохранить локальный файлПервая программа
Найти часто используемый синтаксисСинтаксис одним взглядом
Найти форму или процедуруСправочник синтаксиса или Указатель процедур
Читать SICP, изменять и запускать примерыLispex · курс SICP

Откуда правило получает данные

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

При сравнении запусков сохраняйте одинаковыми байты исходника и ввода, исполнитель и профиль ресурсов. Профиль ресурсов задаёт доступный объём вычислений и памяти. Сравнивайте одни и те же каналы результата, вывода и диагностики. Подробнее об этом написано в разделе Детерминированность и профили ресурсов.

Обычный запуск выполняет доверенный исходник непосредственно в вызывающем процессе. Так же работают инструменты сравнения способов выполнения и вычислитель для разработки в lispex mcp serve. Чтобы задать лимиты работы и памяти для правила принятия решений, используйте Native lispex embed. Он работает внутри вызывающего процесса. После завершения он создаёт запись, связывающую правило, ввод, лимиты и результат. Необходимые файлы и команды описаны в руководстве по профилю ресурсов.

Сохранение и передача правил

ЗадачаВозможность и руководство
Сохранить точные байты исходника в пикселях и восстановить ихИзображения Лиспекса
Подготовить инструкции для виртуальной машины, программы для их локального выполненияЗапуск проверенного байткода
Сверить подписанное решение со своим исходником, вводом и требуемым локальным результатомВаучер Лиспекса
Написать правило и подключить его к приложениюПравила и приложения
Сохранить байт-кодБайт-код и развёртывание
Исследовать различия реализацийСравнение реализаций

Справочник сред выполнения описывает эталонную реализацию и интерпретаторы для сравнения результатов. Следующий урок начинается на странице Первая программа.