@tellahq/rescript 10.1.4-republish-2 → 10.1.4-republish-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/darwin/bsb_helper.exe +0 -0
- package/darwin/bsc.exe +0 -0
- package/darwin/ninja.exe +0 -0
- package/darwin/rescript.exe +0 -0
- package/darwinarm64/bsb_helper.exe +0 -0
- package/darwinarm64/bsc.exe +0 -0
- package/darwinarm64/ninja.exe +0 -0
- package/darwinarm64/rescript.exe +0 -0
- package/lib/ocaml/arg.cmi +0 -0
- package/lib/ocaml/arg.cmt +0 -0
- package/lib/ocaml/arg.cmti +0 -0
- package/lib/ocaml/arg.ml +359 -0
- package/lib/ocaml/arg.mli +185 -0
- package/lib/ocaml/array.cmi +0 -0
- package/lib/ocaml/array.cmt +0 -0
- package/lib/ocaml/array.cmti +0 -0
- package/lib/ocaml/array.ml +307 -0
- package/lib/ocaml/array.mli +275 -0
- package/lib/ocaml/arrayLabels.cmi +0 -0
- package/lib/ocaml/arrayLabels.cmt +0 -0
- package/lib/ocaml/arrayLabels.cmti +0 -0
- package/lib/ocaml/arrayLabels.ml +307 -0
- package/lib/ocaml/arrayLabels.mli +276 -0
- package/lib/ocaml/belt.cmi +0 -0
- package/lib/ocaml/belt.cmt +0 -0
- package/lib/ocaml/belt.ml +352 -0
- package/lib/ocaml/belt_Array.cmi +0 -0
- package/lib/ocaml/belt_Array.cmt +0 -0
- package/lib/ocaml/belt_Array.cmti +0 -0
- package/lib/ocaml/belt_Array.ml +525 -0
- package/lib/ocaml/belt_Array.mli +707 -0
- package/lib/ocaml/belt_Float.cmi +0 -0
- package/lib/ocaml/belt_Float.cmt +0 -0
- package/lib/ocaml/belt_Float.cmti +0 -0
- package/lib/ocaml/belt_Float.ml +50 -0
- package/lib/ocaml/belt_Float.mli +106 -0
- package/lib/ocaml/belt_HashMap.cmi +0 -0
- package/lib/ocaml/belt_HashMap.cmt +0 -0
- package/lib/ocaml/belt_HashMap.cmti +0 -0
- package/lib/ocaml/belt_HashMap.ml +226 -0
- package/lib/ocaml/belt_HashMap.mli +436 -0
- package/lib/ocaml/belt_HashMapInt.cmi +0 -0
- package/lib/ocaml/belt_HashMapInt.cmt +0 -0
- package/lib/ocaml/belt_HashMapInt.cmti +0 -0
- package/lib/ocaml/belt_HashMapInt.ml +206 -0
- package/lib/ocaml/belt_HashMapInt.mli +50 -0
- package/lib/ocaml/belt_HashMapString.cmi +0 -0
- package/lib/ocaml/belt_HashMapString.cmt +0 -0
- package/lib/ocaml/belt_HashMapString.cmti +0 -0
- package/lib/ocaml/belt_HashMapString.ml +206 -0
- package/lib/ocaml/belt_HashMapString.mli +50 -0
- package/lib/ocaml/belt_HashSet.cmi +0 -0
- package/lib/ocaml/belt_HashSet.cmt +0 -0
- package/lib/ocaml/belt_HashSet.cmti +0 -0
- package/lib/ocaml/belt_HashSet.ml +196 -0
- package/lib/ocaml/belt_HashSet.mli +125 -0
- package/lib/ocaml/belt_HashSetInt.cmi +0 -0
- package/lib/ocaml/belt_HashSetInt.cmt +0 -0
- package/lib/ocaml/belt_HashSetInt.cmti +0 -0
- package/lib/ocaml/belt_HashSetInt.ml +155 -0
- package/lib/ocaml/belt_HashSetInt.mli +74 -0
- package/lib/ocaml/belt_HashSetString.cmi +0 -0
- package/lib/ocaml/belt_HashSetString.cmt +0 -0
- package/lib/ocaml/belt_HashSetString.cmti +0 -0
- package/lib/ocaml/belt_HashSetString.ml +156 -0
- package/lib/ocaml/belt_HashSetString.mli +74 -0
- package/lib/ocaml/belt_Id.cmi +0 -0
- package/lib/ocaml/belt_Id.cmt +0 -0
- package/lib/ocaml/belt_Id.cmti +0 -0
- package/lib/ocaml/belt_Id.ml +133 -0
- package/lib/ocaml/belt_Id.mli +171 -0
- package/lib/ocaml/belt_Int.cmi +0 -0
- package/lib/ocaml/belt_Int.cmt +0 -0
- package/lib/ocaml/belt_Int.cmti +0 -0
- package/lib/ocaml/belt_Int.ml +50 -0
- package/lib/ocaml/belt_Int.mli +103 -0
- package/lib/ocaml/belt_List.cmi +0 -0
- package/lib/ocaml/belt_List.cmt +0 -0
- package/lib/ocaml/belt_List.cmti +0 -0
- package/lib/ocaml/belt_List.ml +803 -0
- package/lib/ocaml/belt_List.mli +844 -0
- package/lib/ocaml/belt_Map.cmi +0 -0
- package/lib/ocaml/belt_Map.cmt +0 -0
- package/lib/ocaml/belt_Map.cmti +0 -0
- package/lib/ocaml/belt_Map.ml +170 -0
- package/lib/ocaml/belt_Map.mli +496 -0
- package/lib/ocaml/belt_MapDict.cmi +0 -0
- package/lib/ocaml/belt_MapDict.cmt +0 -0
- package/lib/ocaml/belt_MapDict.cmti +0 -0
- package/lib/ocaml/belt_MapDict.ml +278 -0
- package/lib/ocaml/belt_MapDict.mli +268 -0
- package/lib/ocaml/belt_MapInt.cmi +0 -0
- package/lib/ocaml/belt_MapInt.cmt +0 -0
- package/lib/ocaml/belt_MapInt.cmti +0 -0
- package/lib/ocaml/belt_MapInt.ml +169 -0
- package/lib/ocaml/belt_MapInt.mli +187 -0
- package/lib/ocaml/belt_MapString.cmi +0 -0
- package/lib/ocaml/belt_MapString.cmt +0 -0
- package/lib/ocaml/belt_MapString.cmti +0 -0
- package/lib/ocaml/belt_MapString.ml +169 -0
- package/lib/ocaml/belt_MapString.mli +187 -0
- package/lib/ocaml/belt_MutableMap.cmi +0 -0
- package/lib/ocaml/belt_MutableMap.cmt +0 -0
- package/lib/ocaml/belt_MutableMap.cmti +0 -0
- package/lib/ocaml/belt_MutableMap.ml +241 -0
- package/lib/ocaml/belt_MutableMap.mli +145 -0
- package/lib/ocaml/belt_MutableMapInt.cmi +0 -0
- package/lib/ocaml/belt_MutableMapInt.cmt +0 -0
- package/lib/ocaml/belt_MutableMapInt.cmti +0 -0
- package/lib/ocaml/belt_MutableMapInt.ml +172 -0
- package/lib/ocaml/belt_MutableMapInt.mli +135 -0
- package/lib/ocaml/belt_MutableMapString.cmi +0 -0
- package/lib/ocaml/belt_MutableMapString.cmt +0 -0
- package/lib/ocaml/belt_MutableMapString.cmti +0 -0
- package/lib/ocaml/belt_MutableMapString.ml +172 -0
- package/lib/ocaml/belt_MutableMapString.mli +135 -0
- package/lib/ocaml/belt_MutableQueue.cmi +0 -0
- package/lib/ocaml/belt_MutableQueue.cmt +0 -0
- package/lib/ocaml/belt_MutableQueue.cmti +0 -0
- package/lib/ocaml/belt_MutableQueue.ml +222 -0
- package/lib/ocaml/belt_MutableQueue.mli +116 -0
- package/lib/ocaml/belt_MutableSet.cmi +0 -0
- package/lib/ocaml/belt_MutableSet.cmt +0 -0
- package/lib/ocaml/belt_MutableSet.cmti +0 -0
- package/lib/ocaml/belt_MutableSet.ml +371 -0
- package/lib/ocaml/belt_MutableSet.mli +617 -0
- package/lib/ocaml/belt_MutableSetInt.cmi +0 -0
- package/lib/ocaml/belt_MutableSetInt.cmt +0 -0
- package/lib/ocaml/belt_MutableSetInt.cmti +0 -0
- package/lib/ocaml/belt_MutableSetInt.ml +342 -0
- package/lib/ocaml/belt_MutableSetInt.mli +124 -0
- package/lib/ocaml/belt_MutableSetString.cmi +0 -0
- package/lib/ocaml/belt_MutableSetString.cmt +0 -0
- package/lib/ocaml/belt_MutableSetString.cmti +0 -0
- package/lib/ocaml/belt_MutableSetString.ml +342 -0
- package/lib/ocaml/belt_MutableSetString.mli +124 -0
- package/lib/ocaml/belt_MutableStack.cmi +0 -0
- package/lib/ocaml/belt_MutableStack.cmt +0 -0
- package/lib/ocaml/belt_MutableStack.cmti +0 -0
- package/lib/ocaml/belt_MutableStack.ml +106 -0
- package/lib/ocaml/belt_MutableStack.mli +63 -0
- package/lib/ocaml/belt_Option.cmi +0 -0
- package/lib/ocaml/belt_Option.cmt +0 -0
- package/lib/ocaml/belt_Option.cmti +0 -0
- package/lib/ocaml/belt_Option.ml +93 -0
- package/lib/ocaml/belt_Option.mli +270 -0
- package/lib/ocaml/belt_Range.cmi +0 -0
- package/lib/ocaml/belt_Range.cmt +0 -0
- package/lib/ocaml/belt_Range.cmti +0 -0
- package/lib/ocaml/belt_Range.ml +76 -0
- package/lib/ocaml/belt_Range.mli +114 -0
- package/lib/ocaml/belt_Result.cmi +0 -0
- package/lib/ocaml/belt_Result.cmt +0 -0
- package/lib/ocaml/belt_Result.cmti +0 -0
- package/lib/ocaml/belt_Result.ml +75 -0
- package/lib/ocaml/belt_Result.mli +205 -0
- package/lib/ocaml/belt_Set.cmi +0 -0
- package/lib/ocaml/belt_Set.cmt +0 -0
- package/lib/ocaml/belt_Set.cmti +0 -0
- package/lib/ocaml/belt_Set.cppo.ml +205 -0
- package/lib/ocaml/belt_Set.cppo.mli +153 -0
- package/lib/ocaml/belt_Set.ml +164 -0
- package/lib/ocaml/belt_Set.mli +523 -0
- package/lib/ocaml/belt_SetDict.cmi +0 -0
- package/lib/ocaml/belt_SetDict.cmt +0 -0
- package/lib/ocaml/belt_SetDict.cmti +0 -0
- package/lib/ocaml/belt_SetDict.ml +237 -0
- package/lib/ocaml/belt_SetDict.mli +567 -0
- package/lib/ocaml/belt_SetInt.cmi +0 -0
- package/lib/ocaml/belt_SetInt.cmt +0 -0
- package/lib/ocaml/belt_SetInt.cmti +0 -0
- package/lib/ocaml/belt_SetInt.ml +201 -0
- package/lib/ocaml/belt_SetInt.mli +151 -0
- package/lib/ocaml/belt_SetString.cmi +0 -0
- package/lib/ocaml/belt_SetString.cmt +0 -0
- package/lib/ocaml/belt_SetString.cmti +0 -0
- package/lib/ocaml/belt_SetString.ml +201 -0
- package/lib/ocaml/belt_SetString.mli +151 -0
- package/lib/ocaml/belt_SortArray.cmi +0 -0
- package/lib/ocaml/belt_SortArray.cmt +0 -0
- package/lib/ocaml/belt_SortArray.cmti +0 -0
- package/lib/ocaml/belt_SortArray.ml +322 -0
- package/lib/ocaml/belt_SortArray.mli +146 -0
- package/lib/ocaml/belt_SortArrayInt.cmi +0 -0
- package/lib/ocaml/belt_SortArrayInt.cmt +0 -0
- package/lib/ocaml/belt_SortArrayInt.cmti +0 -0
- package/lib/ocaml/belt_SortArrayInt.ml +263 -0
- package/lib/ocaml/belt_SortArrayInt.mli +93 -0
- package/lib/ocaml/belt_SortArrayString.cmi +0 -0
- package/lib/ocaml/belt_SortArrayString.cmt +0 -0
- package/lib/ocaml/belt_SortArrayString.cmti +0 -0
- package/lib/ocaml/belt_SortArrayString.ml +263 -0
- package/lib/ocaml/belt_SortArrayString.mli +93 -0
- package/lib/ocaml/belt_internalAVLset.cmt +0 -0
- package/lib/ocaml/belt_internalAVLset.cmti +0 -0
- package/lib/ocaml/belt_internalAVLset.ml +665 -0
- package/lib/ocaml/belt_internalAVLset.mli +124 -0
- package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
- package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
- package/lib/ocaml/belt_internalAVLtree.ml +762 -0
- package/lib/ocaml/belt_internalAVLtree.mli +215 -0
- package/lib/ocaml/belt_internalBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalBuckets.ml +218 -0
- package/lib/ocaml/belt_internalBuckets.mli +57 -0
- package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
- package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
- package/lib/ocaml/belt_internalBucketsType.ml +59 -0
- package/lib/ocaml/belt_internalBucketsType.mli +46 -0
- package/lib/ocaml/belt_internalMapInt.cmt +0 -0
- package/lib/ocaml/belt_internalMapInt.ml +227 -0
- package/lib/ocaml/belt_internalMapString.cmt +0 -0
- package/lib/ocaml/belt_internalMapString.ml +227 -0
- package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalSetBuckets.ml +157 -0
- package/lib/ocaml/belt_internalSetBuckets.mli +47 -0
- package/lib/ocaml/belt_internalSetInt.cmt +0 -0
- package/lib/ocaml/belt_internalSetInt.ml +129 -0
- package/lib/ocaml/belt_internalSetString.cmt +0 -0
- package/lib/ocaml/belt_internalSetString.ml +129 -0
- package/lib/ocaml/belt_internals.cmti +0 -0
- package/lib/ocaml/belt_internals.mli +79 -0
- package/lib/ocaml/buffer.cmi +0 -0
- package/lib/ocaml/buffer.cmt +0 -0
- package/lib/ocaml/buffer.cmti +0 -0
- package/lib/ocaml/buffer.ml +250 -0
- package/lib/ocaml/buffer.mli +149 -0
- package/lib/ocaml/bytes.cmi +0 -0
- package/lib/ocaml/bytes.cmt +0 -0
- package/lib/ocaml/bytes.cmti +0 -0
- package/lib/ocaml/bytes.ml +431 -0
- package/lib/ocaml/bytes.mli +430 -0
- package/lib/ocaml/bytesLabels.cmi +0 -0
- package/lib/ocaml/bytesLabels.cmt +0 -0
- package/lib/ocaml/bytesLabels.cmti +0 -0
- package/lib/ocaml/bytesLabels.ml +428 -0
- package/lib/ocaml/bytesLabels.mli +276 -0
- package/lib/ocaml/callback.cmi +0 -0
- package/lib/ocaml/callback.cmt +0 -0
- package/lib/ocaml/callback.cmti +0 -0
- package/lib/ocaml/callback.ml +20 -0
- package/lib/ocaml/callback.mli +34 -0
- package/lib/ocaml/camlinternalLazy.cmi +0 -0
- package/lib/ocaml/camlinternalLazy.cmt +0 -0
- package/lib/ocaml/camlinternalLazy.cmti +0 -0
- package/lib/ocaml/camlinternalLazy.ml +89 -0
- package/lib/ocaml/camlinternalLazy.mli +27 -0
- package/lib/ocaml/camlinternalMod.cmi +0 -0
- package/lib/ocaml/camlinternalMod.cmt +0 -0
- package/lib/ocaml/camlinternalMod.cmti +0 -0
- package/lib/ocaml/camlinternalMod.ml +21 -0
- package/lib/ocaml/camlinternalMod.mli +25 -0
- package/lib/ocaml/char.cmi +0 -0
- package/lib/ocaml/char.cmt +0 -0
- package/lib/ocaml/char.cmti +0 -0
- package/lib/ocaml/char.ml +76 -0
- package/lib/ocaml/char.mli +72 -0
- package/lib/ocaml/complex.cmi +0 -0
- package/lib/ocaml/complex.cmt +0 -0
- package/lib/ocaml/complex.cmti +0 -0
- package/lib/ocaml/complex.ml +87 -0
- package/lib/ocaml/complex.mli +86 -0
- package/lib/ocaml/digest.cmi +0 -0
- package/lib/ocaml/digest.cmt +0 -0
- package/lib/ocaml/digest.cmti +0 -0
- package/lib/ocaml/digest.ml +66 -0
- package/lib/ocaml/digest.mli +68 -0
- package/lib/ocaml/dom.cmi +0 -0
- package/lib/ocaml/dom.cmt +0 -0
- package/lib/ocaml/dom.ml +296 -0
- package/lib/ocaml/dom_storage.cmi +0 -0
- package/lib/ocaml/dom_storage.cmt +0 -0
- package/lib/ocaml/dom_storage.ml +22 -0
- package/lib/ocaml/dom_storage2.cmi +0 -0
- package/lib/ocaml/dom_storage2.cmt +0 -0
- package/lib/ocaml/dom_storage2.ml +11 -0
- package/lib/ocaml/filename.cmi +0 -0
- package/lib/ocaml/filename.cmt +0 -0
- package/lib/ocaml/filename.cmti +0 -0
- package/lib/ocaml/filename.ml +233 -0
- package/lib/ocaml/filename.mli +134 -0
- package/lib/ocaml/genlex.cmi +0 -0
- package/lib/ocaml/genlex.cmt +0 -0
- package/lib/ocaml/genlex.cmti +0 -0
- package/lib/ocaml/genlex.ml +201 -0
- package/lib/ocaml/genlex.mli +73 -0
- package/lib/ocaml/hashmap.cppo.ml +214 -0
- package/lib/ocaml/hashmap.cppo.mli +54 -0
- package/lib/ocaml/hashset.cppo.ml +165 -0
- package/lib/ocaml/hashset.cppo.mli +77 -0
- package/lib/ocaml/hashtbl.cmi +0 -0
- package/lib/ocaml/hashtbl.cmt +0 -0
- package/lib/ocaml/hashtbl.cmti +0 -0
- package/lib/ocaml/hashtbl.ml +541 -0
- package/lib/ocaml/hashtbl.mli +411 -0
- package/lib/ocaml/hashtblLabels.cmi +0 -0
- package/lib/ocaml/hashtblLabels.cmt +0 -0
- package/lib/ocaml/hashtblLabels.ml +130 -0
- package/lib/ocaml/int32.cmi +0 -0
- package/lib/ocaml/int32.cmt +0 -0
- package/lib/ocaml/int32.cmti +0 -0
- package/lib/ocaml/int32.ml +64 -0
- package/lib/ocaml/int32.mli +186 -0
- package/lib/ocaml/int64.cmi +0 -0
- package/lib/ocaml/int64.cmt +0 -0
- package/lib/ocaml/int64.cmti +0 -0
- package/lib/ocaml/int64.ml +72 -0
- package/lib/ocaml/int64.mli +197 -0
- package/lib/ocaml/internal_map.cppo.ml +230 -0
- package/lib/ocaml/internal_set.cppo.ml +134 -0
- package/lib/ocaml/js.cmi +0 -0
- package/lib/ocaml/js.cmt +0 -0
- package/lib/ocaml/js.ml +316 -0
- package/lib/ocaml/js_OO.cmi +0 -0
- package/lib/ocaml/js_OO.cmt +0 -0
- package/lib/ocaml/js_OO.ml +180 -0
- package/lib/ocaml/js_array.cmi +0 -0
- package/lib/ocaml/js_array.cmt +0 -0
- package/lib/ocaml/js_array.ml +970 -0
- package/lib/ocaml/js_array2.cmi +0 -0
- package/lib/ocaml/js_array2.cmt +0 -0
- package/lib/ocaml/js_array2.ml +1065 -0
- package/lib/ocaml/js_bigint.cmi +0 -0
- package/lib/ocaml/js_bigint.cmt +0 -0
- package/lib/ocaml/js_bigint.ml +3 -0
- package/lib/ocaml/js_cast.cmi +0 -0
- package/lib/ocaml/js_cast.cmt +0 -0
- package/lib/ocaml/js_cast.cmti +0 -0
- package/lib/ocaml/js_cast.ml +29 -0
- package/lib/ocaml/js_cast.mli +45 -0
- package/lib/ocaml/js_console.cmi +0 -0
- package/lib/ocaml/js_console.cmt +0 -0
- package/lib/ocaml/js_console.ml +51 -0
- package/lib/ocaml/js_date.cmi +0 -0
- package/lib/ocaml/js_date.cmt +0 -0
- package/lib/ocaml/js_date.ml +1263 -0
- package/lib/ocaml/js_dict.cmi +0 -0
- package/lib/ocaml/js_dict.cmt +0 -0
- package/lib/ocaml/js_dict.cmti +0 -0
- package/lib/ocaml/js_dict.ml +114 -0
- package/lib/ocaml/js_dict.mli +152 -0
- package/lib/ocaml/js_exn.cmi +0 -0
- package/lib/ocaml/js_exn.cmt +0 -0
- package/lib/ocaml/js_exn.cmti +0 -0
- package/lib/ocaml/js_exn.ml +102 -0
- package/lib/ocaml/js_exn.mli +79 -0
- package/lib/ocaml/js_float.cmi +0 -0
- package/lib/ocaml/js_float.cmt +0 -0
- package/lib/ocaml/js_float.ml +294 -0
- package/lib/ocaml/js_global.cmi +0 -0
- package/lib/ocaml/js_global.cmt +0 -0
- package/lib/ocaml/js_global.ml +185 -0
- package/lib/ocaml/js_int.cmi +0 -0
- package/lib/ocaml/js_int.cmt +0 -0
- package/lib/ocaml/js_int.ml +158 -0
- package/lib/ocaml/js_json.cmi +0 -0
- package/lib/ocaml/js_json.cmt +0 -0
- package/lib/ocaml/js_json.cmti +0 -0
- package/lib/ocaml/js_json.ml +195 -0
- package/lib/ocaml/js_json.mli +244 -0
- package/lib/ocaml/js_list.cmi +0 -0
- package/lib/ocaml/js_list.cmt +0 -0
- package/lib/ocaml/js_list.cmti +0 -0
- package/lib/ocaml/js_list.ml +174 -0
- package/lib/ocaml/js_list.mli +72 -0
- package/lib/ocaml/js_map.cmi +0 -0
- package/lib/ocaml/js_map.cmt +0 -0
- package/lib/ocaml/js_map.ml +3 -0
- package/lib/ocaml/js_mapperRt.cmi +0 -0
- package/lib/ocaml/js_mapperRt.cmt +0 -0
- package/lib/ocaml/js_mapperRt.cmti +0 -0
- package/lib/ocaml/js_mapperRt.ml +50 -0
- package/lib/ocaml/js_mapperRt.mli +44 -0
- package/lib/ocaml/js_math.cmi +0 -0
- package/lib/ocaml/js_math.cmt +0 -0
- package/lib/ocaml/js_math.ml +626 -0
- package/lib/ocaml/js_null.cmi +0 -0
- package/lib/ocaml/js_null.cmt +0 -0
- package/lib/ocaml/js_null.cmti +0 -0
- package/lib/ocaml/js_null.ml +57 -0
- package/lib/ocaml/js_null.mli +87 -0
- package/lib/ocaml/js_null_undefined.cmi +0 -0
- package/lib/ocaml/js_null_undefined.cmt +0 -0
- package/lib/ocaml/js_null_undefined.cmti +0 -0
- package/lib/ocaml/js_null_undefined.ml +50 -0
- package/lib/ocaml/js_null_undefined.mli +85 -0
- package/lib/ocaml/js_obj.cmi +0 -0
- package/lib/ocaml/js_obj.cmt +0 -0
- package/lib/ocaml/js_obj.ml +100 -0
- package/lib/ocaml/js_option.cmi +0 -0
- package/lib/ocaml/js_option.cmt +0 -0
- package/lib/ocaml/js_option.cmti +0 -0
- package/lib/ocaml/js_option.ml +203 -0
- package/lib/ocaml/js_option.mli +52 -0
- package/lib/ocaml/js_promise.cmi +0 -0
- package/lib/ocaml/js_promise.cmt +0 -0
- package/lib/ocaml/js_promise.ml +100 -0
- package/lib/ocaml/js_promise2.cmi +0 -0
- package/lib/ocaml/js_promise2.cmt +0 -0
- package/lib/ocaml/js_promise2.res +58 -0
- package/lib/ocaml/js_re.cmi +0 -0
- package/lib/ocaml/js_re.cmt +0 -0
- package/lib/ocaml/js_re.ml +184 -0
- package/lib/ocaml/js_result.cmi +0 -0
- package/lib/ocaml/js_result.cmt +0 -0
- package/lib/ocaml/js_result.cmti +0 -0
- package/lib/ocaml/js_result.ml +28 -0
- package/lib/ocaml/js_result.mli +28 -0
- package/lib/ocaml/js_set.cmi +0 -0
- package/lib/ocaml/js_set.cmt +0 -0
- package/lib/ocaml/js_set.ml +3 -0
- package/lib/ocaml/js_string.cmi +0 -0
- package/lib/ocaml/js_string.cmt +0 -0
- package/lib/ocaml/js_string.ml +914 -0
- package/lib/ocaml/js_string2.cmi +0 -0
- package/lib/ocaml/js_string2.cmt +0 -0
- package/lib/ocaml/js_string2.ml +912 -0
- package/lib/ocaml/js_typed_array.cmi +0 -0
- package/lib/ocaml/js_typed_array.cmt +0 -0
- package/lib/ocaml/js_typed_array.cppo.ml +429 -0
- package/lib/ocaml/js_typed_array.ml +1405 -0
- package/lib/ocaml/js_typed_array2.cmi +0 -0
- package/lib/ocaml/js_typed_array2.cmt +0 -0
- package/lib/ocaml/js_typed_array2.cppo.ml +296 -0
- package/lib/ocaml/js_typed_array2.ml +1269 -0
- package/lib/ocaml/js_types.cmi +0 -0
- package/lib/ocaml/js_types.cmt +0 -0
- package/lib/ocaml/js_types.cmti +0 -0
- package/lib/ocaml/js_types.ml +118 -0
- package/lib/ocaml/js_types.mli +78 -0
- package/lib/ocaml/js_undefined.cmi +0 -0
- package/lib/ocaml/js_undefined.cmt +0 -0
- package/lib/ocaml/js_undefined.cmti +0 -0
- package/lib/ocaml/js_undefined.ml +59 -0
- package/lib/ocaml/js_undefined.mli +92 -0
- package/lib/ocaml/js_vector.cmi +0 -0
- package/lib/ocaml/js_vector.cmt +0 -0
- package/lib/ocaml/js_vector.cmti +0 -0
- package/lib/ocaml/js_vector.ml +143 -0
- package/lib/ocaml/js_vector.mli +92 -0
- package/lib/ocaml/js_weakmap.cmi +0 -0
- package/lib/ocaml/js_weakmap.cmt +0 -0
- package/lib/ocaml/js_weakmap.ml +3 -0
- package/lib/ocaml/js_weakset.cmi +0 -0
- package/lib/ocaml/js_weakset.cmt +0 -0
- package/lib/ocaml/js_weakset.ml +3 -0
- package/lib/ocaml/jsx.cmi +0 -0
- package/lib/ocaml/jsx.cmt +0 -0
- package/lib/ocaml/jsx.res +40 -0
- package/lib/ocaml/jsxDOM.cmi +0 -0
- package/lib/ocaml/jsxDOM.cmt +0 -0
- package/lib/ocaml/jsxDOM.res +620 -0
- package/lib/ocaml/jsxDOMStyle.cmi +0 -0
- package/lib/ocaml/jsxDOMStyle.cmt +0 -0
- package/lib/ocaml/jsxDOMStyle.ml +781 -0
- package/lib/ocaml/jsxEvent.cmi +0 -0
- package/lib/ocaml/jsxEvent.cmt +0 -0
- package/lib/ocaml/jsxEvent.ml +358 -0
- package/lib/ocaml/jsxPPXReactSupport.cmi +0 -0
- package/lib/ocaml/jsxPPXReactSupport.cmt +0 -0
- package/lib/ocaml/jsxPPXReactSupport.res +48 -0
- package/lib/ocaml/lazy.cmi +0 -0
- package/lib/ocaml/lazy.cmt +0 -0
- package/lib/ocaml/lazy.cmti +0 -0
- package/lib/ocaml/lazy.ml +70 -0
- package/lib/ocaml/lazy.mli +95 -0
- package/lib/ocaml/lexing.cmi +0 -0
- package/lib/ocaml/lexing.cmt +0 -0
- package/lib/ocaml/lexing.cmti +0 -0
- package/lib/ocaml/lexing.ml +230 -0
- package/lib/ocaml/lexing.mli +172 -0
- package/lib/ocaml/list.cmi +0 -0
- package/lib/ocaml/list.cmt +0 -0
- package/lib/ocaml/list.cmti +0 -0
- package/lib/ocaml/list.ml +485 -0
- package/lib/ocaml/list.mli +347 -0
- package/lib/ocaml/listLabels.cmi +0 -0
- package/lib/ocaml/listLabels.cmt +0 -0
- package/lib/ocaml/listLabels.cmti +0 -0
- package/lib/ocaml/listLabels.ml +485 -0
- package/lib/ocaml/listLabels.mli +353 -0
- package/lib/ocaml/map.cmi +0 -0
- package/lib/ocaml/map.cmt +0 -0
- package/lib/ocaml/map.cmti +0 -0
- package/lib/ocaml/map.cppo.ml +174 -0
- package/lib/ocaml/map.cppo.mli +191 -0
- package/lib/ocaml/map.ml +480 -0
- package/lib/ocaml/map.mli +315 -0
- package/lib/ocaml/mapLabels.cmi +0 -0
- package/lib/ocaml/mapLabels.cmt +0 -0
- package/lib/ocaml/mapLabels.ml +480 -0
- package/lib/ocaml/mapm.cppo.ml +177 -0
- package/lib/ocaml/mapm.cppo.mli +138 -0
- package/lib/ocaml/moreLabels.cmi +0 -0
- package/lib/ocaml/moreLabels.cmt +0 -0
- package/lib/ocaml/moreLabels.cmti +0 -0
- package/lib/ocaml/moreLabels.ml +22 -0
- package/lib/ocaml/moreLabels.mli +198 -0
- package/lib/ocaml/node.cmi +0 -0
- package/lib/ocaml/node.cmt +0 -0
- package/lib/ocaml/node.ml +84 -0
- package/lib/ocaml/node_buffer.cmi +0 -0
- package/lib/ocaml/node_buffer.cmt +0 -0
- package/lib/ocaml/node_buffer.ml +47 -0
- package/lib/ocaml/node_child_process.cmi +0 -0
- package/lib/ocaml/node_child_process.cmt +0 -0
- package/lib/ocaml/node_child_process.ml +50 -0
- package/lib/ocaml/node_fs.cmi +0 -0
- package/lib/ocaml/node_fs.cmt +0 -0
- package/lib/ocaml/node_fs.ml +153 -0
- package/lib/ocaml/node_module.cmi +0 -0
- package/lib/ocaml/node_module.cmt +0 -0
- package/lib/ocaml/node_module.ml +29 -0
- package/lib/ocaml/node_path.cmi +0 -0
- package/lib/ocaml/node_path.cmt +0 -0
- package/lib/ocaml/node_path.ml +71 -0
- package/lib/ocaml/node_process.cmi +0 -0
- package/lib/ocaml/node_process.cmt +0 -0
- package/lib/ocaml/node_process.cmti +0 -0
- package/lib/ocaml/node_process.ml +59 -0
- package/lib/ocaml/node_process.mli +48 -0
- package/lib/ocaml/obj.cmi +0 -0
- package/lib/ocaml/obj.cmt +0 -0
- package/lib/ocaml/obj.cmti +0 -0
- package/lib/ocaml/obj.ml +29 -0
- package/lib/ocaml/obj.mli +62 -0
- package/lib/ocaml/parsing.cmi +0 -0
- package/lib/ocaml/parsing.cmt +0 -0
- package/lib/ocaml/parsing.cmti +0 -0
- package/lib/ocaml/parsing.ml +212 -0
- package/lib/ocaml/parsing.mli +105 -0
- package/lib/ocaml/pervasives.cmi +0 -0
- package/lib/ocaml/pervasives.cmt +0 -0
- package/lib/ocaml/pervasives.cmti +0 -0
- package/lib/ocaml/pervasives.ml +297 -0
- package/lib/ocaml/pervasives.mli +771 -0
- package/lib/ocaml/printexc.cmi +0 -0
- package/lib/ocaml/printexc.cmt +0 -0
- package/lib/ocaml/printexc.cmti +0 -0
- package/lib/ocaml/printexc.ml +75 -0
- package/lib/ocaml/printexc.mli +57 -0
- package/lib/ocaml/queue.cmi +0 -0
- package/lib/ocaml/queue.cmt +0 -0
- package/lib/ocaml/queue.cmti +0 -0
- package/lib/ocaml/queue.ml +132 -0
- package/lib/ocaml/queue.mli +82 -0
- package/lib/ocaml/random.cmi +0 -0
- package/lib/ocaml/random.cmt +0 -0
- package/lib/ocaml/random.cmti +0 -0
- package/lib/ocaml/random.ml +273 -0
- package/lib/ocaml/random.mli +102 -0
- package/lib/ocaml/set.cmi +0 -0
- package/lib/ocaml/set.cmt +0 -0
- package/lib/ocaml/set.cmti +0 -0
- package/lib/ocaml/set.ml +526 -0
- package/lib/ocaml/set.mli +266 -0
- package/lib/ocaml/setLabels.cmi +0 -0
- package/lib/ocaml/setLabels.cmt +0 -0
- package/lib/ocaml/setLabels.ml +526 -0
- package/lib/ocaml/setm.cppo.ml +346 -0
- package/lib/ocaml/setm.cppo.mli +126 -0
- package/lib/ocaml/sort.cmi +0 -0
- package/lib/ocaml/sort.cmt +0 -0
- package/lib/ocaml/sort.cmti +0 -0
- package/lib/ocaml/sort.cppo.ml +267 -0
- package/lib/ocaml/sort.cppo.mli +96 -0
- package/lib/ocaml/sort.ml +99 -0
- package/lib/ocaml/sort.mli +44 -0
- package/lib/ocaml/stack.cmi +0 -0
- package/lib/ocaml/stack.cmt +0 -0
- package/lib/ocaml/stack.cmti +0 -0
- package/lib/ocaml/stack.ml +44 -0
- package/lib/ocaml/stack.mli +63 -0
- package/lib/ocaml/stdLabels.cmi +0 -0
- package/lib/ocaml/stdLabels.cmt +0 -0
- package/lib/ocaml/stdLabels.cmti +0 -0
- package/lib/ocaml/stdLabels.ml +24 -0
- package/lib/ocaml/stdLabels.mli +29 -0
- package/lib/ocaml/stream.cmi +0 -0
- package/lib/ocaml/stream.cmt +0 -0
- package/lib/ocaml/stream.cmti +0 -0
- package/lib/ocaml/stream.ml +213 -0
- package/lib/ocaml/stream.mli +108 -0
- package/lib/ocaml/string.cmi +0 -0
- package/lib/ocaml/string.cmt +0 -0
- package/lib/ocaml/string.cmti +0 -0
- package/lib/ocaml/string.ml +190 -0
- package/lib/ocaml/string.mli +286 -0
- package/lib/ocaml/stringLabels.cmi +0 -0
- package/lib/ocaml/stringLabels.cmt +0 -0
- package/lib/ocaml/stringLabels.cmti +0 -0
- package/lib/ocaml/stringLabels.ml +190 -0
- package/lib/ocaml/stringLabels.mli +241 -0
- package/lib/ocaml/sys.cmi +0 -0
- package/lib/ocaml/sys.cmt +0 -0
- package/lib/ocaml/sys.cmti +0 -0
- package/lib/ocaml/sys.ml +135 -0
- package/lib/ocaml/sys.mli +333 -0
- package/lib/ocaml/uchar.cmi +0 -0
- package/lib/ocaml/uchar.cmt +0 -0
- package/lib/ocaml/uchar.cmti +0 -0
- package/lib/ocaml/uchar.ml +58 -0
- package/lib/ocaml/uchar.mli +98 -0
- package/linux/bsb_helper.exe +0 -0
- package/linux/bsc.exe +0 -0
- package/linux/ninja.exe +0 -0
- package/linux/rescript.exe +0 -0
- package/ninja.COPYING +202 -0
- package/package.json +1 -1
- package/vendor/ninja.tar.gz +0 -0
- package/win32/bsb_helper.exe +0 -0
- package/win32/bsc.exe +0 -0
- package/win32/ninja.exe +0 -0
- package/win32/refmt.exe +0 -0
- package/win32/rescript.exe +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
(**************************************************************************)
|
|
2
|
+
(* *)
|
|
3
|
+
(* OCaml *)
|
|
4
|
+
(* *)
|
|
5
|
+
(* Francois Pottier, projet Cristal, INRIA Rocquencourt *)
|
|
6
|
+
(* Jeremie Dimino, Jane Street Europe *)
|
|
7
|
+
(* *)
|
|
8
|
+
(* Copyright 2002 Institut National de Recherche en Informatique et *)
|
|
9
|
+
(* en Automatique. *)
|
|
10
|
+
(* *)
|
|
11
|
+
(* All rights reserved. This file is distributed under the terms of *)
|
|
12
|
+
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
13
|
+
(* special exception on linking described in the file LICENSE. *)
|
|
14
|
+
(* *)
|
|
15
|
+
(**************************************************************************)
|
|
16
|
+
(* Adapted significantly by ReScript Authors *)
|
|
17
|
+
module A = Belt_Array
|
|
18
|
+
|
|
19
|
+
type 'a node = {
|
|
20
|
+
content: 'a;
|
|
21
|
+
mutable next: 'a cell
|
|
22
|
+
}
|
|
23
|
+
and 'a cell = 'a node option
|
|
24
|
+
and 'a t = {
|
|
25
|
+
mutable length: int;
|
|
26
|
+
mutable first: 'a cell;
|
|
27
|
+
mutable last: 'a cell
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
let make () =
|
|
34
|
+
{
|
|
35
|
+
length = 0;
|
|
36
|
+
first = None;
|
|
37
|
+
last = None }
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
let clear q =
|
|
41
|
+
q.length <- 0;
|
|
42
|
+
q.first <- None;
|
|
43
|
+
q.last <- None
|
|
44
|
+
|
|
45
|
+
let add q x =
|
|
46
|
+
let cell = Some {
|
|
47
|
+
content = x;
|
|
48
|
+
next = None } in
|
|
49
|
+
match q.last with
|
|
50
|
+
| None -> (* TODO: better names for intermediate var *)
|
|
51
|
+
q.length <- 1;
|
|
52
|
+
q.first <- cell;
|
|
53
|
+
q.last <- cell
|
|
54
|
+
| Some last ->
|
|
55
|
+
q.length <- q.length + 1;
|
|
56
|
+
last.next <- cell;
|
|
57
|
+
q.last <- cell
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
let peek q =
|
|
62
|
+
match q.first with (* same here could be v *)
|
|
63
|
+
| None -> None
|
|
64
|
+
| Some v -> Some v.content
|
|
65
|
+
|
|
66
|
+
let peekUndefined q =
|
|
67
|
+
match q.first with
|
|
68
|
+
| None -> Js.undefined
|
|
69
|
+
| Some v -> Js.Undefined.return v.content
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
let peekExn q =
|
|
73
|
+
match q.first with
|
|
74
|
+
| None -> raise Not_found
|
|
75
|
+
| Some v -> v.content
|
|
76
|
+
|
|
77
|
+
let pop q =
|
|
78
|
+
match q.first with
|
|
79
|
+
| None -> None
|
|
80
|
+
| Some x ->
|
|
81
|
+
let next = x.next in
|
|
82
|
+
if next = None then
|
|
83
|
+
begin (* only one element*)
|
|
84
|
+
clear q;
|
|
85
|
+
Some x.content
|
|
86
|
+
end
|
|
87
|
+
else begin
|
|
88
|
+
q.length <- q.length - 1;
|
|
89
|
+
q.first <- next;
|
|
90
|
+
Some x.content
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
let popExn q = (* TO fix *)
|
|
94
|
+
match q.first with
|
|
95
|
+
| None -> raise Not_found
|
|
96
|
+
| Some x ->
|
|
97
|
+
let next = x.next in
|
|
98
|
+
if next = None then
|
|
99
|
+
begin (* only one element*)
|
|
100
|
+
clear q;
|
|
101
|
+
x.content
|
|
102
|
+
end
|
|
103
|
+
else begin
|
|
104
|
+
q.length <- q.length - 1;
|
|
105
|
+
q.first <- next;
|
|
106
|
+
x.content
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
let popUndefined q =
|
|
110
|
+
match q.first with
|
|
111
|
+
| None -> Js.undefined
|
|
112
|
+
| Some x ->
|
|
113
|
+
let next = x.next in
|
|
114
|
+
if next = None then
|
|
115
|
+
begin (* only one element*)
|
|
116
|
+
clear q;
|
|
117
|
+
Js.Undefined.return x.content
|
|
118
|
+
end
|
|
119
|
+
else begin
|
|
120
|
+
q.length <- q.length - 1;
|
|
121
|
+
q.first <- next;
|
|
122
|
+
Js.Undefined.return x.content
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
let rec copyAux qRes prev cell =
|
|
126
|
+
match cell with
|
|
127
|
+
| None -> qRes.last <- prev; qRes
|
|
128
|
+
| Some x ->
|
|
129
|
+
let content = x.content in
|
|
130
|
+
let res = Some {content ; next = None} in
|
|
131
|
+
begin match prev with
|
|
132
|
+
| None -> qRes.first <- res
|
|
133
|
+
| Some p -> p.next <- res
|
|
134
|
+
end;
|
|
135
|
+
copyAux qRes res (x.next)
|
|
136
|
+
|
|
137
|
+
let copy q =
|
|
138
|
+
copyAux {length = q.length; first = None; last = None} None q.first
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
let rec copyMapAux qRes prev cell f =
|
|
143
|
+
match cell with
|
|
144
|
+
| None -> qRes.last <- prev; qRes
|
|
145
|
+
| Some x ->
|
|
146
|
+
let content = f x.content [@bs] in
|
|
147
|
+
let res = Some {content; next = None} in
|
|
148
|
+
begin match prev with (*TODO: optimize to remove such check*)
|
|
149
|
+
| None -> qRes.first <- res
|
|
150
|
+
| Some p -> p.next <- res
|
|
151
|
+
end;
|
|
152
|
+
copyMapAux qRes res x.next f
|
|
153
|
+
|
|
154
|
+
let mapU q f =
|
|
155
|
+
copyMapAux {length = q.length; first = None; last = None} None q.first f
|
|
156
|
+
|
|
157
|
+
let map q f = mapU q (fun [@bs] a -> f a)
|
|
158
|
+
|
|
159
|
+
let isEmpty q =
|
|
160
|
+
q.length = 0
|
|
161
|
+
|
|
162
|
+
let size q =
|
|
163
|
+
q.length
|
|
164
|
+
|
|
165
|
+
let rec iterAux cell f =
|
|
166
|
+
match cell with
|
|
167
|
+
| None -> ()
|
|
168
|
+
| Some x ->
|
|
169
|
+
f x.content [@bs];
|
|
170
|
+
iterAux (x.next) f
|
|
171
|
+
|
|
172
|
+
let forEachU q f =
|
|
173
|
+
iterAux q.first f
|
|
174
|
+
|
|
175
|
+
let forEach q f = forEachU q (fun[@bs] a -> f a)
|
|
176
|
+
|
|
177
|
+
let rec foldAux f accu cell =
|
|
178
|
+
match cell with
|
|
179
|
+
| None -> accu
|
|
180
|
+
| Some x ->
|
|
181
|
+
let accu = f accu x.content [@bs] in
|
|
182
|
+
foldAux f accu (x.next)
|
|
183
|
+
|
|
184
|
+
let reduceU q accu f =
|
|
185
|
+
foldAux f accu q.first
|
|
186
|
+
|
|
187
|
+
let reduce q accu f = reduceU q accu (fun[@bs] a b -> f a b)
|
|
188
|
+
|
|
189
|
+
let transfer q1 q2 =
|
|
190
|
+
if q1.length > 0 then
|
|
191
|
+
match q2.last with
|
|
192
|
+
| None ->
|
|
193
|
+
q2.length <- q1.length;
|
|
194
|
+
q2.first <- q1.first;
|
|
195
|
+
q2.last <- q1.last;
|
|
196
|
+
clear q1
|
|
197
|
+
| Some l ->
|
|
198
|
+
q2.length <- (q2.length + q1.length);
|
|
199
|
+
l.next <- q1.first;
|
|
200
|
+
q2.last <- q1.last;
|
|
201
|
+
clear q1
|
|
202
|
+
|
|
203
|
+
let rec fillAux i arr cell =
|
|
204
|
+
match cell with
|
|
205
|
+
| None -> ()
|
|
206
|
+
| Some x ->
|
|
207
|
+
A.setUnsafe arr i x.content;
|
|
208
|
+
fillAux (i + 1) arr (x.next)
|
|
209
|
+
|
|
210
|
+
let toArray x =
|
|
211
|
+
let v = A.makeUninitializedUnsafe x.length in
|
|
212
|
+
fillAux 0 v x.first;
|
|
213
|
+
v
|
|
214
|
+
|
|
215
|
+
(*TODO: optimize *)
|
|
216
|
+
let fromArray arr =
|
|
217
|
+
let q = make () in
|
|
218
|
+
for i = 0 to A.length arr - 1 do
|
|
219
|
+
add q (A.getUnsafe arr i)
|
|
220
|
+
done ;
|
|
221
|
+
q
|
|
222
|
+
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
(**************************************************************************)
|
|
2
|
+
(* *)
|
|
3
|
+
(* OCaml *)
|
|
4
|
+
(* *)
|
|
5
|
+
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
6
|
+
(* *)
|
|
7
|
+
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
8
|
+
(* en Automatique. *)
|
|
9
|
+
(* *)
|
|
10
|
+
(* All rights reserved. This file is distributed under the terms of *)
|
|
11
|
+
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
12
|
+
(* special exception on linking described in the file LICENSE. *)
|
|
13
|
+
(* *)
|
|
14
|
+
(**************************************************************************)
|
|
15
|
+
(* Adapted significantly by ReScript Authors *)
|
|
16
|
+
|
|
17
|
+
(**
|
|
18
|
+
A FIFO (first in first out) queue data structure.
|
|
19
|
+
*)
|
|
20
|
+
|
|
21
|
+
type 'a t
|
|
22
|
+
(**
|
|
23
|
+
The type of queues containing elements of `type('a)`.
|
|
24
|
+
*)
|
|
25
|
+
|
|
26
|
+
val make : unit -> 'a t
|
|
27
|
+
(**
|
|
28
|
+
Returns a new queue, initially empty.
|
|
29
|
+
*)
|
|
30
|
+
|
|
31
|
+
val clear : 'a t -> unit
|
|
32
|
+
(**
|
|
33
|
+
Discard all elements from the queue.
|
|
34
|
+
*)
|
|
35
|
+
|
|
36
|
+
val isEmpty : 'a t -> bool
|
|
37
|
+
(**
|
|
38
|
+
Returns `true` if the given queue is empty, `false` otherwise.
|
|
39
|
+
*)
|
|
40
|
+
|
|
41
|
+
val fromArray : 'a array -> 'a t
|
|
42
|
+
(**
|
|
43
|
+
`fromArray` a is equivalent to `Array.forEach(a, add(q, a));`
|
|
44
|
+
*)
|
|
45
|
+
|
|
46
|
+
val add : 'a t -> 'a -> unit
|
|
47
|
+
(**
|
|
48
|
+
`add(q, x)` adds the element `x` at the end of the queue `q`.
|
|
49
|
+
*)
|
|
50
|
+
|
|
51
|
+
val peek : 'a t -> 'a option
|
|
52
|
+
(**
|
|
53
|
+
`peekOpt(q)` returns the first element in queue `q`, without removing it from the queue.
|
|
54
|
+
*)
|
|
55
|
+
|
|
56
|
+
val peekUndefined : 'a t -> 'a Js.undefined
|
|
57
|
+
(**
|
|
58
|
+
`peekUndefined(q)` returns `undefined` if not found.
|
|
59
|
+
*)
|
|
60
|
+
|
|
61
|
+
val peekExn : 'a t -> 'a
|
|
62
|
+
(**
|
|
63
|
+
raise an exception if `q` is empty
|
|
64
|
+
*)
|
|
65
|
+
|
|
66
|
+
val pop : 'a t -> 'a option
|
|
67
|
+
(**
|
|
68
|
+
`pop(q)` removes and returns the first element in queue `q`.
|
|
69
|
+
*)
|
|
70
|
+
|
|
71
|
+
val popUndefined : 'a t -> 'a Js.undefined
|
|
72
|
+
(**
|
|
73
|
+
`popUndefined(q)` removes and returns the first element in queue `q`. it will return `undefined` if it is already empty.
|
|
74
|
+
*)
|
|
75
|
+
|
|
76
|
+
val popExn : 'a t -> 'a
|
|
77
|
+
(**
|
|
78
|
+
`popExn(q)` raise an exception if q is empty.
|
|
79
|
+
*)
|
|
80
|
+
|
|
81
|
+
val copy : 'a t -> 'a t
|
|
82
|
+
(**
|
|
83
|
+
`copy(q)` returns a fresh queue.
|
|
84
|
+
*)
|
|
85
|
+
|
|
86
|
+
val size : 'a t -> int
|
|
87
|
+
(**
|
|
88
|
+
Returns the number of elements in a queue.
|
|
89
|
+
*)
|
|
90
|
+
|
|
91
|
+
val mapU : 'a t -> (('a -> 'b)[@bs]) -> 'b t
|
|
92
|
+
val map : 'a t -> ('a -> 'b) -> 'b t
|
|
93
|
+
val forEachU : 'a t -> (('a -> unit)[@bs]) -> unit
|
|
94
|
+
|
|
95
|
+
val forEach : 'a t -> ('a -> unit) -> unit
|
|
96
|
+
(**
|
|
97
|
+
`forEach(q, f) applies`f`in turn to all elements of`q`, from the least
|
|
98
|
+
recently entered to the most recently entered. The queue itself is unchanged.
|
|
99
|
+
*)
|
|
100
|
+
|
|
101
|
+
val reduceU : 'a t -> 'b -> (('b -> 'a -> 'b)[@bs]) -> 'b
|
|
102
|
+
|
|
103
|
+
val reduce : 'a t -> 'b -> ('b -> 'a -> 'b) -> 'b
|
|
104
|
+
(**
|
|
105
|
+
`reduce(q, accu, f)` is equivalent to `List.reduce(l, accu, f)`, where `l` is the list of `q`'s elements. The queue remains unchanged.
|
|
106
|
+
*)
|
|
107
|
+
|
|
108
|
+
val transfer : 'a t -> 'a t -> unit
|
|
109
|
+
(**
|
|
110
|
+
`transfer(q1, q2)` adds all of `q1`'s elements at the end of the queue `q2`, then clears `q1`. It is equivalent to the sequence `forEach((x) => add(x, q2), q1);`; clear `q1`, but runs in constant time.
|
|
111
|
+
*)
|
|
112
|
+
|
|
113
|
+
val toArray : 'a t -> 'a array
|
|
114
|
+
(**
|
|
115
|
+
First added will be in the beginning of the array.
|
|
116
|
+
*)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
|
|
2
|
+
(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript
|
|
3
|
+
*
|
|
4
|
+
* This program is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* In addition to the permissions granted to you by the LGPL, you may combine
|
|
10
|
+
* or link a "work that uses the Library" with a publicly distributed version
|
|
11
|
+
* of this file to produce a combined library or application, then distribute
|
|
12
|
+
* that combined work under the terms of your choosing, with no requirement
|
|
13
|
+
* to comply with the obligations normally placed on you by section 4 of the
|
|
14
|
+
* LGPL version 3 (or the corresponding section of a later version of the LGPL
|
|
15
|
+
* should you choose to use a later version).
|
|
16
|
+
*
|
|
17
|
+
* This program is distributed in the hope that it will be useful,
|
|
18
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
20
|
+
* GNU Lesser General Public License for more details.
|
|
21
|
+
*
|
|
22
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
23
|
+
* along with this program; if not, write to the Free Software
|
|
24
|
+
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
|
|
25
|
+
|
|
26
|
+
module Int = Belt_MutableSetInt
|
|
27
|
+
module String = Belt_MutableSetString
|
|
28
|
+
|
|
29
|
+
module N = Belt_internalAVLset
|
|
30
|
+
module A = Belt_Array
|
|
31
|
+
module Sort = Belt_SortArray
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
type ('k, 'id) id = ('k, 'id) Belt_Id.comparable
|
|
35
|
+
type ('key, 'id ) cmp = ('key, 'id) Belt_Id.cmp
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
type ('value,'id) t =
|
|
39
|
+
{
|
|
40
|
+
cmp: ('value, 'id) cmp;
|
|
41
|
+
mutable data: 'value N.t
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
let rec remove0 nt x ~cmp =
|
|
47
|
+
let k = nt.N.value in
|
|
48
|
+
let c = cmp x k [@bs] in
|
|
49
|
+
if c = 0 then
|
|
50
|
+
let {N.left = l; right = r} = nt in
|
|
51
|
+
match l, r with
|
|
52
|
+
| None, _ -> r
|
|
53
|
+
| _, None -> l
|
|
54
|
+
| Some _, Some nr ->
|
|
55
|
+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
|
|
56
|
+
Some (N.balMutate nt)
|
|
57
|
+
else
|
|
58
|
+
begin
|
|
59
|
+
if c < 0 then
|
|
60
|
+
match nt.left with
|
|
61
|
+
| None -> Some nt
|
|
62
|
+
| Some l ->
|
|
63
|
+
nt.left <- (remove0 ~cmp l x );
|
|
64
|
+
Some (N.balMutate nt)
|
|
65
|
+
else
|
|
66
|
+
match nt.right with
|
|
67
|
+
| None -> Some nt
|
|
68
|
+
| Some r ->
|
|
69
|
+
nt.right <- (remove0 ~cmp r x);
|
|
70
|
+
Some (N.balMutate nt)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
let remove d v =
|
|
74
|
+
let oldRoot = d.data in
|
|
75
|
+
match oldRoot with
|
|
76
|
+
| None -> ()
|
|
77
|
+
| Some oldRoot2 ->
|
|
78
|
+
let newRoot = remove0 ~cmp:(Belt_Id.getCmpInternal d.cmp) oldRoot2 v in
|
|
79
|
+
if newRoot != oldRoot then
|
|
80
|
+
d.data <- newRoot
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
let rec removeMany0 t xs i len ~cmp =
|
|
84
|
+
if i < len then
|
|
85
|
+
let ele = A.getUnsafe xs i in
|
|
86
|
+
let u = remove0 t ele ~cmp in
|
|
87
|
+
match u with
|
|
88
|
+
| None -> None
|
|
89
|
+
| Some t -> removeMany0 t xs (i+1) len ~cmp
|
|
90
|
+
else Some t
|
|
91
|
+
|
|
92
|
+
let removeMany d xs =
|
|
93
|
+
let oldRoot = d.data in
|
|
94
|
+
match oldRoot with
|
|
95
|
+
| None -> ()
|
|
96
|
+
| Some nt ->
|
|
97
|
+
let len = A.length xs in
|
|
98
|
+
d.data <-
|
|
99
|
+
(removeMany0 nt xs 0 len
|
|
100
|
+
~cmp:(Belt_Id.getCmpInternal d.cmp))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
let rec removeCheck0 nt x removed ~cmp=
|
|
104
|
+
let k = nt.N.value in
|
|
105
|
+
let c = (Belt_Id.getCmpInternal cmp) x k [@bs] in
|
|
106
|
+
if c = 0 then
|
|
107
|
+
let () = removed .contents<- true in
|
|
108
|
+
let {N.left = l; right = r} = nt in
|
|
109
|
+
match l, r with
|
|
110
|
+
| None, _ -> r
|
|
111
|
+
| _, None -> l
|
|
112
|
+
| Some _, Some nr ->
|
|
113
|
+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
|
|
114
|
+
Some (N.balMutate nt)
|
|
115
|
+
else
|
|
116
|
+
begin
|
|
117
|
+
if c < 0 then
|
|
118
|
+
match nt.left with
|
|
119
|
+
| None -> Some nt
|
|
120
|
+
| Some l ->
|
|
121
|
+
nt.left <- (removeCheck0 ~cmp l x removed);
|
|
122
|
+
Some (N.balMutate nt)
|
|
123
|
+
else
|
|
124
|
+
match nt.right with
|
|
125
|
+
| None -> Some nt
|
|
126
|
+
| Some r ->
|
|
127
|
+
nt.right <- (removeCheck0 ~cmp r x removed);
|
|
128
|
+
Some (N.balMutate nt)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
let removeCheck d v =
|
|
134
|
+
let oldRoot = d.data in
|
|
135
|
+
match oldRoot with
|
|
136
|
+
| None -> false
|
|
137
|
+
| Some oldRoot2 ->
|
|
138
|
+
let removed = ref false in
|
|
139
|
+
let newRoot = removeCheck0 ~cmp:d.cmp oldRoot2 v removed in
|
|
140
|
+
if newRoot != oldRoot then
|
|
141
|
+
d.data <- newRoot ;
|
|
142
|
+
removed.contents
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
let rec addCheck0 t x added ~cmp =
|
|
147
|
+
match t with
|
|
148
|
+
| None ->
|
|
149
|
+
added .contents<- true;
|
|
150
|
+
N.singleton x
|
|
151
|
+
| Some nt ->
|
|
152
|
+
let k = nt.N.value in
|
|
153
|
+
let c = cmp x k [@bs] in
|
|
154
|
+
if c = 0 then t
|
|
155
|
+
else
|
|
156
|
+
let {N.left = l; right = r} = nt in
|
|
157
|
+
(if c < 0 then
|
|
158
|
+
let ll = addCheck0 ~cmp l x added in
|
|
159
|
+
nt.left <- ll
|
|
160
|
+
else
|
|
161
|
+
nt.right <- (addCheck0 ~cmp r x added );
|
|
162
|
+
);
|
|
163
|
+
Some (N.balMutate nt)
|
|
164
|
+
|
|
165
|
+
let addCheck m e =
|
|
166
|
+
let oldRoot = m.data in
|
|
167
|
+
let added = ref false in
|
|
168
|
+
let newRoot = addCheck0 ~cmp:(Belt_Id.getCmpInternal m.cmp) oldRoot e added in
|
|
169
|
+
if newRoot != oldRoot then
|
|
170
|
+
m.data <- newRoot;
|
|
171
|
+
added.contents
|
|
172
|
+
|
|
173
|
+
let add m e =
|
|
174
|
+
let oldRoot = m.data in
|
|
175
|
+
let newRoot = N.addMutate ~cmp:m.cmp oldRoot e in
|
|
176
|
+
if newRoot != oldRoot then
|
|
177
|
+
m.data <- newRoot
|
|
178
|
+
|
|
179
|
+
let addArrayMutate t xs ~cmp =
|
|
180
|
+
let v = ref t in
|
|
181
|
+
for i = 0 to A.length xs - 1 do
|
|
182
|
+
v .contents<- N.addMutate v.contents (A.getUnsafe xs i) ~cmp
|
|
183
|
+
done;
|
|
184
|
+
v.contents
|
|
185
|
+
|
|
186
|
+
let mergeMany d xs =
|
|
187
|
+
d.data <- (addArrayMutate (d.data) xs ~cmp:d.cmp)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
let make (type value) (type identity) ~(id : (value, identity) id) =
|
|
191
|
+
let module M = (val id) in
|
|
192
|
+
{cmp = M.cmp ; data = None}
|
|
193
|
+
|
|
194
|
+
let isEmpty d =
|
|
195
|
+
N.isEmpty (d.data)
|
|
196
|
+
|
|
197
|
+
let minimum d =
|
|
198
|
+
N.minimum (d.data)
|
|
199
|
+
let minUndefined d =
|
|
200
|
+
N.minUndefined (d.data)
|
|
201
|
+
let maximum d =
|
|
202
|
+
N.maximum (d.data)
|
|
203
|
+
let maxUndefined d =
|
|
204
|
+
N.maxUndefined (d.data)
|
|
205
|
+
|
|
206
|
+
let forEachU d f = N.forEachU (d.data) f
|
|
207
|
+
let forEach d f = forEachU d (fun[@bs] a -> f a)
|
|
208
|
+
let reduceU d acc cb = N.reduceU (d.data) acc cb
|
|
209
|
+
let reduce d acc cb = reduceU d acc (fun[@bs] a b -> cb a b)
|
|
210
|
+
let everyU d p = N.everyU (d.data) p
|
|
211
|
+
let every d p = everyU d (fun[@bs] a -> p a)
|
|
212
|
+
let someU d p = N.someU (d.data) p
|
|
213
|
+
let some d p = someU d (fun[@bs] a -> p a)
|
|
214
|
+
let size d =
|
|
215
|
+
N.size (d.data)
|
|
216
|
+
let toList d =
|
|
217
|
+
N.toList (d.data)
|
|
218
|
+
let toArray d =
|
|
219
|
+
N.toArray (d.data)
|
|
220
|
+
|
|
221
|
+
let fromSortedArrayUnsafe (type value) (type identity) xs ~(id : (value,identity) id) : _ t =
|
|
222
|
+
let module M = (val id) in
|
|
223
|
+
{data = (N.fromSortedArrayUnsafe xs); cmp = M.cmp}
|
|
224
|
+
|
|
225
|
+
let checkInvariantInternal d =
|
|
226
|
+
N.checkInvariantInternal (d.data)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
let fromArray (type value) (type identity) data ~(id : (value,identity) id) =
|
|
230
|
+
let module M = (val id) in
|
|
231
|
+
let cmp = M.cmp in
|
|
232
|
+
{cmp; data = (N.fromArray ~cmp data)}
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
let cmp d0 d1 =
|
|
236
|
+
N.cmp ~cmp:(d0.cmp) (d0.data) (d1.data)
|
|
237
|
+
|
|
238
|
+
let eq d0 d1 =
|
|
239
|
+
N.eq ~cmp:(d0.cmp) (d0.data) (d1.data)
|
|
240
|
+
|
|
241
|
+
let get d x =
|
|
242
|
+
N.get ~cmp:d.cmp d.data x
|
|
243
|
+
|
|
244
|
+
let getUndefined d x =
|
|
245
|
+
N.getUndefined ~cmp:d.cmp d.data x
|
|
246
|
+
|
|
247
|
+
let getExn d x =
|
|
248
|
+
N.getExn ~cmp:d.cmp d.data x
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
let split d key =
|
|
252
|
+
let arr = N.toArray d.data in
|
|
253
|
+
let cmp = d.cmp in
|
|
254
|
+
let i = Sort.binarySearchByU arr key (Belt_Id.getCmpInternal cmp) in
|
|
255
|
+
let len = A.length arr in
|
|
256
|
+
if i < 0 then
|
|
257
|
+
let next = - i -1 in
|
|
258
|
+
({
|
|
259
|
+
data = (N.fromSortedArrayAux arr 0 next);
|
|
260
|
+
cmp}
|
|
261
|
+
,
|
|
262
|
+
{data = (N.fromSortedArrayAux arr next (len - next));
|
|
263
|
+
cmp}
|
|
264
|
+
), false
|
|
265
|
+
else
|
|
266
|
+
(
|
|
267
|
+
{data = (N.fromSortedArrayAux arr 0 i);
|
|
268
|
+
cmp},
|
|
269
|
+
{ data = (N.fromSortedArrayAux arr (i+1) (len - i - 1));
|
|
270
|
+
cmp}
|
|
271
|
+
), true
|
|
272
|
+
|
|
273
|
+
let keepU d p =
|
|
274
|
+
{data = (N.keepCopyU d.data p ); cmp = d.cmp}
|
|
275
|
+
|
|
276
|
+
let keep d p = keepU d (fun[@bs] a -> p a)
|
|
277
|
+
|
|
278
|
+
let partitionU d p =
|
|
279
|
+
let cmp = d.cmp in
|
|
280
|
+
let a, b = N.partitionCopyU d.data p in
|
|
281
|
+
{data = a ; cmp}, { data = b; cmp}
|
|
282
|
+
|
|
283
|
+
let partition d p = partitionU d (fun[@bs] a -> p a)
|
|
284
|
+
|
|
285
|
+
let subset a b =
|
|
286
|
+
N.subset ~cmp:a.cmp a.data b.data
|
|
287
|
+
|
|
288
|
+
let intersect a b : _ t =
|
|
289
|
+
let cmp = a.cmp in
|
|
290
|
+
match a.data, b.data with
|
|
291
|
+
| None, _ -> { cmp; data = None}
|
|
292
|
+
| _, None -> { cmp; data = None}
|
|
293
|
+
| Some dataa0, Some datab0 ->
|
|
294
|
+
let sizea, sizeb =
|
|
295
|
+
N.lengthNode dataa0, N.lengthNode datab0 in
|
|
296
|
+
let totalSize = sizea + sizeb in
|
|
297
|
+
let tmp = A.makeUninitializedUnsafe totalSize in
|
|
298
|
+
ignore (N.fillArray dataa0 0 tmp) ;
|
|
299
|
+
ignore (N.fillArray datab0 sizea tmp);
|
|
300
|
+
let p = Belt_Id.getCmpInternal cmp in
|
|
301
|
+
if (p (A.getUnsafe tmp (sizea - 1))
|
|
302
|
+
(A.getUnsafe tmp sizea) [@bs] < 0)
|
|
303
|
+
||
|
|
304
|
+
(p
|
|
305
|
+
(A.getUnsafe tmp (totalSize - 1))
|
|
306
|
+
(A.getUnsafe tmp 0) [@bs] < 0
|
|
307
|
+
)
|
|
308
|
+
then {cmp; data = None}
|
|
309
|
+
else
|
|
310
|
+
let tmp2 = A.makeUninitializedUnsafe (Pervasives.min sizea sizeb) in
|
|
311
|
+
let k = Sort.intersectU tmp 0 sizea tmp sizea sizeb tmp2 0 p in
|
|
312
|
+
{data = (N.fromSortedArrayAux tmp2 0 k);
|
|
313
|
+
cmp}
|
|
314
|
+
|
|
315
|
+
let diff a b : _ t =
|
|
316
|
+
let cmp = a.cmp in
|
|
317
|
+
let dataa = a.data in
|
|
318
|
+
match dataa, b.data with
|
|
319
|
+
| None, _ -> {cmp; data = None}
|
|
320
|
+
| _, None ->
|
|
321
|
+
{data = (N.copy dataa); cmp}
|
|
322
|
+
| Some dataa0, Some datab0
|
|
323
|
+
->
|
|
324
|
+
let sizea, sizeb = N.lengthNode dataa0, N.lengthNode datab0 in
|
|
325
|
+
let totalSize = sizea + sizeb in
|
|
326
|
+
let tmp = A.makeUninitializedUnsafe totalSize in
|
|
327
|
+
ignore ( N.fillArray dataa0 0 tmp) ;
|
|
328
|
+
ignore (N.fillArray datab0 sizea tmp);
|
|
329
|
+
let p = Belt_Id.getCmpInternal cmp in
|
|
330
|
+
if (p (A.getUnsafe tmp (sizea - 1))
|
|
331
|
+
(A.getUnsafe tmp sizea) [@bs] < 0)
|
|
332
|
+
||
|
|
333
|
+
(p
|
|
334
|
+
(A.getUnsafe tmp (totalSize - 1))
|
|
335
|
+
(A.getUnsafe tmp 0) [@bs] < 0
|
|
336
|
+
)
|
|
337
|
+
then {data = (N.copy dataa); cmp}
|
|
338
|
+
else
|
|
339
|
+
let tmp2 = A.makeUninitializedUnsafe sizea in
|
|
340
|
+
let k = Sort.diffU tmp 0 sizea tmp sizea sizeb tmp2 0 p in
|
|
341
|
+
{data = (N.fromSortedArrayAux tmp2 0 k); cmp}
|
|
342
|
+
|
|
343
|
+
let union a b =
|
|
344
|
+
let cmp = a.cmp in
|
|
345
|
+
let dataa, datab = a.data, b.data in
|
|
346
|
+
match dataa, datab with
|
|
347
|
+
| None, _ -> {data = (N.copy datab); cmp}
|
|
348
|
+
| _, None -> {data = (N.copy dataa); cmp}
|
|
349
|
+
| Some dataa0, Some datab0
|
|
350
|
+
->
|
|
351
|
+
let sizea, sizeb = N.lengthNode dataa0, N.lengthNode datab0 in
|
|
352
|
+
let totalSize = sizea + sizeb in
|
|
353
|
+
let tmp = A.makeUninitializedUnsafe totalSize in
|
|
354
|
+
ignore (N.fillArray dataa0 0 tmp );
|
|
355
|
+
ignore (N.fillArray datab0 sizea tmp);
|
|
356
|
+
let p = (Belt_Id.getCmpInternal cmp) in
|
|
357
|
+
if p
|
|
358
|
+
(A.getUnsafe tmp (sizea - 1))
|
|
359
|
+
(A.getUnsafe tmp sizea) [@bs] < 0 then
|
|
360
|
+
{ data = (N.fromSortedArrayAux tmp 0 totalSize); cmp}
|
|
361
|
+
else
|
|
362
|
+
let tmp2 = A.makeUninitializedUnsafe totalSize in
|
|
363
|
+
let k = Sort.unionU tmp 0 sizea tmp sizea sizeb tmp2 0 p in
|
|
364
|
+
{data = (N.fromSortedArrayAux tmp2 0 k); cmp}
|
|
365
|
+
|
|
366
|
+
let has d x =
|
|
367
|
+
N.has ~cmp:d.cmp d.data x
|
|
368
|
+
|
|
369
|
+
let copy d = {data = (N.copy d.data); cmp = d.cmp}
|
|
370
|
+
|
|
371
|
+
|