Песочница

Философия и границы проекта

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

Пять решений, формирующих язык

  1. Детерминизм входит в идентичность языка. Один и тот же ввод всегда даёт один и тот же ответ, и это свойство самого языка, а не привычка одной машины. Порядок вычисления, печать, диагностика и объявленные ресурсные исходы входят в контракт.
  2. Неподдерживаемое поведение отвергается явно. Программа, которая выполняет правило, не ищет глобальные имена среды и не заимствует платформенную библиотеку.
  3. Данные отделены от эффектов. Правило возвращает значение. Файлы, сеть, время, случайность и внешние действия принадлежат явному вызывающему коду.
  4. Представление не создаёт полномочий. Исходник, точное изображение, пакет, квитанция и отчёт отвечают на разные вопросы и не превращаются в разрешение сами.
  5. Свидетельство называет свои границы. Набор проверенных примеров или сравнение бэкендов поддерживает лишь записанные программы-исполнители, входы, наблюдения и пределы.

Компромиссы выбраны намеренно

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

Практический способ чтения

Для любой сильной возможности задайте два вопроса. Какие именно байты она описывает и какая программа их выполнила? И что по-прежнему обязан сделать вызывающий код? Поэтому изображение доказывает точное восстановление, но не происхождение, а проверка допуска Ваучера сообщает одно совпавшее локальное решение, но не разрешает платёж или развёртывание.

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

Лиспекс имеет форму Lisp, но не пытается принимать любую программу Scheme. Исключения из области представляют собой решения о совместимости. Будущий бэкенд реализует профиль, а не переопределяет язык случайным поведением.

Куда дальше

Точная охваченная часть языка описана в «Текущей и отложенной области», а направления, подчинённые этим решениям, изложены в плане развития.

Текущая и отложенная область · План развития