Вопрос

Лискус пни мне еще раз ... почему я не могу получить ценность последнего элемента в списке? У меня есть список, подобное этому:

(setq bar '(((1 2) 3 4 5)((6 7) 8 9 10)))

Теперь я получаю возвращение 4 для:

(caddar bar)

Есть возвращение (5) для:

(cdddar bar)

Но я не могу получить 5 для:

(cadddar bar)

Почему это - и как я могу получить ценность 5?

Ошибка:

; Warning: This function is undefined:
;   CADDDAR

Error in KERNEL:%COERCE-TO-FUNCTION:  the function CADDDAR is undefined.
[Condition of type UNDEFINED-FUNCTION]
Это было полезно?

Решение

Функции с 5 или более A's и d не определены. Только 4 и меньше. Существует слишком много возможных функций этой длины, чтобы она была практичной.

Вы должны просто прописать это:(car (cdr (cdr (cdr (cdr (car x))))))

Другие советы

Ну, на сообщение об ошибке, нет cadddar функция. Имейте в виду, что car а также cdr являются примитивными функциями чтения списка. Другие нравятся caddar являются удобными функциями, которые построены из комбинации одного или нескольких car а также cdr. Отказ То есть вы могли бы выполнить манипуляцию списка просто отлично только с car а также cdr если caddar И т. Д. Не существовали, расширенные функции просто облегчают вашу жизнь.

Итак, способ подойти к этому, чтобы синтезировать свои собственные cadddar с использованием car а также cdr. Отказ Если это не сразу очевидно, как это сделать, начните более простое (с, скажем, cadr или cdar) и построить до cadddar.

(first (last (first '(((1 2) 3 4 5) ((6 7) 8 9 10)))))

-> 5

Функции с более чем 4 aпесок dS не определяется стандартом, может быть, потому что есть 32 из них [и он получает экспоненциально Месье ».

Обязательный способ получить последний элемент списка: last Возвращает последнюю минусу ячейки, так

(car (last list))

дает вам последний элемент списка. Конечно, list может быть что-то еще, как (first list).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top