Эта страница знакомит с данными на входной S‑поверхности Lispex v1.1. Lispex выполняется напрямую в эталонном интерпретаторе — попробуйте Песочницу — а также транспилируется через Lena Code: www.lenacode.com/code/
Примитивные типы
Базовые значения, встречающиеся в Lispex.
Числа (Numbers)
Вводные формы: целые/рациональные/вещественные.
30
19.99
-100
42/7Логические значения (Booleans)
Истина/ложь — #t и #f.
#t
#f
(and #t #t) ; ⇒ #t
(or #f #t) ; ⇒ #t
(not #t) ; ⇒ #f
(if #t "yes" "no")Символы‑литеры (Characters)
Односимвольные значения.
#\a
#\space
#\x03B1 ; греческая альфаСтроки (Strings)
Представляют последовательности символов, заключенные в двойные кавычки.
"Lispex Language"
"Hello, Lispex! 👋"
""
"quote: \" \n tab: \t hex: \x41;" ; экранированиеИдентификаторы (Symbols)
Имена как данные (зарезервированные слова связывать нельзя).
'apple
'Σ
'util.stringТипы коллекций (Collection Types)
Списки (Lists)
Упорядоченные коллекции элементов. Создаются через (list ...). Пустой список — (). Точечные списки (dotted lists) как ввод тоже разрешены.
(list)
(list 1 2 3 4 5)
(list "hello" "world" "lispex")
(list 1 (list 2 3) 4)
(1 2 3 . 4) ; точечный список (вводная форма)Распространённые операции находятся в стандартной библиотеке (first/rest/length, append, map/filter и т. п.).
Векторы (Vectors)
#(1 2 3)
#("a" "b" "c")Байтовые векторы (Bytevectors)
Массивы байтов (целые 0–255).
#u8(72 101 108 108 111)В режиме R5RS‑compat спецификация заменяет #u8(...) обычным вектором (спец‑код W310, не выдаётся в v1). См. заметки ниже.
Семейство quote (сокращения ридера)
Удобные формы для построения данных.
'x ; ⇒ (quote x)
`(a ,x ,@ys b) ; ⇒ (append (list 'a x) ys (list 'b))Функции (Functions)
Функции — объекты первого класса. Определяются анонимно через lambda или с именем через синтаксический сахар define.
(define (add a b) (+ a b))
(add 10 20)
(lambda (n) (+ n 1)) ; анонимная функцияЗаметки по R5RS‑compat
Включите переключатель вверху файла:
;! compat: r5rs- Байтовые векторы
#u8(...)могут быть заменены обычными векторами. - Сравнение в
caseиспользуетeqv?(R7RS) в обоих режимах — по умолчанию и в R5RS‑compat. - Поверхностный заголовок модуля
(module ...)отбрасывается/«сплющивается» на верхний уровень.