0

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

4

1 回答 1

0

将光标放在代码之外,然后单击 Eval And Pretty-Print。这将评估整个代码。

于 2021-02-22T01:36:54.843 回答