Skip to content
Snippets Groups Projects
Expr.hs 363 B
Newer Older
Martin Ring's avatar
Martin Ring committed
module Expr where

data Expr = Var String
          | Num Double
          | Plus Expr Expr
          | Minus Expr Expr
          | Times Expr Expr
          | Div Expr Expr
          deriving (Eq, Show)
	  
evalM :: Monad m=> (String-> m a) -> (a-> a-> m a)-> Expr-> m a
evalM f p (Var i) = f i
evalM f p (Plus a b) = do x<- evalM f p a; y <- evalM f p b; p x y