toString (a ** b) = toString (Tuple a b)
toString (Lambda` v a) = toString (Lambda v a)
toString (Builtin a) = "builtin"
+
+instance toString Type where
+ toString (TVar a) = toString a
+ toString (TTuple a b) = concat ["(", toString a, ",", toString b, ")"]
+ toString TInt = "Int"
+ toString TBool = "Bool"
+ toString (a --> b) = concat ["(", toString a, " -> ", toString b, ")"]
+
+instance toString TypeDef where
+ toString (TypeDef name args def) = ""