summaryrefslogtreecommitdiff
path: root/src/Simplify.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Simplify.hs')
-rw-r--r--src/Simplify.hs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/Simplify.hs b/src/Simplify.hs
index 1640729..3ac68ed 100644
--- a/src/Simplify.hs
+++ b/src/Simplify.hs
@@ -68,6 +68,8 @@ simplify' = \case
-- TODO: constant folding for operations
+ -- TODO: accum of zero, plus of zero
+
EVar _ t i -> EVar ext t i
ELet _ a b -> ELet ext (simplify' a) (simplify' b)
EPair _ a b -> EPair ext (simplify' a) (simplify' b)
@@ -92,6 +94,8 @@ simplify' = \case
EOp _ op e -> EOp ext op (simplify' e)
EWith e1 e2 -> EWith (simplify' e1) (let ?accumInScope = True in simplify' e2)
EAccum i e1 e2 e3 -> EAccum i (simplify' e1) (simplify' e2) (simplify' e3)
+ EZero t -> EZero t
+ EPlus t a b -> EPlus t (simplify' a) (simplify' b)
EError t s -> EError t s
cheapExpr :: Expr x env t -> Bool
@@ -129,6 +133,8 @@ hasAdds = \case
EOp _ _ e -> hasAdds e
EWith a b -> hasAdds a || hasAdds b
EAccum _ _ _ _ -> True
+ EZero _ -> False
+ EPlus _ a b -> hasAdds a || hasAdds b
EError _ _ -> False
checkAccumInScope :: SList STy env -> Bool