関数定義を読む、関数を定義して作る
- 関数は、型を持つ。通常の関数は、引数を取って値を返すので、引数の型から返り値の型へ、という型の定義を持つ
- 関数は、型定義の他に、どのような処理をするかの定義も持つ
- 関数は、上記の2つの定義からなる
recip :: Fractional a => a -> a recip n = 1/n
- 上記は逆数を取る関数 recipの定義である
- 1行目が型定義:「aをFractionaとして、aを取ってaを返す」
- 2行目が処理定義:「型aであるnがあったとして、"recip n"と書けば、"1/n"のことである」
- を使って関数を作る・定義することもできる
\lambda x -> 2 * x + 1
- これを使うと
odds :: Int -> [Int] odds n = map (\lambda x -> 2 * x + 1) [0..n-1]
- と書ける。oddsはIntをIntのリストにする関数で、"odds n"とInt型のnを引数として使うと、0始まりのn個の整数のリストのそれぞれの要素にとして定義される関数を適用して、その返り値のリストを返す、となる