On Wed, Nov 13, 2013 at 12:42 PM, Brandon Allbery
On Wed, Nov 13, 2013 at 12:24 PM, Vlatko Basic
wrote: Thanks for explanation. If I understood correctly, 'rigid' refers the requirement, not the type itself.
I think that more intuitive/understandable would be something like
'b' has too rigid type for 'a' ...
Not really, unless you're talking about some notion of "types of types" (which exists, but not in this way). You're still trying to hold onto some notion that `a` is flexible; but the compiler does not care about the kind of flexibility you want. You will need to let go of that "flexible" for Haskell's type system to make sense.
As an example of this, by the way: your function declaration admits only two possible definitions, ignoring nontermination. Both of them ignore `a` entirely, because you can't do *anything* with it. You don't get much more rigid than being unable to use it at all! -- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net