diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2025-10-23 23:50:17 +0200 |
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2025-10-23 23:50:17 +0200 |
| commit | 3698d4d3a309d34dc154a90f9f09b9893bf22013 (patch) | |
| tree | 271cfa91e69aa26c0cc1f220a80f0fbeb044558e /src/AST/Bindings.hs | |
| parent | 3bb0ddec78194ebc1c133f8dcaf1ff83b873d320 (diff) | |
Helper functions bpush and weakenBindingsE
Diffstat (limited to 'src/AST/Bindings.hs')
| -rw-r--r-- | src/AST/Bindings.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/AST/Bindings.hs b/src/AST/Bindings.hs index 2310f4b..463586a 100644 --- a/src/AST/Bindings.hs +++ b/src/AST/Bindings.hs @@ -28,6 +28,10 @@ data Bindings f env binds where deriving instance (forall e t. Show (f e t)) => Show (Bindings f env env') infixl `BPush` +bpush :: Bindings (Expr x) env binds -> Expr x (Append binds env) t -> Bindings (Expr x) env (t : binds) +bpush b e = b `BPush` (typeOf e, e) +infixl `bpush` + mapBindings :: (forall env' t'. f env' t' -> g env' t') -> Bindings f env binds -> Bindings g env binds mapBindings _ BTop = BTop @@ -42,6 +46,11 @@ weakenBindings wf w (BPush b (t, x)) = let (b', w') = weakenBindings wf w b in (BPush b' (t, wf w' x), WCopy w') +weakenBindingsE :: env1 :> env2 + -> Bindings (Expr x) env1 binds + -> (Bindings (Expr x) env2 binds, Append binds env1 :> Append binds env2) +weakenBindingsE = weakenBindings weakenExpr + weakenOver :: SList STy ts -> env :> env' -> Append ts env :> Append ts env' weakenOver SNil w = w weakenOver (SCons _ ts) w = WCopy (weakenOver ts w) |
