end
+local
+ val pr = ref (fn () => ())
+in
+
+fun registerPreTycheck f =
+ let
+ val old = !pr
+ in
+ pr := (fn () => (old (); f ()))
+ end
+fun preTycheck () = !pr ()
+
+end
+
fun badArgs (name, args) =
(print ("Invalid arguments to " ^ name ^ "\n");
app (fn arg => Print.preface ("Argument: ", Print.p_exp arg)) args;
fun string (EString s, _) = SOME s
| string _ = NONE
+fun bool (EVar "false", _) = SOME false
+ | bool (EVar "true", _) = SOME true
+ | bool _ = NONE
+
fun mapFail f [] = SOME []
| mapFail f (h :: t) =
case f h of