функция lisp nth не работает на cons-ячейке - PullRequest
1 голос
/ 04 февраля 2010

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

Ответы [ 2 ]

8 голосов
/ 04 февраля 2010

NTH возвращает автомобиль n-й (0, 1, 2 ...) cons-ячейки.

Так как ваш второй cdr не является cons-ячейкой, получить его из машины - ошибка.

(nthcdr 2 '(1 2 . 3))   returns 3
(last '(1 2 . 3))  returns (2 . 3)

Обычно хорошей идеей является избегать неправильных списков, где CDR какой-либо ячейки не является минусом или NIL.

0 голосов
/ 08 марта 2010

Да.Другой способ сказать это: «не делай этого, тогда».

...