【发布时间】:2010-11-25 23:48:33
【问题描述】:
我是 lisp 的新手,正在编写一些简单的程序来熟悉它。我正在做的一件事是编写阶乘方法的递归和迭代版本。但是,我遇到了一个问题,似乎无法解决。
我在 Lisp: CHAR is neither declared nor bound 但实际上并没有找到解决方案,除了 OP 意识到他犯了一个“打字错误”。在 REPL 中,我可以使用 setf 函数,它工作正常。我也在使用带有 emacs 的 LispBox。如有任何建议,我将不胜感激!
(defun it-fact(num)
(setf result 1)
(dotimes (i num)
(setf result (* result (+ i 1)))
)
)
IT-FACT 中的警告: RESULT 既没有声明也没有约束, 它将被视为已声明为 SPECIAL。
【问题讨论】:
-
参见cs.cmu.edu/Groups/AI/html/faqs/lang/lisp/part1/faq-doc-4.html,尤其是“GOOD:”示例。无论哪种方式,这里的人都非常友好,但是如果缩进更像典型的 Lisp 代码,您的代码会更容易阅读。干杯!
标签: lisp scope lexical-scope