EVAL/APPLY: 给 F 的参数太多

EVAL/APPLY: too many arguments given to F

你好,为什么我在使用嵌套列表参数调用函数时得到 *** - EVAL/APPLY: too many arguments given to F。我想不通,因为我传递了一个简单的嵌套列表。

(defun f (L) 
    (cond 
        ((NULL l) nil)
        ((listp (car L)) 
            (append (F(car L))) (F(cdr L) (car (F (car L)))))
        (T (list(car L)))
    )
)

(setq A '((1) 2 3))
(f A)

这种更好的格式应该可以很容易地发现错误:

(defun f (l) 
  (cond ((null l) nil)
        ((listp (car l)) 
         (append (f (car l)))
         (f (cdr l)
            (car (f (car l)))))
        (t (list (car l)))))

如果这没有帮助,请使用 SBCL 编译该函数。它会给你一个非常明确的错误信息。