Песочница

Lispex

Lispex дистиллирует суть Лиспа в цельный закрытый язык. Один и тот же эталонный интерпретатор выполняет его в браузере и в CLI.

Это предыдущая редакция документации. Актуальное знакомство с языком и уроки доступны на страницах «Введение» и «Путь обучения».

Добро пожаловать в Lispex, Лисп, созданный ради ясности и удовольствия писать код.

Lispex по-новому прочитывает мощь и простоту Лиспа. Он сохраняет ключевую идею «код и есть данные» и убирает механику, которая обычно нарастает вокруг неё. Грамматика регулярна и последовательна, и со временем перестаёт замечаться.

Выполняется Lispex напрямую. Код работает прямо в браузере без установки. Попробуйте в Песочнице.

Один язык, одна грамматика

Lispex отбрасывает специальный синтаксис и держится одного принципа. Всё записывается в скобках (). Арифметика, определения функций, условия и списки данных принимают одну и ту же форму S-выражения.

Единая грамматика означает, что сам код становится данными с видимой структурой. Читать и анализировать код проще, а программы могут порождать другие программы и работать с ними. Старая идея Лиспа, код и есть данные, здесь взята в самом простом виде.

Что такое Lispex?

Имя Lispex сокращает Lisp Expression. Смысл прямой: программы записываются как выражения Лиспа, и эти выражения остаются удобными для чтения как данные.

Значения, вызовы, условия, определения и цитируемые данные имеют одну форму S-выражений.

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

Попробуйте Lispex

Посмотрите, как грамматика работает на полном примере. Код ниже отфильтровывает чётные числа из списка и умножает каждое на 10. Lispex выполняется прямо в браузере, так что пример можно вставить в Песочницу и запустить.

LISPEX
;; Весь код состоит из основных форм и функций стандартной библиотеки.

(define numbers '(1 2 3 4 5 6))

;; Отфильтровать чётные числа.
(define evens 
  (filter (lambda (n) (= (modulo n 2) 0)) 
          numbers))

;; Умножить каждое чётное число на 10.
(map (lambda (n) (* n 10)) evens)

;; ⇒ (list 20 40 60)

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

Ключевые преимущества

  • Выполняется напрямую. Код целиком работает в браузере. Пишете код в Песочнице и сразу видите результат, без установки.
  • Предсказуемое ядро. Основные формы и детерминированные правила преобразования делают программы лёгкими в изучении и предсказуемыми.
  • Обновлённый путь рантайма v1.4. Песочница, npm CLI и нативный интерпретатор теперь разделяют расширенную проверенную поверхность для множественных значений, apply, modulo и форматирования строк.
  • Единое S-выражение. Код и данные разделяют одну структуру, поэтому анализ, преобразование и генерация кода остаются простыми.
  • Практичная стандартная библиотека. Чистое ядро языка отделено от явных модулей ввода-вывода и системных функций, так что ядро остаётся стабильным, а библиотека практичной.

Следующие шаги

Готовы начать путешествие с Lispex?

  • Запустите код прямо сейчас в Песочнице. Эталонный интерпретатор выполняет Lispex в браузере, без установки.
  • Начните с руководства «Начало работы», чтобы настроить окружение и запустить свою первую программу.
  • Изучите «Синтаксис», где описаны токены, литералы, основные и производные формы и правила нормализации входной грамматики.
  • Прочитайте про Ваучер Лиспекса, поток квитанций для решающих правил фиксированного проверяемого профиля, начавшийся в v1.3.
  • Исследовательский трек смотрите на Core Semantic Kernel.

Мы с нетерпением ждём, что вы создадите на Lispex.