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
。ここで何が起こっているのですか?
より正確には、[Compile/Load file] をクリックし、[Eval And Pretty-Print] をクリックしました。