常见的lisp错误... *** - SYSTEM ::%EXPAND-FORM :(< J N)应该是lambda表达式

时间:2016-04-11 15:09:36

标签: lambda common-lisp

*** - 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))

我改变了一个小时的东西,我无法弄清楚我可以修复的地方。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

很难找到任何与您的代码没有错误的内容:

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

  • 不要将多个语句填充到一行中,并使用不同的缩进宽度来标记嵌套条件。难怪你无法用这种残酷的格式来识别问题。