top page > computer > haskell > web_lecture > for_programmer > enum_accum.html
更新日:
文責: 重城良国

リストによる「くりかえし」: 列挙と蓄積

0からnまで整数の和

手続き的に

  1. 変数i, sを用意
  2. i, sを0に初期化
  3. sにiを足したものをsに代入
  4. iに1を足したものをiに代入
  5. iがn以下なら3へ、そうでないなら6へ
  6. sを返す

リストで

  1. 0からnまでの整数のリストを作成
  2. リストの要素の総和を返す

比較

手続き的なほうは

リストを使う方法では

実際にやってみる

「0からnまでの整数から成るリストを作成」が「列挙」だ。「要素の総和を求める」が「蓄積」だ。

列挙

[0 .. n]

蓄積

関数sumはリストの総和を返す。

コード

sumN.hs

sumN :: Integer -> Integer
sumN n = sum [0 .. n]

実行

% ghci sumN.hs
*Main> sumN 10
55

まとめ

要素の数え上げが列挙だ。要素をひとつの値にまとめることが蓄積だ。「くりかえし」はリストを使った列挙と蓄積で書ける。リストを使うと手続きではなく構造を表現できる。

課題

  1. 1からnまでの積を求める関数productNを作成せよ

「タプルにおける構文糖」へもどる 「ろ過」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics