Shammer's Philosophy

My private adversaria

Lisp の dotimes(反復)

dotimes は、C や Java でいうところの for 文に近い。近い、というのは、for 文ではカウンタを 1 ずつ増やさなくてもよいが(たいていそうするけれども)、dotimes は 1 ずつ増える動作になるため。
実際に使ってみる。1 から 1000 までの合計を求める。

(setq sum 0)
0
(dotimes (i 1000 sum) (setq sum (+ sum i)))
499500

dotimes は、(dotimes (変数 整数 値) 式...) という構文になる。整数の箇所は、整数を返す任意の式でもよい。変数というのがカウンタ的な役割の変数。ここには、整数 - 1 までの数が代入されていく。そして、この変数を利用する式が後に続いており、それらの実行結果が「値」にセットされる。