Песочница

Ввод-вывод, модули, возможности и явные эффекты

Чистый исполняемый профиль не допускает эффекты среды в обычное вычисление и оставляет в эталонной среде только закреплённое поведение вывода.

Когда это нужно

Здесь проходит граница между детерминированным гостевым вычислением и эффектами среды. Для явного текста используйте встроенный вывод; файлы, сеть, время, случайность и внешние действия оставляйте вызывающему приложению.

Проверьте запуском

LISPEX
(begin (display "answer=") (write 42) (newline) 0)

Наблюдаемый результат

OUTPUT
answer=42
0

Разбор примера

display выводит содержимое строки, write — каноническую гостевую запись 42, а newline добавляет перевод строки. println в точности равен display с последующим переводом строки. Последний 0 является результатом программы, который печатает CLI, поэтому он следует после явного вывода.

Как рассуждать

  • display печатает строки без кавычек и символы как глифы; write использует повторно читаемые кавычки, экранирование и запись символов.
  • Все четыре процедуры возвращают ноль значений. Явный вывод и автопечать CLI делят один порядок stdout, а квитанция отдельно хранит значения завершённых корневых форм.
  • Уже записанный вывод сохраняется, если следующая форма завершается ошибкой.
  • Выбор файла/stdin и метки источника в CLI относятся к вызову, а не к новым связываниям языка.
  • Внешние возможности должны быть явными и версионированными, а не находиться через запасной поиск глобальных имён среды.

Быстрый выбор

ОперацияДоступна внутри Лиспекса?Альтернатива
каноническая печать значенияда: writeкогда важна повторно читаемая запись
текст для человекада: display, newline, printlnпорядок детерминирован
файл или сетьнетвыполнить на явной границе вызова
часы или случайностьнетпередать выбранное значение во входе
внешнее действие по решениюнетразрешить и выполнить в коде потребителя

Частая ошибка

Порты, файловая система, сеть, время, случайность и неограниченное вычисление среды не входят в текущий чистый профиль.

Текущие границы

  • Буфер вывода ограничен. За этими процедурами нет фоновых портов, файлов или сетевых дескрипторов.
  • Выпуск целевого языка не является режимом выполнения Lispex.

Куда дальше

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

Выбор среды выполнения · Решающие правила