Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
ConstantFolding
let rec ConstantFolding node =
match node with
| Add (l,r) -> match (ConstantFolding(l),ConstantFolding(r)) with
| (Constant v1,Constant v2) -> Constant(v1+v2)
| (optL,optR) -> Add(optL,optR)
| Sub(l,r) -> match (ConstantFolding(l),ConstantFolding(r)) with
| (Constant v1,Constant v2) -> Constant(v1-v2)
| (optL,optR) -> Sub(optL,optR)
| X -> X
| Constant v -> Constant(v)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.