Пять решений, формирующих язык
- Детерминизм входит в идентичность языка. Порядок вычисления, печать, диагностика и объявленные ресурсные исходы — часть контракта, а не случайное свойство одной машины.
- Неподдерживаемое поведение отвергается явно. Вычислитель не ищет глобальные имена среды и не заимствует платформенную библиотеку.
- Данные отделены от эффектов. Правило возвращает значение. Файлы, сеть, время, случайность и внешние действия принадлежат явному вызывающему коду.
- Представление не создаёт полномочий. Исходник, точное изображение, bundle, квитанция и отчёт отвечают на разные вопросы и не превращаются в разрешение сами.
- Свидетельство называет знаменатель. Корпус или сравнение бэкендов поддерживает лишь записанные исполнители, входы, наблюдения и пределы.
Компромиссы выбраны намеренно
| Выбор Лиспекса | Что получаем | От чего отказываемся |
|---|---|---|
| один закреплённый семантический профиль | повторяемые результаты и проверяемые отказы | неописанное поведение среды |
| компактный набор значений и процедур | язык, который можно охватить картой и тестами | широкую совместимость со Scheme |
| явная граница с хостом | переносимые и аудируемые правила | удобные неявные I/O и глобальные имена |
| точная идентичность исходника | побайтовую проверку и перенос | автоматическую нормализацию пробелов и кодировки |
| ограниченные квитанции и Vouch | проверяемые утверждения с ясными точками отказа | универсальное доказательство или переносимое разрешение |
Практический способ чтения
Для любой сильной возможности задайте два вопроса: «Какие точные байты и исполнитель описаны?» и «Что по-прежнему обязан сделать вызывающий код?». Поэтому изображение доказывает точное восстановление, но не происхождение, а gate Vouch сообщает одно совпавшее локальное решение, но не разрешает платёж или развёртывание.
Текущая граница
Лиспекс имеет форму Lisp, но не пытается принимать любую программу Scheme. Исключения из области — решения о совместимости. Будущий бэкенд реализует профиль, а не переопределяет язык случайным поведением.
Куда дальше
Точная включённая поверхность описана в «Текущей области», а направления, подчинённые этим решениям, — в плане развития.