diff options
Diffstat (limited to 'src/Simplify.hs')
-rw-r--r-- | src/Simplify.hs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Simplify.hs b/src/Simplify.hs index 673b58c..fb858e7 100644 --- a/src/Simplify.hs +++ b/src/Simplify.hs @@ -60,8 +60,12 @@ simplify' = \case weakenExpr (WCopy WSink) (snd (simplify' b)) -- beta rules for products - EFst _ (EPair _ e e') | not (hasAdds e') -> acted $ simplify' e - ESnd _ (EPair _ e' e) | not (hasAdds e') -> acted $ simplify' e + EFst _ (EPair _ e e') + | not (hasAdds e') -> acted $ simplify' e + | otherwise -> acted $ simplify' $ ELet ext e' (weakenExpr WSink e) + ESnd _ (EPair _ e' e) + | not (hasAdds e') -> acted $ simplify' e + | otherwise -> acted $ simplify' $ ELet ext e' (weakenExpr WSink e) -- beta rules for coproducts ECase _ (EInl _ _ e) rhs _ -> acted $ simplify' (ELet ext e rhs) |