From 3ad616e1188527cfd92bf322d5884fa633d40208 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 6 Jun 2009 14:09:30 -0400 Subject: List library additions; fix another substructure unification bug --- src/elab_util.sml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/elab_util.sml') diff --git a/src/elab_util.sml b/src/elab_util.sml index 8082cb1e..e7985026 100644 --- a/src/elab_util.sml +++ b/src/elab_util.sml @@ -280,6 +280,13 @@ fun foldB {kind, con, bind} ctx st c = S.Continue (_, st) => st | S.Return _ => raise Fail "ElabUtil.Con.foldB: Impossible" +fun fold {kind, con} st c = + case mapfoldB {kind = fn () => fn k => fn st => S.Continue (k, kind (k, st)), + con = fn () => fn c => fn st => S.Continue (c, con (c, st)), + bind = fn ((), _) => ()} () c st of + S.Continue (_, st) => st + | S.Return _ => raise Fail "ElabUtil.Con.fold: Impossible" + end structure Exp = struct -- cgit v1.2.3