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

整数の列挙

enumFromTo.hs

はじめに

列挙-蓄積の枠組みを学んだときに整数の列挙の構文を学んだ。

[m .. n]

mから1ずつふやしてnに達するまでの整数の列挙だ。これは構文糖でありenumFromTo m nに脱糖される。

関数enumFromTo

動作

% ghci
Prelude> [10 .. 15]
[10,11,12,13,14,15]
Prelude> enumFromTo 10 15
[10,11,12,13,14,15]

関数myEnumFromTo

整数(Integer)型の値に対して関数enumFromToと同じように動く関数myEnumFromToを作成する。始めの値と最後の値を引数としてとり始めの値から1ずつふやして最後の値に達するまでのリストを返す。

myEnumFromTo :: Integer -> Integer -> [Integer]

整数値をふたつとり整数のリストを返す。

基底部

基底部としては始点が終点の値よりも大きい場合を考える。結果は空リストだ。

myEnumFromTo m n | m > n = []

再帰部

始点mから終点nまでの値の列挙は始点m + 1から終点nまでの値の列挙の先頭にmを追加したものだ。

myEnumFromTo m n = m : myEnumFromTo (m + 1) n

試してみる

Prelude> :l enumFromTo.hs
*Main> myEnumFromTo 10 15
[10,11,12,13,14,15]

まとめ

[m .. n]は構文糖でありenumFromTo m nということだ。myEnumFromToをその関数自体の返り値に値を追加するというやりかたで作成した。

「逆ポーランド記法電卓とたたみこみ(左)」へもどる 「コラッツ数列」へ

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