diff options
author | Tom Smeding <tom@tomsmeding.com> | 2025-03-01 10:15:42 +0100 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2025-03-01 10:15:42 +0100 |
commit | 65630468ccebeda0b0c37dfb8872e0f4ca2fdeae (patch) | |
tree | 99397ca1da677f4fdf2735c0cc92180e5ba8343a | |
parent | a018bcf4393a4ddac7a76ca86b3409a669e59f48 (diff) |
simplify: Halfway beta-reduce product projections in effectful context
-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) |