エラー。
珍しくエラーを吐いたのでメモ。
(defun xn () (let ((tb (make-hash-table))) (dotimes (a 10000 tb) ; (do-events) ;これが必要。 (let* ((p (f)) (n (gethash p tb))) (setf (gethash p tb) (if n (1+ n) 1)))))) (defun f () (let ((p 0)) (dotimes (- 20 p) (if (< 0.4 (random 1.0)) (incf p))))) (progn (compile 'xn) (compile 'f) (xn))
こんな物を書いていて、それほど重い処理でもないのにエラーが起きた。dotimesを入れ子にして用いるときは(do-events)を入れた方が無難なようである。他のプログラムとの兼ね合いもあるのかも知れない。
追記
もう少し余分な物が付け足したら(do-events)を補ってもエラーが起きた。原因は良く分からない。
ログによると
c0000005: Access violation at 00428290 (xyzzy.exe!.text)
とのことだが・・・。