【发布时间】:2019-12-07 06:32:07
【问题描述】:
我将这个函数从一个更大的脚本中分离出来,并通过https://www.jdoodle.com/execute-clisp-online/ 运行它。即使抛出错误,它似乎也遵循 LISP 的规则,除非我遗漏了一些明显的东西。
(defun cannibals-can-eat (state start-state)
(let ((left-bank-missionaries 2)
(left-bank-cannibals 5)
(right-bank-missionaries (- 3 left-bank-missionaries))
(right-bank-cannibals (- 2 left-bank-cannibals)))
(if (or (> left-bank-cannibals left-bank-missionaries)
(> right-bank-cannibals right-bank-missionaries))
t
nil)))
错误有时是The variable LEFT-BANK-MISSIONARIES is unbound.unmatched close parenthesis 或syntax error near unexpected token('`。在这个版本的函数中,错误是后者。
【问题讨论】:
-
我唯一能想到的是
let函数不会让你使用你声明的变量来声明另一个变量,即使它是后续的。 -
你可能想阅读
letvslet*。
标签: syntax-error lisp common-lisp clisp