diff --git a/examples/simplify-redundant.tess b/examples/simplify-redundant.tess new file mode 100644 index 0000000..3197927 --- /dev/null +++ b/examples/simplify-redundant.tess @@ -0,0 +1,12 @@ +data Expr = Lit Int | Add Expr Expr | Mul Expr Expr | Neg Expr + +match simplify (e : Expr) : Expr = + | Add (Lit 0) x -> x + | Add x (Lit 0) -> x + | Mul (Lit 0) x -> Lit 0 + | Mul x (Lit 0) -> Lit 0 + | Mul (Lit 0) (Lit 1) -> Lit 0 + | Mul (Lit 1) x -> x + | Mul x (Lit 1) -> x + | Neg (Neg x) -> x + | e -> e diff --git a/examples/simplify.tess b/examples/simplify.tess new file mode 100644 index 0000000..da1a4be --- /dev/null +++ b/examples/simplify.tess @@ -0,0 +1,11 @@ +data Expr = Lit Int | Add Expr Expr | Mul Expr Expr | Neg Expr + +match simplify (e : Expr) : Expr = + | Add (Lit 0) x -> x + | Add x (Lit 0) -> x + | Mul (Lit 0) x -> Lit 0 + | Mul x (Lit 0) -> Lit 0 + | Mul (Lit 1) x -> x + | Mul x (Lit 1) -> x + | Neg (Neg x) -> x + | e -> e