summaryrefslogtreecommitdiff
path: root/src/Language/AST.hs
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-05-25 23:35:31 +0200
committerTom Smeding <tom@tomsmeding.com>2025-05-25 23:35:31 +0200
commitc36849cb6247f957b4e6b093e16d04421c8cea3d (patch)
treefdcdcec5c598c95c493ede2782a96563a32b4b5f /src/Language/AST.hs
parentb0b562e5000dbcac8b944801e7ab96556855a4ff (diff)
ERecompute
Diffstat (limited to 'src/Language/AST.hs')
-rw-r--r--src/Language/AST.hs4
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)