Hello,

I'm noticed that GADT typechecking depends on whether free variables are annotated as locally abstract types (in form of "type a b c . <typeexpr>") or just polymoprhic annotations (in form of " 'a 'b 'c . <typeexpr> ").

Code here - http://pastebin.com/36ZAjw0J 

What is the difference? I was thinking that both of this are equivalent, isn't it?

Thanks.