駆け足で読む『プログラミングHaskell』4 関数定義
- 関数は対応付けるもの
- 対応付けは値と値かもしれないし、値と関数かもしれないし、関数と関数かもしれない
- 対応づけは1度とは限らない(x -> y -> z -> wのように3つの対応づけもできる)
- 関数が失敗することなく対応付けするためにHaskellで決まっているルール
- 対応付けの対象(値と関数)は型を持つ
- 関数は引数と返り値とに型定義がある
- 値の対応づけは、全体集合に対して定義する
- 多段階の対応づけの考え方にcurry化がある
- x -> y -> zは2段階の対応づけだが、x -> (y -> z) と考えれば、x を (y -> z)に対応付けるという1段階の対応づけと考えてもよい。xが値で(y -> z)は関数。このように多段階の対応づけのとらえ方を1段階化することをcurry化と言う
- 対応付けの対象(値と関数)は型を持つ
- 関数の型
f :: a -> b
-
- 関数fの引数は型aを、返り値は型bを持つ
- 特定の型を指定する場合
f :: Int -> Bool
-
- などとする
- 多相的な関数の場合は
f :: a -> a
-
- のように任意の型を表すaを使う
- 複数の型で定義したいが、一部のクラスに属する型のみに限定したいときは
f :: Num a => a
-
- のように書く
- 関数の値の対応づけは全体集合
- その他の関数に関すること