В lisp на низком уровне вы можете иметь либо простое значение (число или атом), либо пунктирную пару , либо cons-ячейки . (Давайте игнорировать современные вещи, такие как векторы ...). Вдобавок к этому создаются структуры данных, такие как списки (a b c)
.
alist или ассоциативный список , представляет собой простой список, в котором каждый элемент (a
, b
и т. Д.) Является точечной парой. Например:
((foo . 10) (bar . 20))
Вы можете выполнить поиск по списку, используя assq
или assoc
, возвращается пара. Вы можете применить car
и cdr
, чтобы получить левую или правую часть пары соответственно.
Простой список продуманно построен выше, так что (a b c)
представляется как (a . (b . (c . nil)))
Как правило, не нужно знать это, чтобы понимать alist: s, но иногда может быть сброшен внутренний механизм печати. Конкретно, ((foo . nil) (bar . 20))
обычно печатается как ((foo) (bar . 20))
.