src/Pure/library.ML
changeset 23963 c2ee97a963db
parent 23937 66e1f24d655d
child 24023 6fd65e2e0dba
--- a/src/Pure/library.ML	Tue Jul 24 19:44:33 2007 +0200
+++ b/src/Pure/library.ML	Tue Jul 24 19:44:35 2007 +0200
@@ -32,14 +32,6 @@
   val oooo: ('a -> 'b) * ('c -> 'd -> 'e -> 'f -> 'a) -> 'c -> 'd -> 'e -> 'f -> 'b
   val funpow: int -> ('a -> 'a) -> 'a -> 'a
 
-  (*exceptions*)
-  exception EXCEPTION of exn * string
-  datatype 'a result = Result of 'a | Exn of exn
-  val capture: ('a -> 'b) -> 'a -> 'b result
-  val release: 'a result -> 'a
-  val get_result: 'a result -> 'a option
-  val get_exn: 'a result -> exn option
-
   (*errors*)
   exception SYS_ERROR of string
   val sys_error: string -> 'a
@@ -269,26 +261,6 @@
   | funpow n f x = funpow (n - 1) f (f x);
 
 
-(* exceptions *)
-
-exception EXCEPTION of exn * string;
-
-datatype 'a result =
-  Result of 'a |
-  Exn of exn;
-
-fun capture f x = Result (f x) handle e => Exn e;
-
-fun release (Result y) = y
-  | release (Exn e) = raise e;
-
-fun get_result (Result x) = SOME x
-  | get_result _ = NONE;
-
-fun get_exn (Exn exn) = SOME exn
-  | get_exn _ = NONE;
-
-
 (* errors *)
 
 exception SYS_ERROR of string;
@@ -362,9 +334,9 @@
   let
     val orig_value = ! flag;
     val _ = flag := value;
-    val result = capture f x;
+    val result = Exn.capture f x;
     val _ = flag := orig_value;
-  in release result end;
+  in Exn.release result end;
 
 fun setmp flag value f x = CRITICAL (fn () => setmp_noncritical flag value f x);