Как использовать n-ю функцию в lisp, если моя моя переменная представляет собой комбинацию списка и cons-ячейки, например:(setq aa '(1 2) )
(nconc aa (+ 1 2))
это возвращает мне (1 2 . 3)
когда я говорю (nth 1 aa)
, она возвращает 2
но когда я использую (nth 2 aa )
, он выдает ошибку
функция lisp nth не работает на cons-cell
Ответы (2)
NTH возвращает автомобиль n-й (0, 1, 2...) ячейки cons.
Поскольку ваш второй CDR не является минус-ячейкой, получение машины из него является ошибкой.
(nthcdr 2 '(1 2 . 3)) returns 3
(last '(1 2 . 3)) returns (2 . 3)
Обычно рекомендуется избегать неправильных списков, где cdr какой-либо ячейки не является минусом или NIL.
person
Rainer Joswig
schedule
04.02.2010
Ага. Другой способ сказать это: «Тогда не делай этого».
person
offby1
schedule
08.03.2010