我正在 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 And Pretty-Print。