@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,665 @@
|
|
|
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
|
+
[@@@bs.config {flags = [|"-bs-noassertfalse" |] }]
|
|
26
|
+
type 'value node = {
|
|
27
|
+
mutable value : 'value; [@bs.as "v"]
|
|
28
|
+
mutable height : int; [@bs.as "h"]
|
|
29
|
+
mutable left : 'value t; [@bs.as "l"]
|
|
30
|
+
mutable right : 'value t; [@bs.as "r"]
|
|
31
|
+
}
|
|
32
|
+
and 'value t = 'value node option
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
module A = Belt_Array
|
|
36
|
+
module S = Belt_SortArray
|
|
37
|
+
|
|
38
|
+
type ('a, 'b) cmp = ('a, 'b) Belt_Id.cmp
|
|
39
|
+
|
|
40
|
+
(* Sets are represented by balanced binary trees (the heights of the
|
|
41
|
+
children differ by at most 2 *)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
let [@inline] height (n : _ t) =
|
|
45
|
+
match n with
|
|
46
|
+
| None -> 0
|
|
47
|
+
| Some n -> n.height
|
|
48
|
+
|
|
49
|
+
let rec copy n =
|
|
50
|
+
match n with
|
|
51
|
+
| None -> n
|
|
52
|
+
| Some n ->
|
|
53
|
+
Some { left = copy n.left ; right = copy n.right;
|
|
54
|
+
value = n.value; height = n.height}
|
|
55
|
+
|
|
56
|
+
(* Creates a new node with leftGet son l, value v and right son r.
|
|
57
|
+
We must have all elements of l < v < all elements of r.
|
|
58
|
+
l and r must be balanced and | treeHeight l - treeHeight r | <= 2.
|
|
59
|
+
Inline expansion of treeHeight for better speed. *)
|
|
60
|
+
|
|
61
|
+
let [@inline] calcHeight (hl : int) hr =
|
|
62
|
+
(if hl >= hr then hl else hr) + 1
|
|
63
|
+
|
|
64
|
+
let create (l : _ t) v (r : _ t) =
|
|
65
|
+
let hl = height l in
|
|
66
|
+
let hr = height r in
|
|
67
|
+
Some { left = l; value = v; right = r; height = calcHeight hl hr}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
let singleton x = Some { left = None; value = x; right = None; height = 1}
|
|
71
|
+
|
|
72
|
+
let heightGe l r =
|
|
73
|
+
match l, r with
|
|
74
|
+
| _ , None -> true
|
|
75
|
+
| Some hl, Some hr -> hl.height >= hr.height
|
|
76
|
+
| None, Some _ -> false
|
|
77
|
+
(* Same as create, but performs one step of rebalancing if necessary.
|
|
78
|
+
Assumes l and r balanced and | treeHeight l - treeHeight r | <= 3.
|
|
79
|
+
Inline expansion of create for better speed in the most frequent case
|
|
80
|
+
where no rebalancing is required. *)
|
|
81
|
+
(* TODO: inline all `create` operation, save duplicated `heightGet` calcuation *)
|
|
82
|
+
let bal l v r =
|
|
83
|
+
let hl,hr = height l, height r in
|
|
84
|
+
if hl > hr + 2 then begin
|
|
85
|
+
match l with None -> assert false | Some ({left = ll; right = lr} as l) ->
|
|
86
|
+
if heightGe ll lr then
|
|
87
|
+
create ll l.value (create lr v r)
|
|
88
|
+
else
|
|
89
|
+
match lr with None -> assert false | Some lr ->
|
|
90
|
+
create (create ll l.value lr.left) lr.value (create lr.right v r)
|
|
91
|
+
end else if hr > hl + 2 then
|
|
92
|
+
match r with None -> assert false | Some ({left = rl; right = rr} as r) ->
|
|
93
|
+
if heightGe rr rl then
|
|
94
|
+
create (create l v rl) r.value rr
|
|
95
|
+
else
|
|
96
|
+
match rl with None -> assert false | Some rl ->
|
|
97
|
+
create (create l v rl.left) rl.value (create rl.right r.value rr)
|
|
98
|
+
else
|
|
99
|
+
Some {left = l ; value = v ; right = r; height = calcHeight hl hr}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
let rec min0Aux n =
|
|
105
|
+
match n.left with
|
|
106
|
+
| None -> n.value
|
|
107
|
+
| Some n -> min0Aux n
|
|
108
|
+
|
|
109
|
+
let minimum n =
|
|
110
|
+
match n with
|
|
111
|
+
None -> None
|
|
112
|
+
| Some n -> Some (min0Aux n)
|
|
113
|
+
|
|
114
|
+
let minUndefined n =
|
|
115
|
+
match n with
|
|
116
|
+
| None -> Js.undefined
|
|
117
|
+
| Some n -> Js.Undefined.return (min0Aux n)
|
|
118
|
+
|
|
119
|
+
let rec max0Aux n =
|
|
120
|
+
match n.right with
|
|
121
|
+
| None -> n.value
|
|
122
|
+
| Some n -> max0Aux n
|
|
123
|
+
|
|
124
|
+
let maximum n =
|
|
125
|
+
match n with
|
|
126
|
+
| None -> None
|
|
127
|
+
| Some n -> Some (max0Aux n)
|
|
128
|
+
|
|
129
|
+
let maxUndefined n =
|
|
130
|
+
match n with
|
|
131
|
+
| None -> Js.undefined
|
|
132
|
+
| Some n -> Js.Undefined.return (max0Aux n)
|
|
133
|
+
|
|
134
|
+
let rec removeMinAuxWithRef n v =
|
|
135
|
+
match n.left with
|
|
136
|
+
| None -> v.contents<- n.value ; n.right
|
|
137
|
+
| Some ln -> bal (removeMinAuxWithRef ln v) n.value n.right
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
(* Implementation of the set operations *)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
let isEmpty n = match n with Some _ -> false | None -> true
|
|
147
|
+
|
|
148
|
+
let rec stackAllLeft v s =
|
|
149
|
+
match v with
|
|
150
|
+
| None -> s
|
|
151
|
+
| Some x -> stackAllLeft x.left (x::s)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
let rec forEachU n f =
|
|
155
|
+
match n with
|
|
156
|
+
| None -> ()
|
|
157
|
+
| Some n ->
|
|
158
|
+
forEachU n.left f; f (n.value) [@bs]; forEachU n.right f
|
|
159
|
+
|
|
160
|
+
let forEach n f = forEachU n (fun [@bs] a -> f a)
|
|
161
|
+
|
|
162
|
+
let rec reduceU s accu f =
|
|
163
|
+
match s with
|
|
164
|
+
| None -> accu
|
|
165
|
+
| Some n ->
|
|
166
|
+
reduceU
|
|
167
|
+
n.right
|
|
168
|
+
(f (reduceU n.left accu f) n.value [@bs]) f
|
|
169
|
+
|
|
170
|
+
let reduce s accu f = reduceU s accu (fun [@bs] a b -> f a b)
|
|
171
|
+
|
|
172
|
+
let rec everyU n p =
|
|
173
|
+
match n with
|
|
174
|
+
| None -> true
|
|
175
|
+
| Some n ->
|
|
176
|
+
p (n.value) [@bs] &&
|
|
177
|
+
n.left |. everyU p &&
|
|
178
|
+
n .right |. everyU p
|
|
179
|
+
|
|
180
|
+
let every n p = everyU n (fun [@bs] a -> p a )
|
|
181
|
+
|
|
182
|
+
let rec someU n p =
|
|
183
|
+
match n with
|
|
184
|
+
| None -> false
|
|
185
|
+
| Some n ->
|
|
186
|
+
p n.value [@bs] ||
|
|
187
|
+
someU n.left p ||
|
|
188
|
+
someU n.right p
|
|
189
|
+
|
|
190
|
+
let some n p = someU n (fun[@bs] a -> p a )
|
|
191
|
+
(* `addMinElement v n` and `addMaxElement v n`
|
|
192
|
+
assume that the added v is *strictly*
|
|
193
|
+
smaller (or bigger) than all the present elements in the tree.
|
|
194
|
+
They are only used during the "join" operation which
|
|
195
|
+
respects this precondition.
|
|
196
|
+
*)
|
|
197
|
+
|
|
198
|
+
let rec addMinElement n v =
|
|
199
|
+
match n with
|
|
200
|
+
| None -> singleton v
|
|
201
|
+
| Some n ->
|
|
202
|
+
bal (addMinElement n.left v) n.value n.right
|
|
203
|
+
|
|
204
|
+
let rec addMaxElement n v =
|
|
205
|
+
match n with
|
|
206
|
+
| None -> singleton v
|
|
207
|
+
| Some n ->
|
|
208
|
+
bal n.left (n.value) (addMaxElement n.right v)
|
|
209
|
+
|
|
210
|
+
(* `join ln v rn` Some a balanced tree simliar to `create ln v rn`
|
|
211
|
+
bal, but no assumptions are made on the
|
|
212
|
+
relative heights of `ln` and `rn`. *)
|
|
213
|
+
|
|
214
|
+
let rec joinShared ln v rn =
|
|
215
|
+
match (ln, rn) with
|
|
216
|
+
(None, _) -> addMinElement rn v
|
|
217
|
+
| (_, None) -> addMaxElement ln v
|
|
218
|
+
| Some l, Some r ->
|
|
219
|
+
let lh = l.height in
|
|
220
|
+
let rh = r.height in
|
|
221
|
+
if lh > rh + 2 then bal l.left l.value (joinShared l.right v rn) else
|
|
222
|
+
if rh > lh + 2 then bal (joinShared ln v r.left) r.value r.right else
|
|
223
|
+
create ln v rn
|
|
224
|
+
|
|
225
|
+
(* `concat l r`
|
|
226
|
+
No assumption on the heights of l and r. *)
|
|
227
|
+
|
|
228
|
+
let concatShared t1 t2 =
|
|
229
|
+
match (t1, t2) with
|
|
230
|
+
(None, _) -> t2
|
|
231
|
+
| (_, None) -> t1
|
|
232
|
+
| (_, Some t2n) ->
|
|
233
|
+
let v = ref t2n.value in
|
|
234
|
+
let t2r = removeMinAuxWithRef t2n v in
|
|
235
|
+
joinShared t1 v.contents t2r
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
let rec partitionSharedU n p =
|
|
240
|
+
match n with
|
|
241
|
+
| None -> (None, None)
|
|
242
|
+
| Some n ->
|
|
243
|
+
let value = n.value in
|
|
244
|
+
let (lt, lf) = partitionSharedU n.left p in
|
|
245
|
+
let pv = p value [@bs] in
|
|
246
|
+
let (rt, rf) = partitionSharedU n.right p in
|
|
247
|
+
if pv
|
|
248
|
+
then (joinShared lt value rt, concatShared lf rf)
|
|
249
|
+
else (concatShared lt rt, joinShared lf value rf)
|
|
250
|
+
|
|
251
|
+
let partitionShared n p = partitionSharedU n (fun [@bs] a -> p a)
|
|
252
|
+
|
|
253
|
+
let rec lengthNode n =
|
|
254
|
+
let {left = l; right = r} = n in
|
|
255
|
+
let sizeL =
|
|
256
|
+
match l with
|
|
257
|
+
| None -> 0
|
|
258
|
+
| Some l ->
|
|
259
|
+
lengthNode l in
|
|
260
|
+
let sizeR =
|
|
261
|
+
match r with
|
|
262
|
+
| None -> 0
|
|
263
|
+
| Some r -> lengthNode r in
|
|
264
|
+
1 + sizeL + sizeR
|
|
265
|
+
|
|
266
|
+
let size n =
|
|
267
|
+
match n with
|
|
268
|
+
| None -> 0
|
|
269
|
+
| Some n ->
|
|
270
|
+
lengthNode n
|
|
271
|
+
|
|
272
|
+
let rec toListAux n accu =
|
|
273
|
+
match n with
|
|
274
|
+
| None -> accu
|
|
275
|
+
| Some n ->
|
|
276
|
+
toListAux
|
|
277
|
+
n.left
|
|
278
|
+
((n.value) :: toListAux n.right accu)
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
let toList s =
|
|
282
|
+
toListAux s []
|
|
283
|
+
|
|
284
|
+
let rec checkInvariantInternal (v : _ t) =
|
|
285
|
+
match v with
|
|
286
|
+
| None -> ()
|
|
287
|
+
| Some n ->
|
|
288
|
+
let {left = l; right = r} = n in
|
|
289
|
+
let diff = height l - height r in
|
|
290
|
+
assert (diff <=2 && diff >= -2);
|
|
291
|
+
checkInvariantInternal l;
|
|
292
|
+
checkInvariantInternal r
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
let rec fillArray n i arr =
|
|
297
|
+
let {left = l; value = v; right = r} = n in
|
|
298
|
+
let next =
|
|
299
|
+
match l with
|
|
300
|
+
| None -> i
|
|
301
|
+
| Some l ->
|
|
302
|
+
fillArray l i arr in
|
|
303
|
+
A.setUnsafe arr next v ;
|
|
304
|
+
let rnext = next + 1 in
|
|
305
|
+
match r with
|
|
306
|
+
| None -> rnext
|
|
307
|
+
| Some r ->
|
|
308
|
+
fillArray r rnext arr
|
|
309
|
+
|
|
310
|
+
type cursor =
|
|
311
|
+
{ mutable forward : int; mutable backward : int }
|
|
312
|
+
|
|
313
|
+
let rec fillArrayWithPartition n cursor arr p =
|
|
314
|
+
let {left = l; value = v; right = r} = n in
|
|
315
|
+
(match l with
|
|
316
|
+
| None -> ()
|
|
317
|
+
| Some l ->
|
|
318
|
+
fillArrayWithPartition l cursor arr p);
|
|
319
|
+
(if p v [@bs] then begin
|
|
320
|
+
let c = cursor.forward in
|
|
321
|
+
A.setUnsafe arr c v;
|
|
322
|
+
cursor.forward <- (c + 1)
|
|
323
|
+
end
|
|
324
|
+
else begin
|
|
325
|
+
let c = cursor.backward in
|
|
326
|
+
A.setUnsafe arr c v ;
|
|
327
|
+
cursor.backward <- (c - 1)
|
|
328
|
+
end);
|
|
329
|
+
match r with
|
|
330
|
+
| None -> ()
|
|
331
|
+
| Some r ->
|
|
332
|
+
fillArrayWithPartition r cursor arr p
|
|
333
|
+
|
|
334
|
+
let rec fillArrayWithFilter n i arr p =
|
|
335
|
+
let {left = l; value = v; right = r} = n in
|
|
336
|
+
let next =
|
|
337
|
+
match l with
|
|
338
|
+
| None -> i
|
|
339
|
+
| Some l ->
|
|
340
|
+
fillArrayWithFilter l i arr p in
|
|
341
|
+
let rnext =
|
|
342
|
+
if p v [@bs] then
|
|
343
|
+
(A.setUnsafe arr next v;
|
|
344
|
+
next + 1
|
|
345
|
+
)
|
|
346
|
+
else next in
|
|
347
|
+
match r with
|
|
348
|
+
| None -> rnext
|
|
349
|
+
| Some r ->
|
|
350
|
+
fillArrayWithFilter r rnext arr p
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
let toArray n =
|
|
354
|
+
match n with
|
|
355
|
+
| None -> [||]
|
|
356
|
+
| Some n ->
|
|
357
|
+
let size = lengthNode n in
|
|
358
|
+
let v = A.makeUninitializedUnsafe size in
|
|
359
|
+
ignore (fillArray n 0 v : int); (* may add assertion *)
|
|
360
|
+
v
|
|
361
|
+
|
|
362
|
+
let rec fromSortedArrayRevAux arr off len =
|
|
363
|
+
match len with
|
|
364
|
+
| 0 -> None
|
|
365
|
+
| 1 -> singleton (A.getUnsafe arr off)
|
|
366
|
+
| 2 ->
|
|
367
|
+
let x0,x1 = A.(getUnsafe arr off, getUnsafe arr (off - 1) )
|
|
368
|
+
in
|
|
369
|
+
Some { left = (singleton x0) ; value = x1; height = 2; right = None}
|
|
370
|
+
| 3 ->
|
|
371
|
+
let x0,x1,x2 =
|
|
372
|
+
A.(getUnsafe arr off,
|
|
373
|
+
getUnsafe arr (off - 1),
|
|
374
|
+
getUnsafe arr (off - 2)) in
|
|
375
|
+
Some { left = (singleton x0);
|
|
376
|
+
right = (singleton x2);
|
|
377
|
+
value = x1;
|
|
378
|
+
height = 2}
|
|
379
|
+
| _ ->
|
|
380
|
+
let nl = len / 2 in
|
|
381
|
+
let left = fromSortedArrayRevAux arr off nl in
|
|
382
|
+
let mid = A.getUnsafe arr (off - nl) in
|
|
383
|
+
let right =
|
|
384
|
+
fromSortedArrayRevAux arr (off - nl - 1) (len - nl - 1) in
|
|
385
|
+
create left mid right
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
let rec fromSortedArrayAux arr off len =
|
|
389
|
+
match len with
|
|
390
|
+
| 0 -> None
|
|
391
|
+
| 1 -> singleton (A.getUnsafe arr off)
|
|
392
|
+
| 2 ->
|
|
393
|
+
let x0,x1 = A.(getUnsafe arr off, getUnsafe arr (off + 1) )
|
|
394
|
+
in
|
|
395
|
+
Some { left = (singleton x0); value = x1; height = 2; right = None}
|
|
396
|
+
| 3 ->
|
|
397
|
+
let x0,x1,x2 =
|
|
398
|
+
A.(getUnsafe arr off,
|
|
399
|
+
getUnsafe arr (off + 1),
|
|
400
|
+
getUnsafe arr (off + 2)) in
|
|
401
|
+
Some { left = (singleton x0);
|
|
402
|
+
right = (singleton x2);
|
|
403
|
+
value = x1;
|
|
404
|
+
height = 2}
|
|
405
|
+
| _ ->
|
|
406
|
+
let nl = len / 2 in
|
|
407
|
+
let left = fromSortedArrayAux arr off nl in
|
|
408
|
+
let mid = A.getUnsafe arr (off + nl) in
|
|
409
|
+
let right =
|
|
410
|
+
fromSortedArrayAux arr (off + nl + 1) (len - nl - 1) in
|
|
411
|
+
create left mid right
|
|
412
|
+
|
|
413
|
+
let fromSortedArrayUnsafe arr =
|
|
414
|
+
fromSortedArrayAux arr 0 (A.length arr)
|
|
415
|
+
|
|
416
|
+
let rec keepSharedU n p =
|
|
417
|
+
match n with
|
|
418
|
+
| None -> None
|
|
419
|
+
| Some n ->
|
|
420
|
+
let {left = l; value = v; right = r} = n in
|
|
421
|
+
let newL = keepSharedU l p in
|
|
422
|
+
let pv = p v [@bs] in
|
|
423
|
+
let newR = keepSharedU r p in
|
|
424
|
+
if pv then
|
|
425
|
+
(if l == newL && r == newR then
|
|
426
|
+
Some n
|
|
427
|
+
else joinShared newL v newR)
|
|
428
|
+
else concatShared newL newR
|
|
429
|
+
|
|
430
|
+
let keepShared n p = keepSharedU n (fun [@bs] a -> p a)
|
|
431
|
+
(* ATT: functional methods in general can be shared with
|
|
432
|
+
imperative methods, however, it does not apply when functional
|
|
433
|
+
methods makes use of referential equality
|
|
434
|
+
*)
|
|
435
|
+
|
|
436
|
+
let keepCopyU n p : _ t =
|
|
437
|
+
match n with
|
|
438
|
+
| None -> None
|
|
439
|
+
| Some n ->
|
|
440
|
+
let size = lengthNode n in
|
|
441
|
+
let v = A.makeUninitializedUnsafe size in
|
|
442
|
+
let last =
|
|
443
|
+
fillArrayWithFilter n 0 v p in
|
|
444
|
+
fromSortedArrayAux v 0 last
|
|
445
|
+
|
|
446
|
+
let keepCopy n p = keepCopyU n (fun [@bs] x -> p x)
|
|
447
|
+
|
|
448
|
+
let partitionCopyU n p =
|
|
449
|
+
match n with
|
|
450
|
+
| None -> None, None
|
|
451
|
+
| Some n ->
|
|
452
|
+
let size = lengthNode n in
|
|
453
|
+
let v = A.makeUninitializedUnsafe size in
|
|
454
|
+
let backward = size - 1 in
|
|
455
|
+
let cursor = { forward = 0; backward} in
|
|
456
|
+
fillArrayWithPartition n cursor v p ;
|
|
457
|
+
let forwardLen = cursor.forward in
|
|
458
|
+
fromSortedArrayAux v 0 forwardLen,
|
|
459
|
+
fromSortedArrayRevAux v backward (size - forwardLen)
|
|
460
|
+
|
|
461
|
+
let partitionCopy n p = partitionCopyU n (fun[@bs] a -> p a)
|
|
462
|
+
|
|
463
|
+
let rec has (t: _ t) x ~cmp =
|
|
464
|
+
match t with
|
|
465
|
+
| None -> false
|
|
466
|
+
| Some n ->
|
|
467
|
+
let v = n.value in
|
|
468
|
+
let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
|
|
469
|
+
c = 0 || has ~cmp (if c < 0 then n.left else n.right) x
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
let rec compareAux e1 e2 ~cmp =
|
|
473
|
+
match e1,e2 with
|
|
474
|
+
| h1::t1, h2::t2 ->
|
|
475
|
+
let c = (Belt_Id.getCmpInternal cmp) h1.value h2.value [@bs] in
|
|
476
|
+
if c = 0 then
|
|
477
|
+
compareAux ~cmp
|
|
478
|
+
(h1 .right |. stackAllLeft t1)
|
|
479
|
+
(h2 .right |. stackAllLeft t2)
|
|
480
|
+
else c
|
|
481
|
+
| _, _ -> 0
|
|
482
|
+
|
|
483
|
+
let cmp s1 s2 ~cmp =
|
|
484
|
+
let len1,len2 = size s1, size s2 in
|
|
485
|
+
if len1 = len2 then
|
|
486
|
+
compareAux ~cmp (stackAllLeft s1 []) (stackAllLeft s2 [])
|
|
487
|
+
else if len1 < len2 then -1 else 1
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
let eq s1 s2 ~cmp:c =
|
|
491
|
+
cmp ~cmp:c s1 s2 = 0
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
let rec subset (s1 : _ t) (s2 : _ t) ~cmp =
|
|
495
|
+
match (s1, s2) with
|
|
496
|
+
| None, _ -> true
|
|
497
|
+
| _, None -> false
|
|
498
|
+
| Some t1 , Some t2 ->
|
|
499
|
+
let {left = l1; value = v1; right = r1} = t1 in
|
|
500
|
+
let {left = l2; value = v2; right = r2} = t2 in
|
|
501
|
+
let c = (Belt_Id.getCmpInternal cmp) v1 v2 [@bs] in
|
|
502
|
+
if c = 0 then
|
|
503
|
+
subset ~cmp l1 l2 && subset ~cmp r1 r2
|
|
504
|
+
else if c < 0 then
|
|
505
|
+
subset ~cmp (create l1 v1 None) l2 &&
|
|
506
|
+
subset ~cmp r1 s2
|
|
507
|
+
else
|
|
508
|
+
subset ~cmp (create None v1 r1 ) r2 &&
|
|
509
|
+
subset ~cmp l1 s2
|
|
510
|
+
|
|
511
|
+
let rec get (n : _ t) x ~cmp =
|
|
512
|
+
match n with
|
|
513
|
+
None -> None
|
|
514
|
+
| Some t (* Node(l, v, r, _) *) ->
|
|
515
|
+
let v = t.value in
|
|
516
|
+
let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
|
|
517
|
+
if c = 0 then Some v
|
|
518
|
+
else get ~cmp (if c < 0 then t.left else t.right) x
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
let rec getUndefined (n : _ t) x ~cmp =
|
|
522
|
+
match n with
|
|
523
|
+
None -> Js.Undefined.empty
|
|
524
|
+
| Some t (* Node(l, v, r, _) *) ->
|
|
525
|
+
let v = t.value in
|
|
526
|
+
let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
|
|
527
|
+
if c = 0 then Js.Undefined.return v
|
|
528
|
+
else getUndefined ~cmp (if c < 0 then t.left else t.right) x
|
|
529
|
+
|
|
530
|
+
let rec getExn (n : _ t) x ~cmp =
|
|
531
|
+
match n with
|
|
532
|
+
None -> raise Not_found
|
|
533
|
+
| Some t (* Node(l, v, r, _) *) ->
|
|
534
|
+
let v = t.value in
|
|
535
|
+
let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
|
|
536
|
+
if c = 0 then v
|
|
537
|
+
else getExn ~cmp (if c < 0 then t.left else t.right) x
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
(******************************************************************)
|
|
541
|
+
|
|
542
|
+
(*
|
|
543
|
+
L rotation, Some root node
|
|
544
|
+
*)
|
|
545
|
+
let rotateWithLeftChild k2 =
|
|
546
|
+
match k2 .left with
|
|
547
|
+
| None -> assert false
|
|
548
|
+
| Some k1 ->
|
|
549
|
+
k2 .left <- k1 .right;
|
|
550
|
+
k1 .right <- Some k2 ;
|
|
551
|
+
let hlk2, hrk2 = k2 .left|. height , k2 .right |. height in
|
|
552
|
+
k2 .height <- (Pervasives.max hlk2 hrk2 + 1);
|
|
553
|
+
let hlk1, hk2 = k1 .left|. height , k2 .height in
|
|
554
|
+
k1 .height <- (Pervasives.max hlk1 hk2 + 1);
|
|
555
|
+
k1
|
|
556
|
+
(* right rotation *)
|
|
557
|
+
let rotateWithRightChild k1 =
|
|
558
|
+
match k1 .right with None -> assert false
|
|
559
|
+
| Some k2 ->
|
|
560
|
+
k1 .right <- k2 .left;
|
|
561
|
+
k2 .left <- Some k1;
|
|
562
|
+
let hlk1, hrk1 = k1.left |. height, k1 .right |. height in
|
|
563
|
+
k1 .height <- (Pervasives.max hlk1 hrk1 + 1);
|
|
564
|
+
let hrk2, hk1 = k2 .right |. height, k1 .height in
|
|
565
|
+
k2 .height <- (Pervasives.max hrk2 hk1 + 1);
|
|
566
|
+
k2
|
|
567
|
+
|
|
568
|
+
(*
|
|
569
|
+
double l rotation
|
|
570
|
+
*)
|
|
571
|
+
let doubleWithLeftChild k3 =
|
|
572
|
+
match k3.left with
|
|
573
|
+
| None -> assert false
|
|
574
|
+
| Some k3l ->
|
|
575
|
+
let v = k3l |. rotateWithRightChild |. Some in
|
|
576
|
+
k3 .left <- v;
|
|
577
|
+
k3 |. rotateWithLeftChild
|
|
578
|
+
(** *)
|
|
579
|
+
|
|
580
|
+
let doubleWithRightChild k2 =
|
|
581
|
+
match k2.right with
|
|
582
|
+
| None -> assert false
|
|
583
|
+
| Some k2r ->
|
|
584
|
+
let v = k2r |. rotateWithLeftChild |. Some in
|
|
585
|
+
k2 .right <- v;
|
|
586
|
+
rotateWithRightChild k2
|
|
587
|
+
|
|
588
|
+
let heightUpdateMutate t =
|
|
589
|
+
let hlt, hrt = t .left|. height, t .right |. height in
|
|
590
|
+
t .height <- (Pervasives.max hlt hrt + 1);
|
|
591
|
+
t
|
|
592
|
+
|
|
593
|
+
let balMutate nt =
|
|
594
|
+
let {left = l; right = r} = nt in
|
|
595
|
+
let hl, hr = (height l, height r) in
|
|
596
|
+
if hl > 2 + hr then
|
|
597
|
+
match l with None -> assert false
|
|
598
|
+
| Some {left = ll; right = lr} ->
|
|
599
|
+
(if heightGe ll lr then
|
|
600
|
+
heightUpdateMutate (rotateWithLeftChild nt)
|
|
601
|
+
else
|
|
602
|
+
heightUpdateMutate (doubleWithLeftChild nt)
|
|
603
|
+
)
|
|
604
|
+
else
|
|
605
|
+
if hr > 2 + hl then
|
|
606
|
+
match r with None -> assert false
|
|
607
|
+
| Some {left = rl; right = rr} ->
|
|
608
|
+
(if heightGe rr rl then
|
|
609
|
+
heightUpdateMutate (rotateWithRightChild nt)
|
|
610
|
+
else
|
|
611
|
+
heightUpdateMutate (doubleWithRightChild nt)
|
|
612
|
+
)
|
|
613
|
+
else
|
|
614
|
+
begin
|
|
615
|
+
nt.height <- (Pervasives.max hl hr + 1);
|
|
616
|
+
nt
|
|
617
|
+
end
|
|
618
|
+
|
|
619
|
+
let rec addMutate ~cmp (t : _ t) x =
|
|
620
|
+
match t with
|
|
621
|
+
| None -> singleton x
|
|
622
|
+
| Some nt ->
|
|
623
|
+
let k = nt.value in
|
|
624
|
+
let c = (Belt_Id.getCmpInternal cmp) x k [@bs] in
|
|
625
|
+
if c = 0 then t
|
|
626
|
+
else
|
|
627
|
+
let {left = l; right = r} = nt in
|
|
628
|
+
(if c < 0 then
|
|
629
|
+
let ll = addMutate ~cmp l x in
|
|
630
|
+
nt.left <- ll
|
|
631
|
+
else
|
|
632
|
+
nt.right <- (addMutate ~cmp r x);
|
|
633
|
+
);
|
|
634
|
+
Some (balMutate nt)
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
let fromArray (xs : _ array) ~cmp =
|
|
638
|
+
let len = A.length xs in
|
|
639
|
+
if len = 0 then None
|
|
640
|
+
else
|
|
641
|
+
let next = ref (S.strictlySortedLengthU xs
|
|
642
|
+
(fun [@bs] x y -> (Belt_Id.getCmpInternal cmp) x y [@bs] < 0)) in
|
|
643
|
+
let result =
|
|
644
|
+
ref (if next.contents >= 0 then
|
|
645
|
+
fromSortedArrayAux xs 0 next.contents
|
|
646
|
+
else begin
|
|
647
|
+
next .contents<- - next.contents ;
|
|
648
|
+
fromSortedArrayRevAux xs (next.contents - 1) next.contents
|
|
649
|
+
end) in
|
|
650
|
+
for i = next.contents to len - 1 do
|
|
651
|
+
result .contents<- addMutate ~cmp result.contents (A.getUnsafe xs i)
|
|
652
|
+
done ;
|
|
653
|
+
result.contents
|
|
654
|
+
|
|
655
|
+
let rec removeMinAuxWithRootMutate nt n =
|
|
656
|
+
let {right = rn; left = ln} = n in
|
|
657
|
+
match ln with
|
|
658
|
+
| None ->
|
|
659
|
+
nt.value <- (n.value);
|
|
660
|
+
rn
|
|
661
|
+
| Some ln ->
|
|
662
|
+
n.left <- (removeMinAuxWithRootMutate nt ln);
|
|
663
|
+
Some (balMutate n)
|
|
664
|
+
|
|
665
|
+
|