> A big gotcha for me was understanding the -> syntax. How can a function that accepts two arguments possibly have a type annotation like this?
connectWords : String -> String -> String
This is one of the most maddening things for me about Haskell-like languages. I can never remember if -> is left or right associative. I mean there is only one way that makes sense: # String -> (String -> String)
But it could also be # (String -> String) -> String
Of course you get used to it after a while, but a nagging feeling remains. I would really prefer a bit of syntactic sugar.