Песочница

Типы данных

Числа, строки, списки, логические значения и другие данные, с которыми вы работаете в Lispex.

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

Эта страница знакомит с данными на входной S-поверхности Lispex. Lispex выполняется напрямую в эталонном интерпретаторе. Попробуйте Песочницу. Lispex Vouch использует те же конкретные значения, когда связывает входы правил и квитанции выполнения.

Примитивные типы

Базовые значения, встречающиеся в Lispex.

Числа (Numbers)

Вводные формы: целые/рациональные/вещественные.

LISPEX
30
19.99
-100
42/7

Логические значения (Booleans)

Истина и ложь записываются как #t и #f.

LISPEX
#t
#f
(and #t #t)       ; ⇒ #t
(or #f #t)        ; ⇒ #t
(not #t)          ; ⇒ #f
(if #t "yes" "no")

Символы‑литеры (Characters)

Односимвольные значения.

LISPEX
#\a
#\space
#\x03B1          ; греческая альфа

Строки (Strings)

Представляют последовательности символов, заключенные в двойные кавычки.

LISPEX
"Lispex Language"
"Hello, Lispex! 👋"
""
"quote: \" \n tab: \t hex: \x41;" ; экранирование

Идентификаторы (Symbols)

Имена как данные (зарезервированные слова связывать нельзя).

LISPEX
'apple
'Σ
'util.string

Типы коллекций (Collection Types)

Списки (Lists)

Упорядоченные коллекции элементов. Создаются через (list ...). Пустой список это (). Точечные списки (dotted lists) как ввод тоже разрешены.

LISPEX
(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)

LISPEX
#(1 2 3)
#("a" "b" "c")

Байтовые векторы (Bytevectors)

Массивы байтов (целые 0–255).

LISPEX
#u8(72 101 108 108 111)

Семейство quote (сокращения ридера)

Удобные формы для построения данных.

LISPEX
'x                ; ⇒ (quote x)
`(a ,x ,@ys b)    ; ⇒ (append (list 'a x) ys (list 'b))

Функции (Functions)

Функции являются объектами первого класса. Определяются анонимно через lambda или с именем через синтаксический сахар define.

LISPEX
(define (add a b) (+ a b))
(add 10 20)
(lambda (n) (+ n 1))  ; анонимная функция