2424
2525@@config ({flags : ["-bs-no-cross-module-opt" ]})
2626
27- type lazy_t <+ 'a >
27+ type t <+ 'a >
2828
2929/* Internals of forcing lazy values. */
30- type t <'a > = {
30+ type internal <'a > = {
3131 @as ("LAZY_DONE" ) mutable tag : bool ,
3232 /* Invariant: name */
3333 @as ("VAL" ) mutable value : 'a ,
@@ -36,15 +36,15 @@ type t<'a> = {
3636
3737%%private (external fnToVal : (unit => 'a ) => 'a = "%identity" )
3838%%private (external valToFn : 'a => unit => 'a = "%identity" )
39- %%private (external castToConcrete : lazy_t <'a > => t <'a > = "%identity" )
40- %%private (external castFromConcrete : t <'a > => lazy_t <'a > = "%identity" )
39+ %%private (external castToConcrete : t <'a > => internal <'a > = "%identity" )
40+ %%private (external castFromConcrete : internal <'a > => t <'a > = "%identity" )
4141
42- let is_val = (type a , l : lazy_t <a >): bool => castToConcrete (l ).tag
42+ let is_val = (type a , l : t <a >): bool => castToConcrete (l ).tag
4343
4444exception Undefined
4545
4646%%private (
47- let forward_with_closure = (type a , blk : t <a >, closure : unit => a ): a => {
47+ let forward_with_closure = (type a , blk : internal <a >, closure : unit => a ): a => {
4848 let result = closure ()
4949 blk .value = result
5050 blk .tag = true
@@ -56,7 +56,7 @@ exception Undefined
5656
5757/* Assume [blk] is a block with tag lazy */
5858%%private (
59- let force_lazy_block = (type a , blk : t <a >): a => {
59+ let force_lazy_block = (type a , blk : internal <a >): a => {
6060 let closure = valToFn (blk .value )
6161 blk .value = fnToVal (raise_undefined )
6262 try forward_with_closure (blk , closure ) catch {
@@ -69,40 +69,40 @@ exception Undefined
6969
7070/* Assume [blk] is a block with tag lazy */
7171%%private (
72- let force_val_lazy_block = (type a , blk : t <a >): a => {
72+ let force_val_lazy_block = (type a , blk : internal <a >): a => {
7373 let closure = valToFn (blk .value )
7474 blk .value = fnToVal (raise_undefined )
7575 forward_with_closure (blk , closure )
7676 }
7777)
7878
79- let force = (type a , lzv : lazy_t <a >): a => {
80- let lzv : t <_ > = castToConcrete (lzv )
79+ let force = (type a , lzv : t <a >): a => {
80+ let lzv : internal <_ > = castToConcrete (lzv )
8181 if lzv .tag {
8282 lzv .value
8383 } else {
8484 force_lazy_block (lzv )
8585 }
8686}
8787
88- let force_val = (type a , lzv : lazy_t <a >): a => {
89- let lzv : t <_ > = castToConcrete (lzv )
88+ let force_val = (type a , lzv : t <a >): a => {
89+ let lzv : internal <_ > = castToConcrete (lzv )
9090 if lzv .tag {
9191 lzv .value
9292 } else {
9393 force_val_lazy_block (lzv )
9494 }
9595}
9696
97- let from_fun = (type a , closure : unit => a ): lazy_t <a > => {
97+ let from_fun = (type a , closure : unit => a ): t <a > => {
9898 let blk = {
9999 tag : false ,
100100 value : fnToVal (closure ),
101101 }
102102 castFromConcrete (blk )
103103}
104104
105- let from_val = (type a , value : a ): lazy_t <a > => {
105+ let from_val = (type a , value : a ): t <a > => {
106106 let blk = {
107107 tag : true ,
108108 value ,
0 commit comments