LISP me dérange encore une fois ... Pourquoi ne puis-je pas obtenir la valeur du dernier élément d'une liste? J'ai une liste établie semblable à ceci:Voiture LISP du dernier élément?
(setq bar '(((1 2) 3 4 5)((6 7) 8 9 10)))
Maintenant, je reçois un retour de 4 pour:
(caddar bar)
Il y a un retour de (5) pour:
(cdddar bar)
Mais je ne peux pas obtenir un 5 pour:
(cadddar bar)
Pourquoi est-ce - un d comment puis-je obtenir la valeur du 5?
Erreur:
; Warning: This function is undefined:
; CADDDAR
Error in KERNEL:%COERCE-TO-FUNCTION: the function CADDDAR is undefined.
[Condition of type UNDEFINED-FUNCTION]
La réponse était: (voiture (cdddar lst)) .... maintenant pourquoi ça! = Cadddar, je ne comprends pas. – toast
Quelque part au fond des entrailles de votre implémentation LISP sont: (defun cadr (x) ...) (defun cdar (x) ...) (defun caar (x) ...) (defun cddr (x) ...) et ainsi de suite pour toutes les combinaisons de 'a' et 'd' de longueur 1 à 4. La spécification n'inclut pas celles de longueur 5 car il y en a trop. Il n'y a rien de spécial dans la famille de fonctions # 'cdadr. Ils ne sont pas interprétés de manière unique. Ce sont juste des fonctions normales. Vous êtes plus que la bienvenue à (defun ...) de nouveaux pour combler les lacunes. – jtdubs