instance toString Expression where
toString (Lit v) = toString v
toString (Var s) = toString s
- toString (App l r) = "(" +++ toString l +++ " " +++ toString r +++ ")"
- toString (Lambda a e) = "(\\" +++ toString a +++ "." +++ toString e +++ ")"
- toString (Builtin v as) = "'" +++ toString v +++ "'" +++ join " " (map toString as)
+ toString (App l r) = concat ["(", toString l, " ", toString r, ")"]
+ toString (Lambda a e) = concat ["(\\", toString a, ".", toString e, ")"]
+ toString (Builtin v as) = concat ["'", toString v, "'", join " " (map toString as)]
+ toString (Let i a b r) = concat [toString i, " ", join " " (map toString a), " = ", toString b, "\n", toString r]
toString _ = abort "toString Expression not implemented"
instance toString Value where
toString (Int i) = toString i
toString (Bool b) = toString b
- toString (Func a as _) = "Function arity " +++ toString a +++ " curried " +++ join "," (map toString as)
+ toString (Func a as _) = concat ["Function arity ", toString a, " curried ", join "," (map toString as)]
instance toString Type where
toString (TVar a) = toString a
toString TInt = "Int"
toString TBool = "Bool"
- toString (TFun a b) = "(" +++ toString a +++ ") ->" +++ toString b
+ toString (TFun a b) = concat ["(", toString a, ") ->", toString b]