関数合成
func1::Int -> Int func1 x = x + 1 func2::Int -> Int -> Int func2 x y = x * y func3::Int -> Int -> Int func3 x y = (func1 . func2 x) y
func3 = x * y + 1にしようとしたのだが、思いつくまでにだいぶ時間がかかってしまった。
(func1 . func2) x y
のようにはできない。なぜならfunc2は2引数の関数だから。
http://www.haskell.org/onlinereport/standard-prelude.html#$v.の関数合成の項目の
(.) :: (b -> c) -> (a -> b) -> a -> c
f.gとするとき、fの引数とgの返り値は型があってないといけない。
よって2引数をとるfunc2は1引数のfunc1と合成できず、1引数をとる「func2 x」とfunc1の合成というかたちにしないといけない。
サンプルが少ないので試行錯誤中。