compiler bug
[minfp.git] / ast.icl
1 implementation module ast
2
3 import StdEnv
4 import Text
5
6 instance toString Function where
7 toString (Function i a e) = concat [toString i, " ", join " " (map toString a), " = ", toString e]
8
9 instance toString Expression where
10 toString (Lit v) = toString v
11 toString (Var s) = toString s
12 toString (App l r) = concat ["(", toString l, " ", toString r, ")"]
13 toString (Lambda a e) = concat ["(\\", toString a, ".", toString e, ")"]
14 toString (Builtin v as) = concat ["'", toString v, "'", join " " (map toString as)]
15 toString (Let i b r) = concat [toString i, " = ", toString b, "\n", toString r]
16 toString _ = abort "toString Expression not implemented"
17
18 instance toString Value where
19 toString (Int i) = toString i
20 toString (Bool b) = toString b
21 toString (Func a as _) = concat ["Function arity ", toString a, " curried ", join "," (map toString as)]