Wednesday, May 10, 2006

Here is a toy evaluator of integer expressions:
module Main where

data Expr = Const Int | Add Expr Expr | Sub Expr Expr | Mul Expr Expr | Div Expr Expr

main = print (eval (Div (Const 20) (Add (Const 1) (Sub (Const 10) (Const 2)))))

eval :: Expr -> Int
eval (Const k) = k
eval (Add x y) = eval x + eval y
eval (Sub x y) = eval x - eval y
eval (Mul x y) = eval x * eval y
eval (Div x y) = eval x `div` eval y

No comments:

Post a Comment