fun :: A -> B -> C -> D
can be bracketed in a bunch of different ways - fun1 :: (A -> B) -> (C -> D)
fun2 :: A -> (B -> C -> D)
etc. and don't these all mean different things?fun1 would take a function and return a function, whereas fun2 takes an A and returns a curried function of B,C -> D.