Lisp の 繰り返し処理
Lisp にも繰り返し処理があるようだ。
再帰処理が中心だから、繰り返しも再帰で表現するものと思っていたが。
以下のように書く。
(while (< x 100) (setq sum (+ sum x)) (setq x (+ x 1)))
loop というのもある。
(loop (setq sum (+ sum x)) (setq x (+ x 1)) (if (> x 100) (return sum)))
loop を実行すると、応答は返ってくるものの、以下のようなエラーも確認できた。
;Compiler warnings : ; In an anonymous lambda form at position 66: Undeclared free variable X (4 references) ; In an anonymous lambda form at position 76: Undeclared free variable SUM (3 references)
エラーの意味はよくわからないが・・・慣れていけばわかってくるだろう。