loop の使い方についての短いまとめ。

詳細は素晴らしくまとまっている http://smpl.seesaa.net/article/29800843.html loop マクロ用法抄を参照のこと。

  • C; for int i=0;i
  (loop for i from 0 to n ...)
  • Perl; foreach my $x (@lst) { ... } 型 ;; "コレクション内繰り返し"
  (loop for x in lst ...)
  • 何かを集める場合 ;; "集約"
  (loop ... collect ...)
  • C; for (int i=0;i
  (loop for x in lst and i from 0 ...)
  • 数列の生成; 等差数列:
  (loop repeat 10 for n1 = 1 then (+ 3 n1) collect n1)
  (loop repeat 10 for x = 1 then y and y = 1 then (+ x y) collect x)
  • トリボナッチ数列:
  (loop repeat 10
    for n1 = 1 then n2 and n2 = 1 then n3 and n3 = 2 then (+ n1 n2 n3)
    collect n1)

以下「数学ガール」より。

  • ハーモニックナンバー
(loop repeat 10 for n from 1 sum (/ 1 n))
;; => 2436559/720720
;; float を使うと少数にできる
  • 2^n の和は n を大きくしても 1 を超えない
(loop repeat 10 for n from 1 sum (/ 1 (expt 2 n)))