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