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 . ") or just polymoprhic annotations (in form of " 'a 'b 'c . "). Code here -  http://pastebin.com/36ZAjw0J   What is the difference? I was thinking that both of this are equivalent, isn't it? Thanks.