1 implementation module exist
9 import Control.Applicative
12 class eval m :: m -> ([(String, Int)] -> Either String Int)
13 class print m :: m -> String
17 eval (Lit i) = const $ pure i
18 eval (Var s) = maybe (Left $ "Undefined variable " +++ s) Right o lookup s
19 eval (a +. b) = \s->liftM2 (+) (eval a s) (eval b s)
24 print (Lit i) = toString i
26 print (a +. b) = print a +++ " + " +++ print b
27 print (Ext e) = print e
29 Start = eval (Lit 5 +. Lit 37) []