すごいHaskell 始めました。

冷やし中華始めました、みたいな感じで。

すごいHaskellたのしく学ぼう! を読んでいる。Haskell の全くの初心者ではないので、はじめの方はそれほど知らないことはないだろうと思っていたけど、そうでもなかった。まだまだ勉強不足ですな。

知らなかったところをメモしておく。

関数のリスト

P.72 の 「map 関数に複数の引数を与える」に書かれている内容で以下のコードがあった。

Prelude> let listOfFuns = map (*) [0..]
Prelude> (listOfFuns !! 4) 5
20

おおっと思った。listOfFuns は 関数のリストだ。今までリストの要素は値(数や文字など)が入るとばかり思っていた。Haskell では関数も第一級のオブジェクトだということを再認識した。

念のため listOfFuns の型を確かめると

Prelude> :t listOfFuns
listOfFuns :: [Integer -> Integer]

確かに関数のリストだ。