implementation module ast import StdEnv import Text instance toString AST where toString (AST f) = join "\n" (map toString f) instance toString Function where toString (Function i a e) = concat [toString i, " ", join " " (map toString a), " = ", toString e] 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 _ = abort "toString Expression not implemented" instance toString Value where toString (Int i) = toString i toString (Bool b) = toString b toString (Char b) = "'" +++ toString b +++ "'" toString (Func a as _) = "Function arity " +++ toString a +++ " curried " +++ join "," (map toString as)