@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,436 @@
|
|
|
1
|
+
(* Copyright (C) 2018 Authors of ReScript
|
|
2
|
+
*
|
|
3
|
+
* This program is free software: you can redistribute it and/or modify
|
|
4
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
5
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
6
|
+
* (at your option) any later version.
|
|
7
|
+
*
|
|
8
|
+
* In addition to the permissions granted to you by the LGPL, you may combine
|
|
9
|
+
* or link a "work that uses the Library" with a publicly distributed version
|
|
10
|
+
* of this file to produce a combined library or application, then distribute
|
|
11
|
+
* that combined work under the terms of your choosing, with no requirement
|
|
12
|
+
* to comply with the obligations normally placed on you by section 4 of the
|
|
13
|
+
* LGPL version 3 (or the corresponding section of a later version of the LGPL
|
|
14
|
+
* should you choose to use a later version).
|
|
15
|
+
*
|
|
16
|
+
* This program is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* along with this program; if not, write to the Free Software
|
|
23
|
+
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
|
|
24
|
+
|
|
25
|
+
(**
|
|
26
|
+
A **mutable** Hash map which allows customized [`hash`]() behavior.
|
|
27
|
+
|
|
28
|
+
All data are parameterized by not its only type but also a unique identity in
|
|
29
|
+
the time of initialization, so that two _HashMaps of ints_ initialized with different
|
|
30
|
+
_hash_ functions will have different type.
|
|
31
|
+
|
|
32
|
+
For example:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
type t = int
|
|
36
|
+
module I0 = unpack(Belt.Id.hashableU(~hash=(. a: t) => \"&"(a, 0xff_ff), ~eq=(. a, b) => a == b))
|
|
37
|
+
let s0: t<_, string, _> = make(~hintSize=40, ~id=module(I0))
|
|
38
|
+
|
|
39
|
+
module I1 = unpack(Belt.Id.hashableU(~hash=(. a: t) => \"&"(a, 0xff), ~eq=(. a, b) => a == b))
|
|
40
|
+
let s1: t<_, string, _> = make(~hintSize=40, ~id=module(I1))
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The invariant must be held: for two elements who are _equal_,
|
|
44
|
+
their hashed value should be the same
|
|
45
|
+
|
|
46
|
+
Here the compiler would infer `s0` and `s1` having different type so that
|
|
47
|
+
it would not mix.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
let s0: t<int, I0.identity>
|
|
51
|
+
let s1: t<int, I1.identity>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
We can add elements to the collection:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
let () = {
|
|
58
|
+
add(s1, 0, "3")
|
|
59
|
+
add(s1, 1, "3")
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Since this is an mutable data strucure, `s1` will contain two pairs.
|
|
64
|
+
*)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
(** Specalized when key type is `int`, more efficient
|
|
68
|
+
than the generic type *)
|
|
69
|
+
module Int = Belt_HashMapInt
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
(** Specalized when key type is `string`, more efficient
|
|
73
|
+
than the generic type *)
|
|
74
|
+
module String = Belt_HashMapString
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
type ('key,'value,'id) t
|
|
80
|
+
(** The type of hash tables from type `'key` to type `'value`. *)
|
|
81
|
+
|
|
82
|
+
type ('a, 'id) id = ('a, 'id) Belt_Id.hashable
|
|
83
|
+
(** The identity needed for making an empty hash map. *)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
val make: hintSize:int -> id:('key, 'id) id -> ('key,'value,'id) t
|
|
87
|
+
(**
|
|
88
|
+
`make(~hintSize=10, ~id)` creates a new map by taking in the comparator and `hintSize`.
|
|
89
|
+
|
|
90
|
+
```res example
|
|
91
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
92
|
+
type t = int
|
|
93
|
+
let hash = a => a
|
|
94
|
+
let eq = (a, b) => a == b
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
let hMap = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
98
|
+
|
|
99
|
+
Belt.HashMap.set(hMap, 0, "a")
|
|
100
|
+
```
|
|
101
|
+
*)
|
|
102
|
+
|
|
103
|
+
(*TODO: allow randomization for security *)
|
|
104
|
+
|
|
105
|
+
val clear: ('key, 'value, 'id ) t -> unit
|
|
106
|
+
(**
|
|
107
|
+
Clears a hash table.
|
|
108
|
+
|
|
109
|
+
```res example
|
|
110
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
111
|
+
type t = int
|
|
112
|
+
let hash = a => a
|
|
113
|
+
let eq = (a, b) => a == b
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
let hMap = Belt.HashMap.fromArray([(1, "1")], ~id=module(IntHash))
|
|
117
|
+
Belt.HashMap.clear(hMap)
|
|
118
|
+
Belt.HashMap.isEmpty(hMap) == true
|
|
119
|
+
```
|
|
120
|
+
*)
|
|
121
|
+
|
|
122
|
+
val isEmpty: _ t -> bool
|
|
123
|
+
(**
|
|
124
|
+
`isEmpty(m)` checks whether a hash map is empty.
|
|
125
|
+
|
|
126
|
+
```res example
|
|
127
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
128
|
+
type t = int
|
|
129
|
+
let hash = a => a
|
|
130
|
+
let eq = (a, b) => a == b
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
Belt.HashMap.isEmpty(Belt.HashMap.fromArray([(1, "1")], ~id=module(IntHash))) == false
|
|
134
|
+
```
|
|
135
|
+
*)
|
|
136
|
+
|
|
137
|
+
val set: ('key, 'value, 'id ) t -> 'key -> 'value -> unit
|
|
138
|
+
(**
|
|
139
|
+
`set(hMap, k, v)` if `k` does not exist, add the binding `k,v`, otherwise, update the old value with the new `v`.
|
|
140
|
+
|
|
141
|
+
```res example
|
|
142
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
143
|
+
type t = int
|
|
144
|
+
let hash = a => a
|
|
145
|
+
let eq = (a, b) => a == b
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
let s0 = Belt.HashMap.fromArray([(2, "2"), (1, "1"), (3, "3")], ~id=module(IntHash))
|
|
149
|
+
|
|
150
|
+
Belt.HashMap.set(s0, 2, "3")
|
|
151
|
+
|
|
152
|
+
Belt.HashMap.valuesToArray(s0) == ["1", "3", "3"]
|
|
153
|
+
```
|
|
154
|
+
*)
|
|
155
|
+
|
|
156
|
+
val copy: ('key, 'value, 'id ) t -> ('key, 'value, 'id ) t
|
|
157
|
+
(**
|
|
158
|
+
Creates copy of a hash map.
|
|
159
|
+
|
|
160
|
+
```res example
|
|
161
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
162
|
+
type t = int
|
|
163
|
+
let hash = a => a
|
|
164
|
+
let eq = (a, b) => a == b
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
let s0 = Belt.HashMap.fromArray([(2, "2"), (1, "1"), (3, "3")], ~id=module(IntHash))
|
|
168
|
+
let s1 = Belt.HashMap.copy(s0)
|
|
169
|
+
|
|
170
|
+
Belt.HashMap.set(s0, 2, "3")
|
|
171
|
+
|
|
172
|
+
Belt.HashMap.get(s0, 2) != Belt.HashMap.get(s1, 2)
|
|
173
|
+
```
|
|
174
|
+
*)
|
|
175
|
+
|
|
176
|
+
val get: ('key, 'value, 'id ) t -> 'key -> 'value option
|
|
177
|
+
(**
|
|
178
|
+
Returns value bound under specific key. If values not exist returns `None`.
|
|
179
|
+
|
|
180
|
+
```res example
|
|
181
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
182
|
+
type t = int
|
|
183
|
+
let hash = a => a
|
|
184
|
+
let eq = (a, b) => a == b
|
|
185
|
+
})
|
|
186
|
+
|
|
187
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
188
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
189
|
+
|
|
190
|
+
Belt.HashMap.get(s0, 1) == Some("value1")
|
|
191
|
+
Belt.HashMap.get(s0, 2) == None
|
|
192
|
+
```
|
|
193
|
+
*)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
val has: ('key, 'value, 'id ) t -> 'key -> bool
|
|
197
|
+
(**
|
|
198
|
+
Checks if `x` is bound in `tbl`.
|
|
199
|
+
|
|
200
|
+
```res example
|
|
201
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
202
|
+
type t = int
|
|
203
|
+
let hash = a => a
|
|
204
|
+
let eq = (a, b) => a == b
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
208
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
209
|
+
|
|
210
|
+
Belt.HashMap.has(s0, 1) == true
|
|
211
|
+
Belt.HashMap.has(s0, 2) == false
|
|
212
|
+
```
|
|
213
|
+
*)
|
|
214
|
+
|
|
215
|
+
val remove: ('key, 'value, 'id ) t -> 'key -> unit
|
|
216
|
+
(**
|
|
217
|
+
If bound exists, removes it from the hash map.
|
|
218
|
+
|
|
219
|
+
```res example
|
|
220
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
221
|
+
type t = int
|
|
222
|
+
let hash = a => a
|
|
223
|
+
let eq = (a, b) => a == b
|
|
224
|
+
})
|
|
225
|
+
|
|
226
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
227
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
228
|
+
Belt.HashMap.remove(s0, 1)
|
|
229
|
+
Belt.HashMap.has(s0, 1) == false
|
|
230
|
+
```
|
|
231
|
+
*)
|
|
232
|
+
|
|
233
|
+
val forEachU: ('key, 'value, 'id ) t -> ('key -> 'value -> unit [@bs]) -> unit
|
|
234
|
+
(** Same as [forEach](#forEach) but takes uncurried function. *)
|
|
235
|
+
|
|
236
|
+
val forEach: ('key, 'value, 'id ) t -> ('key -> 'value -> unit) -> unit
|
|
237
|
+
(**
|
|
238
|
+
`forEach(tbl, f)` applies `f` to all bindings in table `tbl`. `f` receives the key as first argument, and the associated value as second argument. Each binding is presented exactly once to `f`.
|
|
239
|
+
|
|
240
|
+
```res example
|
|
241
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
242
|
+
type t = int
|
|
243
|
+
let hash = a => a
|
|
244
|
+
let eq = (a, b) => a == b
|
|
245
|
+
})
|
|
246
|
+
|
|
247
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
248
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
249
|
+
Belt.HashMap.forEach(s0, (key, value) => Js.log2(key, value))
|
|
250
|
+
// prints (1, "value1")
|
|
251
|
+
```
|
|
252
|
+
*)
|
|
253
|
+
|
|
254
|
+
val reduceU: ('key, 'value, 'id ) t -> 'c -> ('c -> 'key -> 'value -> 'c [@bs]) -> 'c
|
|
255
|
+
val reduce: ('key, 'value, 'id ) t -> 'c -> ('c -> 'key -> 'value -> 'c) -> 'c
|
|
256
|
+
(**
|
|
257
|
+
`reduce(tbl, init, f)` computes `(f(kN, dN) ... (f(k1, d1, init))...)`, where `k1 ... kN` are the keys of all bindings in `tbl`, and `d1 ... dN` are the associated values. Each binding is presented exactly once to `f`.
|
|
258
|
+
|
|
259
|
+
The order in which the bindings are passed to `f` is unspecified. However, if the table contains several bindings for the same key, they are passed to `f` in reverse order of introduction, that is, the most recent binding is passed first.
|
|
260
|
+
|
|
261
|
+
```res example
|
|
262
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
263
|
+
type t = int
|
|
264
|
+
let hash = a => a
|
|
265
|
+
let eq = (a, b) => a == b
|
|
266
|
+
})
|
|
267
|
+
|
|
268
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
269
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
270
|
+
Belt.HashMap.set(s0, 2, "value2")
|
|
271
|
+
|
|
272
|
+
Belt.HashMap.reduce(s0, "", (acc, key, value) => acc ++ (", " ++ value)) == "value1, value2"
|
|
273
|
+
```
|
|
274
|
+
*)
|
|
275
|
+
|
|
276
|
+
val keepMapInPlaceU: ('key, 'value, 'id ) t -> ('key -> 'value -> 'value option [@bs]) -> unit
|
|
277
|
+
(** Same as [keepMapInPlace](#keepMapInPlace) but takes uncurried function. *)
|
|
278
|
+
|
|
279
|
+
val keepMapInPlace: ('key, 'value, 'id ) t -> ('key -> 'value -> 'value option ) -> unit
|
|
280
|
+
(**
|
|
281
|
+
Filters out values for which function `f` returned `None`.
|
|
282
|
+
|
|
283
|
+
```res example
|
|
284
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
285
|
+
type t = int
|
|
286
|
+
let hash = a => a
|
|
287
|
+
let eq = (a, b) => a == b
|
|
288
|
+
})
|
|
289
|
+
|
|
290
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
291
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
292
|
+
Belt.HashMap.set(s0, 2, "value2")
|
|
293
|
+
|
|
294
|
+
Belt.HashMap.keepMapInPlace(s0, (key, value) => key == 1 ? None : Some(value))
|
|
295
|
+
```
|
|
296
|
+
*)
|
|
297
|
+
|
|
298
|
+
val size: _ t -> int
|
|
299
|
+
(**
|
|
300
|
+
`size(tbl)` returns the number of bindings in `tbl`. It takes constant time.
|
|
301
|
+
|
|
302
|
+
```res example
|
|
303
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
304
|
+
type t = int
|
|
305
|
+
let hash = a => a
|
|
306
|
+
let eq = (a, b) => a == b
|
|
307
|
+
})
|
|
308
|
+
|
|
309
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
310
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
311
|
+
Belt.HashMap.set(s0, 2, "value2")
|
|
312
|
+
|
|
313
|
+
Belt.HashMap.size(s0) == 2
|
|
314
|
+
```
|
|
315
|
+
*)
|
|
316
|
+
|
|
317
|
+
val toArray: ('key, 'value, 'id ) t -> ('key * 'value) array
|
|
318
|
+
(**
|
|
319
|
+
Returns array of key value pairs.
|
|
320
|
+
|
|
321
|
+
```res example
|
|
322
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
323
|
+
type t = int
|
|
324
|
+
let hash = a => a
|
|
325
|
+
let eq = (a, b) => a == b
|
|
326
|
+
})
|
|
327
|
+
|
|
328
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
329
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
330
|
+
Belt.HashMap.set(s0, 2, "value2")
|
|
331
|
+
|
|
332
|
+
Belt.HashMap.toArray(s0) == [(1, "value1"), (2, "value2")]
|
|
333
|
+
```
|
|
334
|
+
*)
|
|
335
|
+
|
|
336
|
+
val keysToArray: ('key, _, _) t -> 'key array
|
|
337
|
+
(**
|
|
338
|
+
Returns array of keys.
|
|
339
|
+
|
|
340
|
+
```res example
|
|
341
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
342
|
+
type t = int
|
|
343
|
+
let hash = a => a
|
|
344
|
+
let eq = (a, b) => a == b
|
|
345
|
+
})
|
|
346
|
+
|
|
347
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
348
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
349
|
+
Belt.HashMap.set(s0, 2, "value2")
|
|
350
|
+
|
|
351
|
+
Belt.HashMap.keysToArray(s0) == [1, 2]
|
|
352
|
+
```
|
|
353
|
+
*)
|
|
354
|
+
|
|
355
|
+
val valuesToArray: (_,'value,_) t -> 'value array
|
|
356
|
+
(**
|
|
357
|
+
Returns array of values.
|
|
358
|
+
|
|
359
|
+
```res example
|
|
360
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
361
|
+
type t = int
|
|
362
|
+
let hash = a => a
|
|
363
|
+
let eq = (a, b) => a == b
|
|
364
|
+
})
|
|
365
|
+
|
|
366
|
+
let s0 = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
367
|
+
Belt.HashMap.set(s0, 1, "value1")
|
|
368
|
+
Belt.HashMap.set(s0, 2, "value2")
|
|
369
|
+
|
|
370
|
+
Belt.HashMap.valuesToArray(s0) == ["value1", "value2"]
|
|
371
|
+
```
|
|
372
|
+
*)
|
|
373
|
+
|
|
374
|
+
val fromArray: ('key * 'value) array -> id:('key,'id) id -> ('key, 'value, 'id ) t
|
|
375
|
+
(**
|
|
376
|
+
Creates new hash map from array of pairs.
|
|
377
|
+
|
|
378
|
+
Returns array of values.
|
|
379
|
+
|
|
380
|
+
```res example
|
|
381
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
382
|
+
type t = int
|
|
383
|
+
let hash = a => a
|
|
384
|
+
let eq = (a, b) => a == b
|
|
385
|
+
})
|
|
386
|
+
|
|
387
|
+
let s0 = Belt.HashMap.fromArray([(1, "value1"), (2, "value2")], ~id=module(IntHash))
|
|
388
|
+
Belt.HashMap.toArray(s0) == [(1, "value1"), (2, "value2")]
|
|
389
|
+
```
|
|
390
|
+
*)
|
|
391
|
+
|
|
392
|
+
val mergeMany: ('key, 'value, 'id ) t -> ('key * 'value) array -> unit
|
|
393
|
+
(**
|
|
394
|
+
```res example
|
|
395
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
396
|
+
type t = int
|
|
397
|
+
let hash = a => a
|
|
398
|
+
let eq = (a, b) => a == b
|
|
399
|
+
})
|
|
400
|
+
|
|
401
|
+
let hMap = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
402
|
+
Belt.HashMap.mergeMany(hMap, [(1, "1"), (2, "2")])
|
|
403
|
+
```
|
|
404
|
+
*)
|
|
405
|
+
|
|
406
|
+
val getBucketHistogram: _ t -> int array
|
|
407
|
+
(**
|
|
408
|
+
```res example
|
|
409
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
410
|
+
type t = int
|
|
411
|
+
let hash = a => a
|
|
412
|
+
let eq = (a, b) => a == b
|
|
413
|
+
})
|
|
414
|
+
let hMap = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
415
|
+
Belt.HashMap.set(hMap, 1, "1")
|
|
416
|
+
|
|
417
|
+
Belt.HashMap.getBucketHistogram(hMap)
|
|
418
|
+
```
|
|
419
|
+
*)
|
|
420
|
+
|
|
421
|
+
val logStats: _ t -> unit
|
|
422
|
+
(**
|
|
423
|
+
```res example
|
|
424
|
+
module IntHash = Belt.Id.MakeHashable({
|
|
425
|
+
type t = int
|
|
426
|
+
let hash = a => a
|
|
427
|
+
let eq = (a, b) => a == b
|
|
428
|
+
})
|
|
429
|
+
let hMap = Belt.HashMap.make(~hintSize=10, ~id=module(IntHash))
|
|
430
|
+
Belt.HashMap.set(hMap, 1, "1")
|
|
431
|
+
|
|
432
|
+
Belt.HashMap.logStats(hMap)
|
|
433
|
+
```
|
|
434
|
+
*)
|
|
435
|
+
|
|
436
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# 1 "others/hashmap.cppo.ml"
|
|
2
|
+
(***********************************************************************)
|
|
3
|
+
(* *)
|
|
4
|
+
(* OCaml *)
|
|
5
|
+
(* *)
|
|
6
|
+
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
7
|
+
(* *)
|
|
8
|
+
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
9
|
+
(* en Automatique. All rights reserved. This file is distributed *)
|
|
10
|
+
(* under the terms of the GNU Library General Public License, with *)
|
|
11
|
+
(* the special exception on linking described in file ../LICENSE. *)
|
|
12
|
+
(* *)
|
|
13
|
+
(***********************************************************************)
|
|
14
|
+
(** Adapted by Hongbo Zhang, Authors of ReScript 2017 *)
|
|
15
|
+
|
|
16
|
+
# 23 "others/hashmap.cppo.ml"
|
|
17
|
+
type key = int
|
|
18
|
+
type seed = int
|
|
19
|
+
external caml_hash_mix_int : seed -> int -> seed = "?hash_mix_int"
|
|
20
|
+
external final_mix : seed -> seed = "?hash_final_mix"
|
|
21
|
+
let hash (s : key) =
|
|
22
|
+
final_mix (caml_hash_mix_int 0 s)
|
|
23
|
+
|
|
24
|
+
# 33 "others/hashmap.cppo.ml"
|
|
25
|
+
module N = Belt_internalBuckets
|
|
26
|
+
module C = Belt_internalBucketsType
|
|
27
|
+
module A = Belt_Array
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
type 'b t = (unit, unit, key,'b) N.t
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
let rec copyBucketReHash ~h_buckets ~ndata_tail (old_bucket : _ N.bucket C.opt ) =
|
|
34
|
+
match C.toOpt old_bucket with
|
|
35
|
+
| None -> ()
|
|
36
|
+
| Some cell ->
|
|
37
|
+
let nidx = hash cell.key land (A.length h_buckets - 1) in
|
|
38
|
+
let v = C.return cell in
|
|
39
|
+
begin match C.toOpt (A.getUnsafe ndata_tail nidx) with
|
|
40
|
+
| None ->
|
|
41
|
+
A.setUnsafe h_buckets nidx v
|
|
42
|
+
| Some tail ->
|
|
43
|
+
tail.N.next <- v (* cell put at the end *)
|
|
44
|
+
end;
|
|
45
|
+
A.setUnsafe ndata_tail nidx v;
|
|
46
|
+
copyBucketReHash ~h_buckets ~ndata_tail cell.next
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
let resize h =
|
|
50
|
+
let odata = h.C.buckets in
|
|
51
|
+
let osize = A.length odata in
|
|
52
|
+
let nsize = osize * 2 in
|
|
53
|
+
if nsize >= osize then begin (* no overflow *)
|
|
54
|
+
let h_buckets = A.makeUninitialized nsize in
|
|
55
|
+
let ndata_tail = A.makeUninitialized nsize in (* keep track of tail *)
|
|
56
|
+
h.C.buckets <- h_buckets; (* so that indexfun sees the new bucket count *)
|
|
57
|
+
for i = 0 to osize - 1 do
|
|
58
|
+
copyBucketReHash ~h_buckets ~ndata_tail (A.getUnsafe odata i)
|
|
59
|
+
done;
|
|
60
|
+
for i = 0 to nsize - 1 do
|
|
61
|
+
match C.toOpt (A.getUnsafe ndata_tail i) with
|
|
62
|
+
| None -> ()
|
|
63
|
+
| Some tail -> tail.next <- C.emptyOpt
|
|
64
|
+
done
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
let rec replaceInBucket (key : key) info cell =
|
|
69
|
+
if cell.N.key = key
|
|
70
|
+
then
|
|
71
|
+
begin
|
|
72
|
+
cell.N.value <- info;
|
|
73
|
+
false
|
|
74
|
+
end
|
|
75
|
+
else
|
|
76
|
+
match C.toOpt cell.next with
|
|
77
|
+
| None -> true
|
|
78
|
+
| Some cell ->
|
|
79
|
+
replaceInBucket key info cell
|
|
80
|
+
|
|
81
|
+
let set h (key : key) value =
|
|
82
|
+
let h_buckets = h.C.buckets in
|
|
83
|
+
let buckets_len = A.length h_buckets in
|
|
84
|
+
let i = hash key land (buckets_len - 1) in
|
|
85
|
+
let l = A.getUnsafe h_buckets i in
|
|
86
|
+
(match C.toOpt l with
|
|
87
|
+
| None ->
|
|
88
|
+
A.setUnsafe h_buckets i (C.return {N.key; value; next = C.emptyOpt});
|
|
89
|
+
h.C.size <- (h.C.size + 1);
|
|
90
|
+
| Some bucket ->
|
|
91
|
+
if replaceInBucket key value bucket then begin
|
|
92
|
+
A.setUnsafe h_buckets i (C.return {N.key; value; next = l});
|
|
93
|
+
h.C.size <- (h.C.size + 1);
|
|
94
|
+
end
|
|
95
|
+
);
|
|
96
|
+
if h.C.size > buckets_len lsl 1 then resize h
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
let rec removeInBucket h h_buckets i (key : key) prec buckets =
|
|
101
|
+
match C.toOpt buckets with
|
|
102
|
+
| None -> ()
|
|
103
|
+
| Some cell ->
|
|
104
|
+
let cell_next = cell.N.next in
|
|
105
|
+
if cell.N.key = key
|
|
106
|
+
then
|
|
107
|
+
begin
|
|
108
|
+
prec.N.next <-cell_next;
|
|
109
|
+
h.C.size <- (h.C.size - 1);
|
|
110
|
+
end
|
|
111
|
+
else removeInBucket h h_buckets i key cell cell_next
|
|
112
|
+
|
|
113
|
+
let remove h key =
|
|
114
|
+
let h_buckets = h.C.buckets in
|
|
115
|
+
let i = hash key land (A.length h_buckets - 1) in
|
|
116
|
+
let bucket = (A.getUnsafe h_buckets i) in
|
|
117
|
+
match C.toOpt bucket with
|
|
118
|
+
| None -> ()
|
|
119
|
+
| Some cell ->
|
|
120
|
+
if cell.N.key = key then
|
|
121
|
+
begin
|
|
122
|
+
A.setUnsafe h_buckets i cell.next;
|
|
123
|
+
h.C.size <- (h.C.size - 1)
|
|
124
|
+
end
|
|
125
|
+
else
|
|
126
|
+
removeInBucket h h_buckets i key cell cell.next
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
let rec getAux (key : key) buckets =
|
|
131
|
+
match C.toOpt buckets with
|
|
132
|
+
| None ->
|
|
133
|
+
None
|
|
134
|
+
| Some cell ->
|
|
135
|
+
if key = cell.N.key then Some cell.N.value
|
|
136
|
+
else getAux key cell.next
|
|
137
|
+
|
|
138
|
+
let get h (key : key) =
|
|
139
|
+
let h_buckets = h.C.buckets in
|
|
140
|
+
let nid = hash key land (A.length h_buckets - 1) in
|
|
141
|
+
match C.toOpt (A.getUnsafe h_buckets nid) with
|
|
142
|
+
| None -> None
|
|
143
|
+
| Some cell1 ->
|
|
144
|
+
if key = cell1.N.key then Some cell1.N.value else
|
|
145
|
+
match C.toOpt cell1.N.next with
|
|
146
|
+
| None -> None
|
|
147
|
+
| Some cell2 ->
|
|
148
|
+
if key = cell2.N.key then Some cell2.N.value else
|
|
149
|
+
match C.toOpt cell2.N.next with
|
|
150
|
+
| None -> None
|
|
151
|
+
| Some cell3 ->
|
|
152
|
+
if key = cell3.N.key then Some cell3.N.value
|
|
153
|
+
else getAux key cell3.N.next
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
let rec memInBucket (key : key) cell =
|
|
157
|
+
cell.N.key = key ||
|
|
158
|
+
(match C.toOpt cell.next with
|
|
159
|
+
| None -> false
|
|
160
|
+
| Some nextCell -> memInBucket key nextCell
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
let has h key =
|
|
164
|
+
let h_buckets = h.C.buckets in
|
|
165
|
+
let nid = hash key land (A.length h_buckets - 1) in
|
|
166
|
+
let bucket = A.getUnsafe h_buckets nid in
|
|
167
|
+
match C.toOpt bucket with
|
|
168
|
+
| None -> false
|
|
169
|
+
| Some bucket ->
|
|
170
|
+
memInBucket key bucket
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
let make ~hintSize = C.make ~hintSize ~hash:() ~eq:()
|
|
174
|
+
let clear = C.clear
|
|
175
|
+
let size h = h.C.size
|
|
176
|
+
let forEachU = N.forEachU
|
|
177
|
+
let forEach = N.forEach
|
|
178
|
+
let reduceU = N.reduceU
|
|
179
|
+
let reduce = N.reduce
|
|
180
|
+
let logStats = N.logStats
|
|
181
|
+
let keepMapInPlaceU = N.keepMapInPlaceU
|
|
182
|
+
let keepMapInPlace = N.keepMapInPlace
|
|
183
|
+
let toArray = N.toArray
|
|
184
|
+
let copy = N.copy
|
|
185
|
+
let keysToArray = N.keysToArray
|
|
186
|
+
let valuesToArray = N.valuesToArray
|
|
187
|
+
let getBucketHistogram = N.getBucketHistogram
|
|
188
|
+
let isEmpty = C.isEmpty
|
|
189
|
+
|
|
190
|
+
let fromArray arr =
|
|
191
|
+
let len = A.length arr in
|
|
192
|
+
let v = make ~hintSize:len in
|
|
193
|
+
for i = 0 to len - 1 do
|
|
194
|
+
let k,value = (A.getUnsafe arr i) in
|
|
195
|
+
set v k value
|
|
196
|
+
done ;
|
|
197
|
+
v
|
|
198
|
+
|
|
199
|
+
(* TOOD: optimize heuristics for resizing *)
|
|
200
|
+
let mergeMany h arr =
|
|
201
|
+
let len = A.length arr in
|
|
202
|
+
for i = 0 to len - 1 do
|
|
203
|
+
let k,v = (A.getUnsafe arr i) in
|
|
204
|
+
set h k v
|
|
205
|
+
done
|
|
206
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 4 "others/hashmap.cppo.mli"
|
|
2
|
+
type key = int
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# 10 "others/hashmap.cppo.mli"
|
|
6
|
+
type 'b t
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
val make: hintSize:int -> 'b t
|
|
10
|
+
|
|
11
|
+
val clear: 'b t -> unit
|
|
12
|
+
|
|
13
|
+
val isEmpty: _ t -> bool
|
|
14
|
+
|
|
15
|
+
val set: 'a t -> key -> 'a -> unit
|
|
16
|
+
(**
|
|
17
|
+
`setDone tbl k v` if `k` does not exist,
|
|
18
|
+
add the binding `k,v`, otherwise, update the old value with the new
|
|
19
|
+
`v`
|
|
20
|
+
*)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
val copy: 'a t -> 'a t
|
|
24
|
+
val get: 'a t -> key -> 'a option
|
|
25
|
+
|
|
26
|
+
val has: 'b t -> key -> bool
|
|
27
|
+
|
|
28
|
+
val remove: 'a t -> key -> unit
|
|
29
|
+
|
|
30
|
+
val forEachU: 'b t -> (key -> 'b -> unit [@bs]) -> unit
|
|
31
|
+
val forEach: 'b t -> (key -> 'b -> unit) -> unit
|
|
32
|
+
|
|
33
|
+
val reduceU: 'b t -> 'c -> ('c -> key -> 'b -> 'c [@bs]) -> 'c
|
|
34
|
+
val reduce: 'b t -> 'c -> ('c -> key -> 'b -> 'c) -> 'c
|
|
35
|
+
|
|
36
|
+
val keepMapInPlaceU: 'a t -> (key -> 'a -> 'a option [@bs]) -> unit
|
|
37
|
+
val keepMapInPlace: 'a t -> (key -> 'a -> 'a option) -> unit
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
val size: _ t -> int
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
val toArray: 'a t -> (key * 'a) array
|
|
44
|
+
val keysToArray: 'a t -> key array
|
|
45
|
+
val valuesToArray: 'a t -> 'a array
|
|
46
|
+
val fromArray: (key * 'a) array -> 'a t
|
|
47
|
+
val mergeMany: 'a t -> (key * 'a) array -> unit
|
|
48
|
+
val getBucketHistogram: _ t -> int array
|
|
49
|
+
val logStats: _ t -> unit
|
|
50
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|