diff options
author | Adam Chlipala <adam@chlipala.net> | 2015-12-20 13:41:35 -0500 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2015-12-20 13:41:35 -0500 |
commit | 7bf4f9f063dcdc9fc50ad6ac6143b113535b68f0 (patch) | |
tree | 9e0153c58684ffc14955e809cb884dfe373c6779 /src/elab_util.sml | |
parent | ee1a68c223c13b323121f67e8f135160d521d3fd (diff) |
Unnest properly in presence of kind polymorphism
Diffstat (limited to 'src/elab_util.sml')
-rw-r--r-- | src/elab_util.sml | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/elab_util.sml b/src/elab_util.sml index acc696dd..ed2e82a0 100644 --- a/src/elab_util.sml +++ b/src/elab_util.sml @@ -116,6 +116,12 @@ fun exists f k = S.Return _ => true | S.Continue _ => false +fun foldB {kind, bind} ctx st k = + case mapfoldB {kind = fn ctx => fn k => fn st => S.Continue (k, kind (ctx, k, st)), + bind = bind} ctx k st of + S.Continue (_, st) => st + | S.Return _ => raise Fail "ElabUtil.Kind.foldB: Impossible" + end val mliftConInCon = ref (fn n : int => fn c : con => (raise Fail "You didn't set ElabUtil.mliftConInCon!") : con) |