@@ -32,47 +32,41 @@ type internal<'a> = {
32
32
/* its type is ['a] or [unit -> 'a ] */
33
33
}
34
34
35
- %% private ( external fnToVal : (unit => 'a ) => 'a = "%identity" )
36
- %% private ( external valToFn : 'a => unit => 'a = "%identity" )
37
- %% private ( external castToConcrete : t <'a > => internal <'a > = "%identity" )
38
- %% private ( external castFromConcrete : internal <'a > => t <'a > = "%identity" )
35
+ external fnToVal : (unit => 'a ) => 'a = "%identity"
36
+ external valToFn : 'a => unit => 'a = "%identity"
37
+ external castToConcrete : t <'a > => internal <'a > = "%identity"
38
+ external castFromConcrete : internal <'a > => t <'a > = "%identity"
39
39
40
40
let is_val = (type a , l : t <a >): bool => castToConcrete (l ).tag
41
41
42
42
exception Undefined
43
43
44
- %%private (
45
- let forward_with_closure = (type a , blk : internal <a >, closure : unit => a ): a => {
46
- let result = closure ()
47
- blk .value = result
48
- blk .tag = true
49
- result
50
- }
51
- )
44
+ let forward_with_closure = (type a , blk : internal <a >, closure : unit => a ): a => {
45
+ let result = closure ()
46
+ blk .value = result
47
+ blk .tag = true
48
+ result
49
+ }
52
50
53
- %% private ( let raise_undefined = () => throw (Undefined ) )
51
+ let raise_undefined = () => throw (Undefined )
54
52
55
53
/* Assume [blk] is a block with tag lazy */
56
- %%private (
57
- let force_lazy_block = (type a , blk : internal <a >): a => {
58
- let closure = valToFn (blk .value )
59
- blk .value = fnToVal (raise_undefined )
60
- try forward_with_closure (blk , closure ) catch {
61
- | e =>
62
- blk .value = fnToVal (() => throw (e ))
63
- throw (e )
64
- }
54
+ let force_lazy_block = (type a , blk : internal <a >): a => {
55
+ let closure = valToFn (blk .value )
56
+ blk .value = fnToVal (raise_undefined )
57
+ try forward_with_closure (blk , closure ) catch {
58
+ | e =>
59
+ blk .value = fnToVal (() => throw (e ))
60
+ throw (e )
65
61
}
66
- )
62
+ }
67
63
68
64
/* Assume [blk] is a block with tag lazy */
69
- %%private (
70
- let force_val_lazy_block = (type a , blk : internal <a >): a => {
71
- let closure = valToFn (blk .value )
72
- blk .value = fnToVal (raise_undefined )
73
- forward_with_closure (blk , closure )
74
- }
75
- )
65
+ let force_val_lazy_block = (type a , blk : internal <a >): a => {
66
+ let closure = valToFn (blk .value )
67
+ blk .value = fnToVal (raise_undefined )
68
+ forward_with_closure (blk , closure )
69
+ }
76
70
77
71
let force = (type a , lzv : t <a >): a => {
78
72
let lzv : internal <_ > = castToConcrete (lzv )
0 commit comments