他の言語はcurryingをしないから
(a,b,c) -> d のような関数は適用する前の型より後の型が簡単になる

適用した後の型が複雑になる関数は色々難しい
const :: a -> (b->a)
(.) :: (a->b) -> ((c->a)->(c->b))