LISP stumpft mich noch einmal ... Warum kann ich nicht den Wert des letzten Elements in einer Liste bekommen? Ich habe eine Liste aufgebaut ähnlich wie diese:LISP Auto des letzten Elements?
(setq bar '(((1 2) 3 4 5)((6 7) 8 9 10)))
Jetzt bekomme ich eine Rendite von 4 für:
(caddar bar)
Es ist eine Rückkehr von (5) für:
(cdddar bar)
Aber ich kann nicht eine 5 bekommen für:
Warum ist das - ein d wie bekomme ich den Wert der 5?
Fehler:
; Warning: This function is undefined:
; CADDDAR
Error in KERNEL:%COERCE-TO-FUNCTION: the function CADDDAR is undefined.
[Condition of type UNDEFINED-FUNCTION]
Die Antwort war: (Auto (cdddar lst)) .... jetzt warum das! = Cadddar, verstehe ich nicht. – toast
Irgendwo tief in den Eingeweiden Ihrer LISP-Implementierung sind: (defun cadr (x) ...) (defun cdar (x) ...) (defun caar (x) ...) (defun cddr (x) ...) usw. für alle Kombinationen von 'a' und 'd' der Länge 1 bis 4. Die Spezifikation enthält nicht diejenigen der Länge 5, da es zu viele sind. Es gibt nichts Besonderes an der # cdadr-Familie von Funktionen. Sie werden nicht auf eindeutig interpretiert geparst. Sie sind nur normale Funktionen. Sie sind herzlich willkommen, einige neue Lücken zu füllen. – jtdubs