DATA Type | Var name : Ident | Internal inter : Internal | Tup tps : Types | List arg : Type | External pos : Pos txt : String DATA Internal | Type name : Ident args : TypeArgs DATA TypeArgs | Subst subst : Subst | Types tps : Types TYPE Subst = MAP {Ident} Type DATA Scheme | Quant vars : Idents inter : Internal TYPE Types = [Type] TYPE MaybeInternal = MAYBE Internal