Ich arbeite durch den kleinen Schemer und ich versuche, alle Antworten in Common Lisp zu konvertieren. In Kapitel 8 werden anonyme Funktionen besprochen und anonyme Funktionen zurückgegeben. Zum Beispiel:Wiederkehrende mit anonymen Funktionen Common Lisp vs. Schema
(define insertL-f
(lambda (test?)
(lambda (new old l)
(cond
((null? l) (quote()))
((test? (car l) old) (cons new l)))
(else (cons (car l) ((insertL-f test?) new old (cdr l))))))))
Mein Code:
(defun insertL-f (test)
(lambda (new old l)
(cond
((null l) '())
((funcall test (car l) old) (cons new l))
(t (cons (car l) (insertL-f test) new old (cdr l))))))
Das Problem ist die letzte Zeile des zweiten Blocks des Codes. Ich bekomme den Fehler "zu viele Argumente für Nachteile", aber ich kann kein zusätzliches Klammerpaar hinzufügen, wie es der Schema-Code tut. Ist diese Art der Rekursion in Common Lisp nicht möglich?