diff options
author | Tom Smeding <tom@tomsmeding.com> | 2025-05-25 23:35:31 +0200 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2025-05-25 23:35:31 +0200 |
commit | c36849cb6247f957b4e6b093e16d04421c8cea3d (patch) | |
tree | fdcdcec5c598c95c493ede2782a96563a32b4b5f /src/Language/AST.hs | |
parent | b0b562e5000dbcac8b944801e7ab96556855a4ff (diff) |
ERecompute
Diffstat (limited to 'src/Language/AST.hs')
-rw-r--r-- | src/Language/AST.hs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/Language/AST.hs b/src/Language/AST.hs index 8bcb5e5..7e074df 100644 --- a/src/Language/AST.hs +++ b/src/Language/AST.hs @@ -71,6 +71,9 @@ data NExpr env t where -> NExpr env a -> NExpr env b -> NExpr env t + -- fake halfway checkpointing + NERecompute :: NExpr env t -> NExpr env t + -- accumulation effect on monoids NEWith :: SMTy t -> NExpr env t -> Var name (TAccum t) -> NExpr ('(name, TAccum t) : env) a -> NExpr env (TPair a t) NEAccum :: SMTy t -> SAcPrj p t a -> NExpr env (AcIdx p t) -> NExpr env a -> NExpr env (TAccum t) -> NExpr env TNil @@ -215,6 +218,7 @@ fromNamedExpr val = \case (fromNamedExpr (NTop `NPush` nf1 `NPush` nf2) b) (fromNamedExpr (NTop `NPush` nr1 `NPush` nr2) c) (go e1) (go e2) + NERecompute e -> ERecompute ext (go e) NEWith t a n b -> EWith ext t (go a) (lambda val n b) NEAccum t p a b c -> EAccum ext t p (go a) (go b) (go c) |