summaryrefslogtreecommitdiff
path: root/src/Inky/Binding.idr
diff options
context:
space:
mode:
authorGreg Brown <greg.brown01@ed.ac.uk>2024-08-06 12:14:10 +0100
committerGreg Brown <greg.brown01@ed.ac.uk>2024-08-06 12:14:10 +0100
commit942249a4aab941419c1519ab0e2990a727bf7778 (patch)
treee56d12bfe268c242cad9b46199af35b28710e4a7 /src/Inky/Binding.idr
parentdf84bb5c89773d380ec72b81a46d4776cff38534 (diff)
Define traversal kits.
Diffstat (limited to 'src/Inky/Binding.idr')
-rw-r--r--src/Inky/Binding.idr14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Inky/Binding.idr b/src/Inky/Binding.idr
index 7562f27..4d8260a 100644
--- a/src/Inky/Binding.idr
+++ b/src/Inky/Binding.idr
@@ -71,16 +71,16 @@ BS = S
-- Binders to names ------------------------------------------------------------
export
-name : forall w. (b : Binder) -> Name (w :< b)
-name b = Element b ((snocSem w b b).rightToLeft (Left Refl))
+nameOf : forall w. (b : Binder) -> Name (w :< b)
+nameOf b = Element b ((snocSem w b b).rightToLeft (Left Refl))
export
binder : Name w -> Binder
binder = fst
export
-binderName : binder {w = w :< b} (name {w} b) = b
-binderName = Refl
+binderNameOf : binder {w = w :< b} (nameOf {w} b) = b
+binderNameOf = Refl
-- Empty world -----------------------------------------------------------------
@@ -115,6 +115,10 @@ strip (Element n member) =
id $
(snocSem w b n).leftToRight member))
+public export
+stripWith : {b : Binder} -> Lazy a -> Lazy (Name w -> a) -> Name (w :< b) -> a
+stripWith x f = maybe x f . strip
+
-- Freshness -------------------------------------------------------------------
export
@@ -135,7 +139,7 @@ soRecomputable : (0 s : So b) -> So b
soRecomputable Oh = Oh
export
-sucFresh : b `FreshIn` w -> S b `FreshIn` w :< b
+sucFresh : b `FreshIn` w -> BS b `FreshIn` w :< b
sucFresh prf = soRecomputable (snocLength w b prf)
-- World inclusion -------------------------------------------------------------