Вы можете выводить текст и значения из программы на Лиспексе. Вызывающее приложение передаёт внешние данные и решает, выполнять ли действие на основе полученного решения.
Выведите значение
Установите Native Лиспекс и сохраните полный исходник в output.lspx.
(begin (display "answer=") (write 42) (newline) 0)Выполните файл.
lispex run output.lspxКоманда печатает следующий текст и завершается с кодом 0. Новых файлов нет.
answer=42
0Программа явно печатает answer=42 и перевод строки. Затем Native печатает
возвращённое формой значение 0 в отдельной строке.
| Процедура | Что выводит |
|---|---|
display | Текст для чтения человеком |
write | Значение в читаемой записи Лиспекса |
newline | Один перевод строки |
println | Текст как у display и перевод строки |
Все четыре процедуры возвращают ноль значений. При интерактивном выполнении значения завершённой формы верхнего уровня печатаются после её явного вывода. В пакетном режиме возвращённые значения записываются отдельно, а stdout содержит только явный вывод.
Прочитайте вывод после остановки
Профиль ресурсов задаёт лимит байтов вывода. При выполнении полного исходника Native по-разному обрабатывает обычные ошибки и остановки по ресурсам.
| Исход | stdout | Код завершения |
|---|---|---|
| Успешное выполнение | Явный вывод и возвращённые значения | 0 |
| Обычная ошибка выполнения | Вывод, записанный до ошибки | 1 |
| Достигнут лимит ресурсов | Пустой | 2 |
Например, сохраните следующий файл как output-error.lspx.
(display "before\n")
(car 1)lispex run output-error.lspxstdout содержит before и перевод строки. Содержимое stderr приведено ниже.
Команда завершается с кодом 1 и не создаёт файлов.
E310 output-error.lspx:2:1 car: expected a pair, got 1CLI читает весь исходник и преобразует сокращённую запись в основные формы до вычисления. При ошибке исходника на этом этапе stdout остаётся пустым. Исходы по ресурсам описаны в разделе о ресурсах.
Передайте внешние действия приложению
Поддерживаемая процедура и разрешение хоста определяют разные возможности. Процедура задаёт вычисление, доступное правилу. Разрешение определяет внешнее действие, которое может выполнить вызывающее приложение.
| Операция | Кто её выполняет |
|---|---|
| Вывод значений и текста | Процедуры вывода Лиспекса |
| Выбор файла исходника и стандартного ввода | Сторона, запускающая CLI |
| Доступ к файлам и сети | Адаптер вызывающего приложения |
| Время и случайность | Приложение передаёт их как явные входные данные |
| Базы данных и транзакции | Приложение управляет состоянием и фиксацией изменений |
| Платежи, развёртывание и другие внешние действия | Приложение применяет свою политику после проверки решения |
Native MCP передаёт исходник, необязательное входное значение и результаты через локальные стандартные потоки ввода и вывода. Он применяет заданные лимиты байтов и времени. Адаптеры приложения передают проверенные данные в правило и используют полученное решение.