私はLittle Schemerを使っています。すべての回答をCommon Lispに変換しようとしています。 第8章では、匿名関数を返すだけでなく、匿名関数についても説明します。例えば :匿名関数を使用した反復Common Lisp vs. Scheme
(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))))))))
マイコード:
(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))))))
問題は、コードの第2のブロックの最後の行です。私は "consのために引数が多すぎます"というエラーを受け取りますが、Schemeコードのように余分な括弧を追加することはできません。 Common Lispではこのスタイルの再帰はできませんか?