diff src/elab_util.sig @ 11:e97c6d335869

Simple elaboration working
author Adam Chlipala <adamc@hcoop.net>
date Fri, 28 Mar 2008 15:20:46 -0400
parents dde5c52e5e5e
children 6049e2193bf2
line wrap: on
line diff
--- a/src/elab_util.sig	Fri Mar 28 13:59:03 2008 -0400
+++ b/src/elab_util.sig	Fri Mar 28 15:20:46 2008 -0400
@@ -34,14 +34,38 @@
 end
 
 structure Con : sig
+    datatype binder =
+             Rel of string * Elab.kind
+           | Named of string * Elab.kind
+
+    val mapfoldB : {kind : (Elab.kind', 'state, 'abort) Search.mapfolder,
+                    con : ('context, Elab.con', 'state, 'abort) Search.mapfolderB,
+                    bind : 'context * binder -> 'context}
+                   -> ('context, Elab.con, 'state, 'abort) Search.mapfolderB
     val mapfold : {kind : (Elab.kind', 'state, 'abort) Search.mapfolder,
                    con : (Elab.con', 'state, 'abort) Search.mapfolder}
                   -> (Elab.con, 'state, 'abort) Search.mapfolder
+
+    val mapB : {kind : Elab.kind' -> Elab.kind',
+                con : 'context -> Elab.con' -> Elab.con',
+                bind : 'context * binder -> 'context}
+               -> 'context -> (Elab.con -> Elab.con)
     val exists : {kind : Elab.kind' -> bool,
                   con : Elab.con' -> bool} -> Elab.con -> bool
 end
 
 structure Exp : sig
+    datatype binder =
+             RelC of string * Elab.kind
+           | NamedC of string * Elab.kind
+           | RelE of string * Elab.con
+           | NamedE of string * Elab.con
+
+    val mapfoldB : {kind : (Elab.kind', 'state, 'abort) Search.mapfolder,
+                    con : ('context, Elab.con', 'state, 'abort) Search.mapfolderB,
+                    exp : ('context, Elab.exp', 'state, 'abort) Search.mapfolderB,
+                    bind : 'context * binder -> 'context}
+                   -> ('context, Elab.exp, 'state, 'abort) Search.mapfolderB
     val mapfold : {kind : (Elab.kind', 'state, 'abort) Search.mapfolder,
                    con : (Elab.con', 'state, 'abort) Search.mapfolder,
                    exp : (Elab.exp', 'state, 'abort) Search.mapfolder}