toString (Var s) = toString s
toString (App l r) = concat ["(", toString l, " ", toString r, ")"]
toString (Lambda a e) = concat ["(\\", toString a, ". ", toString e, ")"]
- toString (Tuple a b) = concat ["(", toString a, ", ", toString b, ")"]
toString (Let ns r) = concat
[ "let ", concat [concat ["\t", toString n, " = ", toString v, "\n"]\\(n, v)<-ns]
, "in\n", toString r]
instance toString Value where
toString (Int i) = toString i
toString (Bool b) = toString b
- 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 (TApp a b) = concat ["(", toString a, " ", toString b, ")"]
toString (a --> b) = concat ["(", toString a, " -> ", toString b, ")"]
instance toString TypeDef where
- toString (TypeDef name args def) = ""
+ toString (TypeDef name args def) = join " " ["::",toString name:map toString args]
+ +++ " = " +++ join " | " [join " " [toString c:map toString d]\\(c, d)<-def]