функция lisp nth не работает на cons-cell

Как использовать n-ю функцию в lisp, если моя моя переменная представляет собой комбинацию списка и cons-ячейки, например:
(setq aa '(1 2) )
(nconc aa (+ 1 2))
это возвращает мне (1 2 . 3)
когда я говорю (nth 1 aa), она возвращает 2
но когда я использую (nth 2 aa ), он выдает ошибку


person ramkumar    schedule 04.02.2010    source источник


Ответы (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