Эта страница знакомит с данными на входной S‑поверхности Lispex v1. Семантика выполнения и библиотеки вне объёма. Примеры можно сразу пробовать в LENA code: www.lenacode.com
Примитивные типы
Базовые значения, встречающиеся в 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(...) может автоматически заменяться обычным вектором (с предупреждением). См. заметки ниже.
Семейство 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описано черезequal?, но в R5RS‑реализаторах используетсяeqv?. - Поверхностный заголовок модуля
(module ...)отбрасывается/«сплющивается» на верхний уровень.