さくらんぼのlambda日記

lambdaちっくなことからゲーム開発までいろいろ書きます。

loopマクロについて

loopマクロを今まで真面目に覚えてなかったので
しっかり今回覚えることにする。

;;for文が基本
;; for 変数名 in/on/access リストorベクタ (by アクセス関数)
;; でその集合に順番にアクセスしてくれる。
;; onだと若干特殊なので注意 

;; inの例
(loop for x in '(a b c d e) 
    collect x)
==> (A B C D E)

;; byを使ってみる
CL-USER> (loop for x in '(a b c d e) by #'cddr
	    collect x)
==> (A C E)

;; onの例
(loop for x on '(a b c d e)
	      collect x)
==> ((A B C D E) (B C D E) (C D E) (D E) (E))
||>

次に数字を使ったfor文の例
>|lisp|
;; from 数字 to 数字 by 数字
(loop for i from 10 to 50 by 5 collect i)
==> (10 15 20 25 30 35 40 45 50)

;;repeat N 数字の回数だけ繰り返す。
(loop repeat 10 collect (random 10))
==> (0 8 0 9 5 3 2 9 9 3)

こっちは分かりやすい。
from の部分にはdownfrom/upfrom
toの部分にはto/upto/downto/below/above
という表現もある。

とりあえず今日はここまで。