Ячейка CONS представляет собой запись с двумя полями.
Во многих реализациях Лиспа есть специальные оптимизации для cons-ячеек. Типичным является то, что числа fixnum хранятся непосредственно в полях - без указателей. Пока данные помещаются в память, их можно сохранять напрямую. Это может быть, например, также в случае с персонажами. Cons-ячейка с двумя символами также может быть сохранена таким образом, чтобы символы были закодированы в полях.
С другими, более крупными данными есть указатели на эти данные, хранящиеся в ячейке cons.
Затем также обратите внимание на разницу между:
(cons 1 2)
а также
(list 1 2)
(cons 1 2)
создает одну ячейку cons. (list 1 2)
создает две cons-ячейки. Первая cons-ячейка содержит 1 и указатель на вторую. Вторая ячейка cons содержит 2 и NIL (маркер конца списка).
Таким образом, в качестве оптимизации часто в парах ключ/значение используется только ячейка cons, а не список.
((age . 22) (name . "Barbara))
vs.
((age 22) (name "Barbara"))
Последний использует еще две cons-ячейки.
person
Rainer Joswig
schedule
20.07.2011