【问题标题】:common lisp error ...*** - SYSTEM::%EXPAND-FORM: (< J N) should be a lambda expression常见的 lisp 错误 ...*** - SYSTEM::%EXPAND-FORM: (< J N) 应该是 lambda 表达式
【发布时间】:2016-04-11 15:09:35
【问题描述】:
*** - SYSTEM::%EXPAND-FORM: (< J N) should be a lambda expression

这是发生的代码:

(defun SORTALIST (x) (setq i 0) (setq j (+ i 1))
   (cond ((< i n)) (cond ((< j n))
   (cond ((> (car (nth (i) (x)))(car (nth (j) (x)))))
   (EXCHANGE (nth (i)(x))(nth (j)(x)))
   (setq j (+ j 1)) (SORTALIST (x)))
   (t (setq j (+ j 1)) (SORTALIST (x))))
   (t (setq i (+ i 1)) (setq j (+ i 1)) (SORTALIST (x)))) (x))

我改变了一个小时左右,我不知道我可以解决哪里。 我该如何解决这个问题?

【问题讨论】:

    标签: lambda common-lisp


    【解决方案1】:

    很难找到你的代码没有错的地方:

    • 您不能使用局部变量在递归调用之间传递值。 ij 需要改为函数参数。 (另外,setq 不是引入新局部变量的正确方法。使用let。)

    • 不要将多条语句塞进一行,并使用不同的缩进宽度来标记嵌套条件。难怪你无法识别出如此糟糕的格式的问题。

    【讨论】:

    • 谢谢。我会改变你所说的每一件事。
    猜你喜欢
    • 2011-02-04
    • 2014-07-07
    • 2013-12-08
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    相关资源
    最近更新 更多