Это предыдущая редакция документации. Актуальные типы данных и примеры описаны в разделе «Данные и составные значения».
Эта страница знакомит с данными на входной S-поверхности Lispex. Lispex выполняется напрямую в эталонном интерпретаторе. Попробуйте Песочницу. Lispex Vouch использует те же конкретные значения, когда связывает входы правил и квитанции выполнения.
Примитивные типы
Базовые значения, встречающиеся в 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)Семейство 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)) ; анонимная функция