equal
deleted
inserted
replaced
33 | get_exn _ = NONE; |
33 | get_exn _ = NONE; |
34 |
34 |
35 fun capture f x = Result (f x) handle e => Exn e; |
35 fun capture f x = Result (f x) handle e => Exn e; |
36 |
36 |
37 fun release (Result y) = y |
37 fun release (Result y) = y |
38 | release (Exn e) = raise e; |
38 | release (Exn e) = reraise e; |
39 |
39 |
40 |
40 |
41 (* interrupt and nested exceptions *) |
41 (* interrupt and nested exceptions *) |
42 |
42 |
43 exception Interrupt = Interrupt; |
43 exception Interrupt = Interrupt; |
56 (case List.concat (map plain_exns results) of |
56 (case List.concat (map plain_exns results) of |
57 [] => raise Interrupt |
57 [] => raise Interrupt |
58 | exns => raise EXCEPTIONS exns); |
58 | exns => raise EXCEPTIONS exns); |
59 |
59 |
60 fun release_first results = release_all results |
60 fun release_first results = release_all results |
61 handle EXCEPTIONS (exn :: _) => raise exn; |
61 handle EXCEPTIONS (exn :: _) => reraise exn; |
62 |
62 |
63 end; |
63 end; |