2714a0c7aef9408728a08c97752a38341bc1466f
[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) = "(" +++ toString l +++ " " +++ toString r +++ ")"
13 toString (Lambda a e) = "(\\" +++ toString a +++ "." +++ toString e +++ ")"
14 toString (Builtin v as) = "'" +++ toString v +++ "'" +++ join " " (map toString as)
15 toString _ = abort "toString Expression not implemented"
16
17 instance toString Value where
18 toString (Int i) = toString i
19 toString (Bool b) = toString b
20 toString (Func a as _) = "Function arity " +++ toString a +++ " curried " +++ join "," (map toString as)
21
22 instance toString Type where
23 toString (TVar a) = toString a
24 toString TInt = "Int"
25 toString TBool = "Bool"
26 toString (TFun a b) = "(" +++ toString a +++ ") ->" +++ toString b