【问题标题】:EVAL/APPLY: too many arguments given to FEVAL/APPLY:给 F 的参数太多
【发布时间】:2015-06-15 21:43:15
【问题描述】:

您好,为什么我在使用嵌套列表参数的函数调用时得到*** - 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)

【问题讨论】:

  • 您能否改进代码的格式?

标签: lisp common-lisp clisp


【解决方案1】:

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

(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 编译该函数。它会给你一个非常清晰的错误信息。

【讨论】:

  • 谢谢...` (f (cdr l) (car (f (car l)))`
猜你喜欢
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多