Haskellの基礎(2) 型と高階関数
3.1 型と値
今日は型についてです。
これまでちょこちょことHaskellの入門サイトを見てきましたが(そんなに見たわけではないけど)一番分かりやすいです。
これまでであれば
Int -> [a] -> [a]
なんて書かれると、ちょっとんんん〜?となってましたけど、今はそんなことない。
"(Show a) =>"や"IO ()"などは別の章で学習するとのこと。これは楽しみです(結構先ですが)。
3.2 高階関数
関数について
関数も一つの値とのこと。たとえば
cube n = n * n * n
はnを三乗する関数を値と見なし、cubeという変数がその値に束縛されている、という考え。
なるほど、関数を1や"string"などの値と同じものとみなすわけですね。
とすれば、関数も他の値と同じように関数の引数に出来ることにも違和感はないですね。
もともとC言語でも関数ポインタを渡したりしているので、違和感は感じませんでした。
おぉ、また関数の型が出てきた。
map :: (a -> b) -> [a] -> [b]
だいぶ慣れてきたかなぁ。この本読む前だったら、意味が分からなかったと思う。
if式について
if文じゃなくてif式。
文じゃなくて式だから、必ず値を持つ。なるほど。これは重要かも。