问题描述
我正在 Portacle 中使用 SLIME 学习 Common Lisp。我的问题是当我评估相同的代码时会出现不同的错误。这段代码试图找出 2000000 以下的所有质数之和。
(defparameter *n* 2000000)
(let ((sum 0) (primes (loop for i from 0 to (1- *n*) collecting t)))
(do ((i 2 (1+ i)))
((>= i *n*))
(if (elt primes i)
(progn
(setf sum (+ sum i))
(do ((mul (+ i i) (+ mul i)))
((>= mul *n*))
(setf (elt primes mul) nil)))))
(format t "Sum:~d" sum))
就在之前,它说变量 I
未绑定,然后它说变量 MUL
是,现在它告诉我 PRIMES
是。这里发生了什么?
更准确地说,我所做的是单击编译/加载文件 > 单击 Eval 和 Pretty-Print。
解决方法
将光标放在代码之外,然后单击 Eval 和 Pretty-Print。这将评估整个代码。