@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,480 @@
|
|
|
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
|
+
|
|
16
|
+
module type OrderedType =
|
|
17
|
+
sig
|
|
18
|
+
type t
|
|
19
|
+
val compare: t -> t -> int
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
module type S =
|
|
23
|
+
sig
|
|
24
|
+
type key
|
|
25
|
+
type +'a t
|
|
26
|
+
val empty: 'a t
|
|
27
|
+
val is_empty: 'a t -> bool
|
|
28
|
+
val mem: key -> 'a t -> bool
|
|
29
|
+
val add: key:key -> data:'a -> 'a t -> 'a t
|
|
30
|
+
val update: key:key -> f:('a option -> 'a option) -> 'a t -> 'a t
|
|
31
|
+
val singleton: key -> 'a -> 'a t
|
|
32
|
+
val remove: key -> 'a t -> 'a t
|
|
33
|
+
val merge:
|
|
34
|
+
f:(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
|
|
35
|
+
val union: f:(key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
|
|
36
|
+
val compare: cmp:('a -> 'a -> int) -> 'a t -> 'a t -> int
|
|
37
|
+
val equal: cmp:('a -> 'a -> bool) -> 'a t -> 'a t -> bool
|
|
38
|
+
val iter: f:(key:key -> data:'a -> unit) -> 'a t -> unit
|
|
39
|
+
val fold: f:(key:key -> data:'a -> 'b -> 'b) -> 'a t -> init:'b -> 'b
|
|
40
|
+
val for_all: f:(key -> 'a -> bool) -> 'a t -> bool
|
|
41
|
+
val exists: f:(key -> 'a -> bool) -> 'a t -> bool
|
|
42
|
+
val filter: f:(key -> 'a -> bool) -> 'a t -> 'a t
|
|
43
|
+
val partition: f:(key -> 'a -> bool) -> 'a t -> 'a t * 'a t
|
|
44
|
+
val cardinal: 'a t -> int
|
|
45
|
+
val bindings: 'a t -> (key * 'a) list
|
|
46
|
+
val min_binding: 'a t -> (key * 'a)
|
|
47
|
+
val min_binding_opt: 'a t -> (key * 'a) option
|
|
48
|
+
val max_binding: 'a t -> (key * 'a)
|
|
49
|
+
val max_binding_opt: 'a t -> (key * 'a) option
|
|
50
|
+
val choose: 'a t -> (key * 'a)
|
|
51
|
+
val choose_opt: 'a t -> (key * 'a) option
|
|
52
|
+
val split: key -> 'a t -> 'a t * 'a option * 'a t
|
|
53
|
+
val find: key -> 'a t -> 'a
|
|
54
|
+
val find_opt: key -> 'a t -> 'a option
|
|
55
|
+
val find_first: f:(key -> bool) -> 'a t -> key * 'a
|
|
56
|
+
val find_first_opt: f:(key -> bool) -> 'a t -> (key * 'a) option
|
|
57
|
+
val find_last: f:(key -> bool) -> 'a t -> key * 'a
|
|
58
|
+
val find_last_opt: f:(key -> bool) -> 'a t -> (key * 'a) option
|
|
59
|
+
val map: f:('a -> 'b) -> 'a t -> 'b t
|
|
60
|
+
val mapi: f:(key -> 'a -> 'b) -> 'a t -> 'b t
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
module Make(Ord: OrderedType) = struct
|
|
64
|
+
|
|
65
|
+
type key = Ord.t
|
|
66
|
+
|
|
67
|
+
type 'a t =
|
|
68
|
+
Empty
|
|
69
|
+
| Node of {l:'a t; v:key; d:'a; r:'a t; h:int}
|
|
70
|
+
|
|
71
|
+
let height = function
|
|
72
|
+
Empty -> 0
|
|
73
|
+
| Node {h} -> h
|
|
74
|
+
|
|
75
|
+
let create l x d r =
|
|
76
|
+
let hl = height l and hr = height r in
|
|
77
|
+
Node{l; v=x; d; r; h=(if hl >= hr then hl + 1 else hr + 1)}
|
|
78
|
+
|
|
79
|
+
let singleton x d = Node{l=Empty; v=x; d; r=Empty; h=1}
|
|
80
|
+
|
|
81
|
+
let bal l x d r =
|
|
82
|
+
let hl = match l with Empty -> 0 | Node {h} -> h in
|
|
83
|
+
let hr = match r with Empty -> 0 | Node {h} -> h in
|
|
84
|
+
if hl > hr + 2 then begin
|
|
85
|
+
match l with
|
|
86
|
+
Empty -> invalid_arg "Map.bal"
|
|
87
|
+
| Node{l=ll; v=lv; d=ld; r=lr} ->
|
|
88
|
+
if height ll >= height lr then
|
|
89
|
+
create ll lv ld (create lr x d r)
|
|
90
|
+
else begin
|
|
91
|
+
match lr with
|
|
92
|
+
Empty -> invalid_arg "Map.bal"
|
|
93
|
+
| Node{l=lrl; v=lrv; d=lrd; r=lrr}->
|
|
94
|
+
create (create ll lv ld lrl) lrv lrd (create lrr x d r)
|
|
95
|
+
end
|
|
96
|
+
end else if hr > hl + 2 then begin
|
|
97
|
+
match r with
|
|
98
|
+
Empty -> invalid_arg "Map.bal"
|
|
99
|
+
| Node{l=rl; v=rv; d=rd; r=rr} ->
|
|
100
|
+
if height rr >= height rl then
|
|
101
|
+
create (create l x d rl) rv rd rr
|
|
102
|
+
else begin
|
|
103
|
+
match rl with
|
|
104
|
+
Empty -> invalid_arg "Map.bal"
|
|
105
|
+
| Node{l=rll; v=rlv; d=rld; r=rlr} ->
|
|
106
|
+
create (create l x d rll) rlv rld (create rlr rv rd rr)
|
|
107
|
+
end
|
|
108
|
+
end else
|
|
109
|
+
Node{l; v=x; d; r; h=(if hl >= hr then hl + 1 else hr + 1)}
|
|
110
|
+
|
|
111
|
+
let empty = Empty
|
|
112
|
+
|
|
113
|
+
let is_empty = function Empty -> true | _ -> false
|
|
114
|
+
|
|
115
|
+
let rec add ~key:x ~data = function
|
|
116
|
+
Empty ->
|
|
117
|
+
Node{l=Empty; v=x; d=data; r=Empty; h=1}
|
|
118
|
+
| Node {l; v; d; r; h} as m ->
|
|
119
|
+
let c = Ord.compare x v in
|
|
120
|
+
if c = 0 then
|
|
121
|
+
if d == data then m else Node{l; v=x; d=data; r; h}
|
|
122
|
+
else if c < 0 then
|
|
123
|
+
let ll = add ~key:x ~data l in
|
|
124
|
+
if l == ll then m else bal ll v d r
|
|
125
|
+
else
|
|
126
|
+
let rr = add ~key:x ~data r in
|
|
127
|
+
if r == rr then m else bal l v d rr
|
|
128
|
+
|
|
129
|
+
let rec find x = function
|
|
130
|
+
Empty ->
|
|
131
|
+
raise Not_found
|
|
132
|
+
| Node {l; v; d; r} ->
|
|
133
|
+
let c = Ord.compare x v in
|
|
134
|
+
if c = 0 then d
|
|
135
|
+
else find x (if c < 0 then l else r)
|
|
136
|
+
|
|
137
|
+
let rec find_first_aux v0 d0 f = function
|
|
138
|
+
Empty ->
|
|
139
|
+
(v0, d0)
|
|
140
|
+
| Node {l; v; d; r} ->
|
|
141
|
+
if f v then
|
|
142
|
+
find_first_aux v d f l
|
|
143
|
+
else
|
|
144
|
+
find_first_aux v0 d0 f r
|
|
145
|
+
|
|
146
|
+
let rec find_first ~f = function
|
|
147
|
+
Empty ->
|
|
148
|
+
raise Not_found
|
|
149
|
+
| Node {l; v; d; r} ->
|
|
150
|
+
if f v then
|
|
151
|
+
find_first_aux v d f l
|
|
152
|
+
else
|
|
153
|
+
find_first ~f r
|
|
154
|
+
|
|
155
|
+
let rec find_first_opt_aux v0 d0 f = function
|
|
156
|
+
Empty ->
|
|
157
|
+
Some (v0, d0)
|
|
158
|
+
| Node {l; v; d; r} ->
|
|
159
|
+
if f v then
|
|
160
|
+
find_first_opt_aux v d f l
|
|
161
|
+
else
|
|
162
|
+
find_first_opt_aux v0 d0 f r
|
|
163
|
+
|
|
164
|
+
let rec find_first_opt ~f = function
|
|
165
|
+
Empty ->
|
|
166
|
+
None
|
|
167
|
+
| Node {l; v; d; r} ->
|
|
168
|
+
if f v then
|
|
169
|
+
find_first_opt_aux v d f l
|
|
170
|
+
else
|
|
171
|
+
find_first_opt ~f r
|
|
172
|
+
|
|
173
|
+
let rec find_last_aux v0 d0 f = function
|
|
174
|
+
Empty ->
|
|
175
|
+
(v0, d0)
|
|
176
|
+
| Node {l; v; d; r} ->
|
|
177
|
+
if f v then
|
|
178
|
+
find_last_aux v d f r
|
|
179
|
+
else
|
|
180
|
+
find_last_aux v0 d0 f l
|
|
181
|
+
|
|
182
|
+
let rec find_last ~f = function
|
|
183
|
+
Empty ->
|
|
184
|
+
raise Not_found
|
|
185
|
+
| Node {l; v; d; r} ->
|
|
186
|
+
if f v then
|
|
187
|
+
find_last_aux v d f r
|
|
188
|
+
else
|
|
189
|
+
find_last ~f l
|
|
190
|
+
|
|
191
|
+
let rec find_last_opt_aux v0 d0 f = function
|
|
192
|
+
Empty ->
|
|
193
|
+
Some (v0, d0)
|
|
194
|
+
| Node {l; v; d; r} ->
|
|
195
|
+
if f v then
|
|
196
|
+
find_last_opt_aux v d f r
|
|
197
|
+
else
|
|
198
|
+
find_last_opt_aux v0 d0 f l
|
|
199
|
+
|
|
200
|
+
let rec find_last_opt ~f = function
|
|
201
|
+
Empty ->
|
|
202
|
+
None
|
|
203
|
+
| Node {l; v; d; r} ->
|
|
204
|
+
if f v then
|
|
205
|
+
find_last_opt_aux v d f r
|
|
206
|
+
else
|
|
207
|
+
find_last_opt ~f l
|
|
208
|
+
|
|
209
|
+
let rec find_opt x = function
|
|
210
|
+
Empty ->
|
|
211
|
+
None
|
|
212
|
+
| Node {l; v; d; r} ->
|
|
213
|
+
let c = Ord.compare x v in
|
|
214
|
+
if c = 0 then Some d
|
|
215
|
+
else find_opt x (if c < 0 then l else r)
|
|
216
|
+
|
|
217
|
+
let rec mem x = function
|
|
218
|
+
Empty ->
|
|
219
|
+
false
|
|
220
|
+
| Node {l; v; r} ->
|
|
221
|
+
let c = Ord.compare x v in
|
|
222
|
+
c = 0 || mem x (if c < 0 then l else r)
|
|
223
|
+
|
|
224
|
+
let rec min_binding = function
|
|
225
|
+
Empty -> raise Not_found
|
|
226
|
+
| Node {l=Empty; v; d} -> (v, d)
|
|
227
|
+
| Node {l} -> min_binding l
|
|
228
|
+
|
|
229
|
+
let rec min_binding_opt = function
|
|
230
|
+
Empty -> None
|
|
231
|
+
| Node {l=Empty; v; d} -> Some (v, d)
|
|
232
|
+
| Node {l}-> min_binding_opt l
|
|
233
|
+
|
|
234
|
+
let rec max_binding = function
|
|
235
|
+
Empty -> raise Not_found
|
|
236
|
+
| Node {v; d; r=Empty} -> (v, d)
|
|
237
|
+
| Node {r} -> max_binding r
|
|
238
|
+
|
|
239
|
+
let rec max_binding_opt = function
|
|
240
|
+
Empty -> None
|
|
241
|
+
| Node {v; d; r=Empty} -> Some (v, d)
|
|
242
|
+
| Node {r} -> max_binding_opt r
|
|
243
|
+
|
|
244
|
+
let rec remove_min_binding = function
|
|
245
|
+
Empty -> invalid_arg "Map.remove_min_elt"
|
|
246
|
+
| Node {l=Empty; r} -> r
|
|
247
|
+
| Node {l; v; d; r} -> bal (remove_min_binding l) v d r
|
|
248
|
+
|
|
249
|
+
let merge t1 t2 =
|
|
250
|
+
match (t1, t2) with
|
|
251
|
+
(Empty, t) -> t
|
|
252
|
+
| (t, Empty) -> t
|
|
253
|
+
| (_, _) ->
|
|
254
|
+
let (x, d) = min_binding t2 in
|
|
255
|
+
bal t1 x d (remove_min_binding t2)
|
|
256
|
+
|
|
257
|
+
let rec remove x = function
|
|
258
|
+
Empty ->
|
|
259
|
+
Empty
|
|
260
|
+
| (Node {l; v; d; r} as m) ->
|
|
261
|
+
let c = Ord.compare x v in
|
|
262
|
+
if c = 0 then merge l r
|
|
263
|
+
else if c < 0 then
|
|
264
|
+
let ll = remove x l in if l == ll then m else bal ll v d r
|
|
265
|
+
else
|
|
266
|
+
let rr = remove x r in if r == rr then m else bal l v d rr
|
|
267
|
+
|
|
268
|
+
let rec update ~key:x ~f = function
|
|
269
|
+
Empty ->
|
|
270
|
+
begin match f None with
|
|
271
|
+
| None -> Empty
|
|
272
|
+
| Some data -> Node{l=Empty; v=x; d=data; r=Empty; h=1}
|
|
273
|
+
end
|
|
274
|
+
| Node {l; v; d; r; h} as m ->
|
|
275
|
+
let c = Ord.compare x v in
|
|
276
|
+
if c = 0 then begin
|
|
277
|
+
match f (Some d) with
|
|
278
|
+
| None -> merge l r
|
|
279
|
+
| Some data ->
|
|
280
|
+
if d == data then m else Node{l; v=x; d=data; r; h}
|
|
281
|
+
end else if c < 0 then
|
|
282
|
+
let ll = update ~key:x ~f l in
|
|
283
|
+
if l == ll then m else bal ll v d r
|
|
284
|
+
else
|
|
285
|
+
let rr = update ~key:x ~f r in
|
|
286
|
+
if r == rr then m else bal l v d rr
|
|
287
|
+
|
|
288
|
+
let rec iter ~f = function
|
|
289
|
+
Empty -> ()
|
|
290
|
+
| Node {l; v; d; r} ->
|
|
291
|
+
iter ~f l; f ~key:v ~data:d; iter ~f r
|
|
292
|
+
|
|
293
|
+
let rec map ~f = function
|
|
294
|
+
Empty ->
|
|
295
|
+
Empty
|
|
296
|
+
| Node {l; v; d; r; h} ->
|
|
297
|
+
let l' = map ~f l in
|
|
298
|
+
let d' = f d in
|
|
299
|
+
let r' = map ~f r in
|
|
300
|
+
Node{l=l'; v; d=d'; r=r'; h}
|
|
301
|
+
|
|
302
|
+
let rec mapi ~f = function
|
|
303
|
+
Empty ->
|
|
304
|
+
Empty
|
|
305
|
+
| Node {l; v; d; r; h} ->
|
|
306
|
+
let l' = mapi ~f l in
|
|
307
|
+
let d' = f v d in
|
|
308
|
+
let r' = mapi ~f r in
|
|
309
|
+
Node{l=l'; v; d=d'; r=r'; h}
|
|
310
|
+
|
|
311
|
+
let rec fold ~f m ~init:accu =
|
|
312
|
+
match m with
|
|
313
|
+
Empty -> accu
|
|
314
|
+
| Node {l; v; d; r} ->
|
|
315
|
+
fold ~f r ~init:(f ~key:v ~data:d (fold ~f l ~init:accu))
|
|
316
|
+
|
|
317
|
+
let rec for_all ~f:p = function
|
|
318
|
+
Empty -> true
|
|
319
|
+
| Node {l; v; d; r} -> p v d && for_all ~f:p l && for_all ~f:p r
|
|
320
|
+
|
|
321
|
+
let rec exists ~f:p = function
|
|
322
|
+
Empty -> false
|
|
323
|
+
| Node {l; v; d; r} -> p v d || exists ~f:p l || exists ~f:p r
|
|
324
|
+
|
|
325
|
+
(* Beware: those two functions assume that the added k is *strictly*
|
|
326
|
+
smaller (or bigger) than all the present keys in the tree; it
|
|
327
|
+
does not test for equality with the current min (or max) key.
|
|
328
|
+
|
|
329
|
+
Indeed, they are only used during the "join" operation which
|
|
330
|
+
respects this precondition.
|
|
331
|
+
*)
|
|
332
|
+
|
|
333
|
+
let rec add_min_binding k x = function
|
|
334
|
+
| Empty -> singleton k x
|
|
335
|
+
| Node {l; v; d; r} ->
|
|
336
|
+
bal (add_min_binding k x l) v d r
|
|
337
|
+
|
|
338
|
+
let rec add_max_binding k x = function
|
|
339
|
+
| Empty -> singleton k x
|
|
340
|
+
| Node {l; v; d; r} ->
|
|
341
|
+
bal l v d (add_max_binding k x r)
|
|
342
|
+
|
|
343
|
+
(* Same as create and bal, but no assumptions are made on the
|
|
344
|
+
relative heights of l and r. *)
|
|
345
|
+
|
|
346
|
+
let rec join l v d r =
|
|
347
|
+
match (l, r) with
|
|
348
|
+
(Empty, _) -> add_min_binding v d r
|
|
349
|
+
| (_, Empty) -> add_max_binding v d l
|
|
350
|
+
| (Node{l=ll; v=lv; d=ld; r=lr; h=lh}, Node{l=rl; v=rv; d=rd; r=rr; h=rh}) ->
|
|
351
|
+
if lh > rh + 2 then bal ll lv ld (join lr v d r) else
|
|
352
|
+
if rh > lh + 2 then bal (join l v d rl) rv rd rr else
|
|
353
|
+
create l v d r
|
|
354
|
+
|
|
355
|
+
(* Merge two trees l and r into one.
|
|
356
|
+
All elements of l must precede the elements of r.
|
|
357
|
+
No assumption on the heights of l and r. *)
|
|
358
|
+
|
|
359
|
+
let concat t1 t2 =
|
|
360
|
+
match (t1, t2) with
|
|
361
|
+
(Empty, t) -> t
|
|
362
|
+
| (t, Empty) -> t
|
|
363
|
+
| (_, _) ->
|
|
364
|
+
let (x, d) = min_binding t2 in
|
|
365
|
+
join t1 x d (remove_min_binding t2)
|
|
366
|
+
|
|
367
|
+
let concat_or_join t1 v d t2 =
|
|
368
|
+
match d with
|
|
369
|
+
| Some d -> join t1 v d t2
|
|
370
|
+
| None -> concat t1 t2
|
|
371
|
+
|
|
372
|
+
let rec split x = function
|
|
373
|
+
Empty ->
|
|
374
|
+
(Empty, None, Empty)
|
|
375
|
+
| Node {l; v; d; r} ->
|
|
376
|
+
let c = Ord.compare x v in
|
|
377
|
+
if c = 0 then (l, Some d, r)
|
|
378
|
+
else if c < 0 then
|
|
379
|
+
let (ll, pres, rl) = split x l in (ll, pres, join rl v d r)
|
|
380
|
+
else
|
|
381
|
+
let (lr, pres, rr) = split x r in (join l v d lr, pres, rr)
|
|
382
|
+
|
|
383
|
+
let rec merge ~f s1 s2 =
|
|
384
|
+
match (s1, s2) with
|
|
385
|
+
(Empty, Empty) -> Empty
|
|
386
|
+
| (Node {l=l1; v=v1; d=d1; r=r1; h=h1}, _) when h1 >= height s2 ->
|
|
387
|
+
let (l2, d2, r2) = split v1 s2 in
|
|
388
|
+
concat_or_join (merge ~f l1 l2) v1 (f v1 (Some d1) d2) (merge ~f r1 r2)
|
|
389
|
+
| (_, Node {l=l2; v=v2; d=d2; r=r2}) ->
|
|
390
|
+
let (l1, d1, r1) = split v2 s1 in
|
|
391
|
+
concat_or_join (merge ~f l1 l2) v2 (f v2 d1 (Some d2)) (merge ~f r1 r2)
|
|
392
|
+
| _ ->
|
|
393
|
+
assert false
|
|
394
|
+
|
|
395
|
+
let rec union ~f s1 s2 =
|
|
396
|
+
match (s1, s2) with
|
|
397
|
+
| (Empty, s) | (s, Empty) -> s
|
|
398
|
+
| (Node {l=l1; v=v1; d=d1; r=r1; h=h1}, Node {l=l2; v=v2; d=d2; r=r2; h=h2}) ->
|
|
399
|
+
if h1 >= h2 then
|
|
400
|
+
let (l2, d2, r2) = split v1 s2 in
|
|
401
|
+
let l = union ~f l1 l2 and r = union ~f r1 r2 in
|
|
402
|
+
match d2 with
|
|
403
|
+
| None -> join l v1 d1 r
|
|
404
|
+
| Some d2 -> concat_or_join l v1 (f v1 d1 d2) r
|
|
405
|
+
else
|
|
406
|
+
let (l1, d1, r1) = split v2 s1 in
|
|
407
|
+
let l = union ~f l1 l2 and r = union ~f r1 r2 in
|
|
408
|
+
match d1 with
|
|
409
|
+
| None -> join l v2 d2 r
|
|
410
|
+
| Some d1 -> concat_or_join l v2 (f v2 d1 d2) r
|
|
411
|
+
|
|
412
|
+
let rec filter ~f:p = function
|
|
413
|
+
Empty -> Empty
|
|
414
|
+
| Node {l; v; d; r} as m ->
|
|
415
|
+
(* call [p] in the expected left-to-right order *)
|
|
416
|
+
let l' = filter ~f:p l in
|
|
417
|
+
let pvd = p v d in
|
|
418
|
+
let r' = filter ~f:p r in
|
|
419
|
+
if pvd then if l==l' && r==r' then m else join l' v d r'
|
|
420
|
+
else concat l' r'
|
|
421
|
+
|
|
422
|
+
let rec partition ~f:p = function
|
|
423
|
+
Empty -> (Empty, Empty)
|
|
424
|
+
| Node {l; v; d; r} ->
|
|
425
|
+
(* call [p] in the expected left-to-right order *)
|
|
426
|
+
let (lt, lf) = partition ~f:p l in
|
|
427
|
+
let pvd = p v d in
|
|
428
|
+
let (rt, rf) = partition ~f:p r in
|
|
429
|
+
if pvd
|
|
430
|
+
then (join lt v d rt, concat lf rf)
|
|
431
|
+
else (concat lt rt, join lf v d rf)
|
|
432
|
+
|
|
433
|
+
type 'a enumeration = End | More of key * 'a * 'a t * 'a enumeration
|
|
434
|
+
|
|
435
|
+
let rec cons_enum m e =
|
|
436
|
+
match m with
|
|
437
|
+
Empty -> e
|
|
438
|
+
| Node {l; v; d; r} -> cons_enum l (More(v, d, r, e))
|
|
439
|
+
|
|
440
|
+
let compare ~cmp m1 m2 =
|
|
441
|
+
let rec compare_aux e1 e2 =
|
|
442
|
+
match (e1, e2) with
|
|
443
|
+
(End, End) -> 0
|
|
444
|
+
| (End, _) -> -1
|
|
445
|
+
| (_, End) -> 1
|
|
446
|
+
| (More(v1, d1, r1, e1), More(v2, d2, r2, e2)) ->
|
|
447
|
+
let c = Ord.compare v1 v2 in
|
|
448
|
+
if c <> 0 then c else
|
|
449
|
+
let c = cmp d1 d2 in
|
|
450
|
+
if c <> 0 then c else
|
|
451
|
+
compare_aux (cons_enum r1 e1) (cons_enum r2 e2)
|
|
452
|
+
in compare_aux (cons_enum m1 End) (cons_enum m2 End)
|
|
453
|
+
|
|
454
|
+
let equal ~cmp m1 m2 =
|
|
455
|
+
let rec equal_aux e1 e2 =
|
|
456
|
+
match (e1, e2) with
|
|
457
|
+
(End, End) -> true
|
|
458
|
+
| (End, _) -> false
|
|
459
|
+
| (_, End) -> false
|
|
460
|
+
| (More(v1, d1, r1, e1), More(v2, d2, r2, e2)) ->
|
|
461
|
+
Ord.compare v1 v2 = 0 && cmp d1 d2 &&
|
|
462
|
+
equal_aux (cons_enum r1 e1) (cons_enum r2 e2)
|
|
463
|
+
in equal_aux (cons_enum m1 End) (cons_enum m2 End)
|
|
464
|
+
|
|
465
|
+
let rec cardinal = function
|
|
466
|
+
Empty -> 0
|
|
467
|
+
| Node {l; r} -> cardinal l + 1 + cardinal r
|
|
468
|
+
|
|
469
|
+
let rec bindings_aux accu = function
|
|
470
|
+
Empty -> accu
|
|
471
|
+
| Node {l; v; d; r} -> bindings_aux ((v, d) :: bindings_aux accu r) l
|
|
472
|
+
|
|
473
|
+
let bindings s =
|
|
474
|
+
bindings_aux [] s
|
|
475
|
+
|
|
476
|
+
let choose = min_binding
|
|
477
|
+
|
|
478
|
+
let choose_opt = min_binding_opt
|
|
479
|
+
|
|
480
|
+
end
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#ifdef TYPE_INT
|
|
2
|
+
module I = Belt_internalMapInt
|
|
3
|
+
type key = int
|
|
4
|
+
#elif defined TYPE_STRING
|
|
5
|
+
module I = Belt_internalMapString
|
|
6
|
+
type key = string
|
|
7
|
+
#else
|
|
8
|
+
[%error "unknown type"]
|
|
9
|
+
#endif
|
|
10
|
+
module N = Belt_internalAVLtree
|
|
11
|
+
module A = Belt_Array
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
type 'a t = {
|
|
17
|
+
mutable data : 'a I.t
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
let make () = {data = None}
|
|
22
|
+
let isEmpty m = N.isEmpty m.data
|
|
23
|
+
let clear m = m.data<- None
|
|
24
|
+
(* let singleton k v = t ~data:(N.singleton k v) *)
|
|
25
|
+
|
|
26
|
+
let minKeyUndefined m = N.minKeyUndefined m.data
|
|
27
|
+
let minKey m = N.minKey m.data
|
|
28
|
+
let maxKeyUndefined m = N.maxKeyUndefined m.data
|
|
29
|
+
let maxKey m = N.maxKey m.data
|
|
30
|
+
let minimum m = N.minimum m.data
|
|
31
|
+
let minUndefined m = N.minUndefined m.data
|
|
32
|
+
let maximum m = N.maximum m.data
|
|
33
|
+
let maxUndefined m = N.maxUndefined m.data
|
|
34
|
+
|
|
35
|
+
let set (m : _ t) k v =
|
|
36
|
+
let old_data = m.data in
|
|
37
|
+
let v = I.addMutate old_data k v in
|
|
38
|
+
if v != old_data then
|
|
39
|
+
m.data <-v
|
|
40
|
+
|
|
41
|
+
let forEachU d f = N.forEachU d.data f
|
|
42
|
+
let forEach d f = forEachU d (fun[@bs] a b -> f a b)
|
|
43
|
+
let mapU d f = {data = N.mapU d.data f}
|
|
44
|
+
let map d f = mapU d (fun[@bs] a -> f a )
|
|
45
|
+
let mapWithKeyU d f = { data = (N.mapWithKeyU d.data f)}
|
|
46
|
+
let mapWithKey d f = mapWithKeyU d (fun [@bs] a b -> f a b)
|
|
47
|
+
let reduceU d acc f = N.reduceU d.data acc f
|
|
48
|
+
let reduce d acc f = reduceU d acc (fun[@bs] a b c -> f a b c)
|
|
49
|
+
let everyU d f = N.everyU d.data f
|
|
50
|
+
let every d f = everyU d (fun[@bs] a b -> f a b)
|
|
51
|
+
let someU d f = N.someU d.data f
|
|
52
|
+
let some d f = someU d (fun[@bs] a b -> f a b)
|
|
53
|
+
let size d = N.size d.data
|
|
54
|
+
let toList d = N.toList d.data
|
|
55
|
+
let toArray d = N.toArray d.data
|
|
56
|
+
let keysToArray d = N.keysToArray d.data
|
|
57
|
+
let valuesToArray d = N.valuesToArray d.data
|
|
58
|
+
let checkInvariantInternal d = N.checkInvariantInternal d.data
|
|
59
|
+
let has d v = I.has d.data v
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
let rec removeMutateAux nt (x : key)=
|
|
63
|
+
let k = nt.N.key in
|
|
64
|
+
if x = k then
|
|
65
|
+
let {N.left = l; right = r} = nt in
|
|
66
|
+
match l, r with
|
|
67
|
+
| None, _ -> r
|
|
68
|
+
| _, None -> l
|
|
69
|
+
| _, Some nr ->
|
|
70
|
+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
|
|
71
|
+
Some (N.balMutate nt)
|
|
72
|
+
else
|
|
73
|
+
begin
|
|
74
|
+
if x < k then
|
|
75
|
+
match nt.left with
|
|
76
|
+
| None -> Some nt
|
|
77
|
+
| Some l ->
|
|
78
|
+
nt.left <- (removeMutateAux l x );
|
|
79
|
+
Some (N.balMutate nt)
|
|
80
|
+
else
|
|
81
|
+
match nt.right with
|
|
82
|
+
| None -> Some nt
|
|
83
|
+
| Some r ->
|
|
84
|
+
nt.right <- (removeMutateAux r x);
|
|
85
|
+
Some (N.balMutate nt)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
let remove d v =
|
|
89
|
+
let oldRoot = d.data in
|
|
90
|
+
match oldRoot with
|
|
91
|
+
| None -> ()
|
|
92
|
+
| Some root ->
|
|
93
|
+
let newRoot = removeMutateAux root v in
|
|
94
|
+
if newRoot != oldRoot then
|
|
95
|
+
d.data <- newRoot
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
let rec updateDone t (x : key) f =
|
|
99
|
+
match t with
|
|
100
|
+
| None ->
|
|
101
|
+
(match f None [@bs] with
|
|
102
|
+
| Some data -> N.singleton x data
|
|
103
|
+
| None -> t)
|
|
104
|
+
| Some nt ->
|
|
105
|
+
let k = nt.N.key in
|
|
106
|
+
(* let c = (Belt_Cmp.getCmpInternal cmp) x k [@bs] in *)
|
|
107
|
+
if k = x then begin
|
|
108
|
+
match f (Some nt.value) [@bs] with
|
|
109
|
+
| None ->
|
|
110
|
+
let {N.left = l; right = r} = nt in
|
|
111
|
+
begin match l, r with
|
|
112
|
+
| None, _ -> r
|
|
113
|
+
| _, None -> l
|
|
114
|
+
| _, Some nr ->
|
|
115
|
+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
|
|
116
|
+
Some (N.balMutate nt)
|
|
117
|
+
end
|
|
118
|
+
| Some data ->
|
|
119
|
+
nt.value <- data;
|
|
120
|
+
Some nt
|
|
121
|
+
end
|
|
122
|
+
else
|
|
123
|
+
let {N.left = l; right = r} = nt in
|
|
124
|
+
(if x < k then
|
|
125
|
+
let ll = updateDone l x f in
|
|
126
|
+
nt.left <- ll
|
|
127
|
+
else
|
|
128
|
+
nt.right <- (updateDone r x f);
|
|
129
|
+
);
|
|
130
|
+
Some (N.balMutate nt)
|
|
131
|
+
|
|
132
|
+
let updateU t x f =
|
|
133
|
+
let oldRoot = t.data in
|
|
134
|
+
let newRoot = updateDone oldRoot x f in
|
|
135
|
+
if newRoot != oldRoot then
|
|
136
|
+
t.data <- newRoot
|
|
137
|
+
let update t x f = updateU t x (fun[@bs] a -> f a )
|
|
138
|
+
let rec removeArrayMutateAux t xs i len =
|
|
139
|
+
if i < len then
|
|
140
|
+
let ele = A.getUnsafe xs i in
|
|
141
|
+
let u = removeMutateAux t ele in
|
|
142
|
+
match u with
|
|
143
|
+
| None -> None
|
|
144
|
+
| Some t -> removeArrayMutateAux t xs (i+1) len
|
|
145
|
+
else Some t
|
|
146
|
+
|
|
147
|
+
let removeMany (d : _ t) xs =
|
|
148
|
+
let oldRoot = d.data in
|
|
149
|
+
match oldRoot with
|
|
150
|
+
| None -> ()
|
|
151
|
+
| Some nt ->
|
|
152
|
+
let len = A.length xs in
|
|
153
|
+
let newRoot = removeArrayMutateAux nt xs 0 len in
|
|
154
|
+
if newRoot != oldRoot then
|
|
155
|
+
d.data <- newRoot
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
(* let split = I.split *)
|
|
160
|
+
(* let merge = I.merge *)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
let fromArray xs =
|
|
164
|
+
{ data = I.fromArray xs }
|
|
165
|
+
|
|
166
|
+
let cmpU d0 d1 f =
|
|
167
|
+
I.cmpU d0.data d1.data f
|
|
168
|
+
let cmp d0 d1 f = cmpU d0 d1 (fun[@bs] a b -> f a b)
|
|
169
|
+
|
|
170
|
+
let eqU d0 d1 f =
|
|
171
|
+
I.eqU d0.data d1.data f
|
|
172
|
+
let eq d0 d1 f = eqU d0 d1 (fun[@bs] a b -> f a b)
|
|
173
|
+
|
|
174
|
+
let get d x = I.get d.data x
|
|
175
|
+
let getUndefined d x = I.getUndefined d.data x
|
|
176
|
+
let getWithDefault d x def = I.getWithDefault d.data x def
|
|
177
|
+
let getExn d x = I.getExn d.data x
|