blob: 64b7d496acbddb54409e828b889e3b3b1b4a999b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
(* TEST *)
open Effect
open Effect.Deep
type _ t += E : unit t
exception Done
let handle_partial f =
try_with f ()
{ effc = fun (type a) (e : a t) ->
match e with
| E -> Some (fun k -> assert false)
| _ -> None }
let f () x = perform E
let () =
match_with (handle_partial f) ()
{ retc = (fun x -> assert false);
exnc = (function
| Done -> print_string "ok\n"
| e -> raise e);
effc = fun (type a) (e : a t) ->
match e with
| E -> Some (fun (k : (a, _) continuation) -> discontinue k Done)
| _ -> None }
|