equal
deleted
inserted
replaced
9 datatype 'a result = Result of 'a | Exn of exn |
9 datatype 'a result = Result of 'a | Exn of exn |
10 val get_result: 'a result -> 'a option |
10 val get_result: 'a result -> 'a option |
11 val get_exn: 'a result -> exn option |
11 val get_exn: 'a result -> exn option |
12 val capture: ('a -> 'b) -> 'a -> 'b result |
12 val capture: ('a -> 'b) -> 'a -> 'b result |
13 val release: 'a result -> 'a |
13 val release: 'a result -> 'a |
|
14 val flat_result: 'a result result -> 'a result |
14 val map_result: ('a -> 'b) -> 'a result -> 'b result |
15 val map_result: ('a -> 'b) -> 'a result -> 'b result |
|
16 val maps_result: ('a -> 'b result) -> 'a result -> 'b result |
15 exception Interrupt |
17 exception Interrupt |
16 val interrupt: unit -> 'a |
18 val interrupt: unit -> 'a |
17 val is_interrupt: exn -> bool |
19 val is_interrupt: exn -> bool |
18 val interrupt_exn: 'a result |
20 val interrupt_exn: 'a result |
19 val is_interrupt_exn: 'a result -> bool |
21 val is_interrupt_exn: 'a result -> bool |
43 fun capture f x = Result (f x) handle e => Exn e; |
45 fun capture f x = Result (f x) handle e => Exn e; |
44 |
46 |
45 fun release (Result y) = y |
47 fun release (Result y) = y |
46 | release (Exn e) = reraise e; |
48 | release (Exn e) = reraise e; |
47 |
49 |
|
50 fun flat_result (Result x) = x |
|
51 | flat_result (Exn e) = Exn e; |
|
52 |
48 fun map_result f (Result x) = Result (f x) |
53 fun map_result f (Result x) = Result (f x) |
49 | map_result f (Exn e) = (Exn e); |
54 | map_result f (Exn e) = Exn e; |
|
55 |
|
56 fun maps_result f = flat_result o map_result f; |
50 |
57 |
51 |
58 |
52 (* interrupts *) |
59 (* interrupts *) |
53 |
60 |
54 exception Interrupt = Interrupt; |
61 exception Interrupt = Interrupt; |