| author | chaieb |
| Tue, 31 Jul 2007 09:31:19 +0200 | |
| changeset 24081 | 84a5a6267d60 |
| parent 23962 | e0358fac0541 |
| child 28444 | 283d5e41953d |
| permissions | -rw-r--r-- |
(* Title: Pure/ML-Systems/exn.ML ID: $Id$ Author: Makarius Runtime exceptions as values. *) structure Exn = struct datatype 'a result = Result of 'a | Exn of exn; fun get_result (Result x) = SOME x | get_result _ = NONE; fun get_exn (Exn exn) = SOME exn | get_exn _ = NONE; fun capture f x = Result (f x) handle e => Exn e; fun release (Result y) = y | release (Exn e) = raise e; exception EXCEPTIONS of exn list * string; end;