On 2013-11-14 10:33, Vlatko Basic wrote:
Can you recommend any resources that helped you in better understanding?
I generally find it easier to think in terms of type functions: a type function is a function that takes a type and returns a type, written perhaps Λa → E (where a is a type, and bound in E). The type of a Haskell function with a type variable a is a type function whose parameter just happens to be automatically filled in by the type checker at the call site: id ∷ Λa → a → a id _ x = x That makes it quite clear (to me, at least) where the type gets passed in. It's also pretty similar to a Java generic, which just has slightly different syntax for the type parameter: <A> A id(A x) { return x; } In Java, you'd call that function (if I remember my Java syntax correctly) like <Integer>id(3); the Haskell-with-type-functions version looks the same, except perhaps without the pointy brackets: id Integer 0 where id Integer ∷ Integer → Integer id Char ∷ Char → Char id (Either Char Bool) ∷ Either Char Bool → Either Char Bool et cetera. HTH, — Twey