Advertisement
Guest User

Untitled

a guest
Nov 8th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.58 KB | None | 0 0
  1. let rec simplify e =
  2.     match e with  
  3.     | CstI i -> CstI i
  4.     | Var x -> Var x
  5.  
  6.     | Prim("+",e1, CstI 0 ) -> simplify e1
  7.     | Prim("+",CstI 0, e2) -> simplify  e2
  8.     | Prim("-",e1, CstI 0) -> simplify e1
  9.     | Prim ("*",CstI 0, e2) -> CstI 0
  10.     | Prim ("*",e1, CstI 0) -> CstI 0
  11.  
  12.     | Prim ("*",CstI 1, e2) -> simplify e2
  13.     | Prim ("*",e1, CstI 1) -> simplify e1
  14.  
  15.     | Prim ("-", e1, e2) -> if simplify e1 = simplify e2 then CstI 0 else Prim("-", (simplify e1), (simplify e2))
  16.     | Prim (a, b, c) -> Prim (a, (simplify b), (simplify c))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement