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