12 eval (Plus x y) = eval x + eval y
13 eval (Div x y) = eval x / eval y
15 //Start = eval (Plus (Lit 41) (Lit 1))
17 import Control.Applicative
22 evalM :: DSL -> Maybe Int
23 evalM (Lit i) = pure i
24 evalM (Plus x y) = (+) <$> evalM x <*> evalM y
25 evalM (Div x y) = evalM x >>= \x->evalM y >>= \y->case y of
29 Start = evalM (Plus (Lit 41) (Lit 1))