@tellahq/rescript 10.1.4-republish-1 → 10.1.4-republish-2
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/darwinarm64/ninja.exe +0 -0
- package/package.json +1 -1
- 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 +0 -359
- package/lib/ocaml/arg.mli +0 -185
- 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 +0 -307
- package/lib/ocaml/array.mli +0 -275
- 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 +0 -307
- package/lib/ocaml/arrayLabels.mli +0 -276
- package/lib/ocaml/belt.cmi +0 -0
- package/lib/ocaml/belt.cmt +0 -0
- package/lib/ocaml/belt.ml +0 -352
- 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 +0 -525
- package/lib/ocaml/belt_Array.mli +0 -707
- 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 +0 -50
- package/lib/ocaml/belt_Float.mli +0 -106
- 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 +0 -226
- package/lib/ocaml/belt_HashMap.mli +0 -436
- 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 +0 -206
- package/lib/ocaml/belt_HashMapInt.mli +0 -50
- 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 +0 -206
- package/lib/ocaml/belt_HashMapString.mli +0 -50
- 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 +0 -196
- package/lib/ocaml/belt_HashSet.mli +0 -125
- 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 +0 -155
- package/lib/ocaml/belt_HashSetInt.mli +0 -74
- 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 +0 -156
- package/lib/ocaml/belt_HashSetString.mli +0 -74
- 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 +0 -133
- package/lib/ocaml/belt_Id.mli +0 -171
- 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 +0 -50
- package/lib/ocaml/belt_Int.mli +0 -103
- 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 +0 -803
- package/lib/ocaml/belt_List.mli +0 -844
- 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 +0 -170
- package/lib/ocaml/belt_Map.mli +0 -496
- 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 +0 -278
- package/lib/ocaml/belt_MapDict.mli +0 -268
- 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 +0 -169
- package/lib/ocaml/belt_MapInt.mli +0 -187
- 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 +0 -169
- package/lib/ocaml/belt_MapString.mli +0 -187
- 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 +0 -241
- package/lib/ocaml/belt_MutableMap.mli +0 -145
- 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 +0 -172
- package/lib/ocaml/belt_MutableMapInt.mli +0 -135
- 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 +0 -172
- package/lib/ocaml/belt_MutableMapString.mli +0 -135
- 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 +0 -222
- package/lib/ocaml/belt_MutableQueue.mli +0 -116
- 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 +0 -371
- package/lib/ocaml/belt_MutableSet.mli +0 -617
- 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 +0 -342
- package/lib/ocaml/belt_MutableSetInt.mli +0 -124
- 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 +0 -342
- package/lib/ocaml/belt_MutableSetString.mli +0 -124
- 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 +0 -106
- package/lib/ocaml/belt_MutableStack.mli +0 -63
- 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 +0 -93
- package/lib/ocaml/belt_Option.mli +0 -270
- 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 +0 -76
- package/lib/ocaml/belt_Range.mli +0 -114
- 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 +0 -75
- package/lib/ocaml/belt_Result.mli +0 -205
- 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 +0 -205
- package/lib/ocaml/belt_Set.cppo.mli +0 -153
- package/lib/ocaml/belt_Set.ml +0 -164
- package/lib/ocaml/belt_Set.mli +0 -523
- 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 +0 -237
- package/lib/ocaml/belt_SetDict.mli +0 -567
- 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 +0 -201
- package/lib/ocaml/belt_SetInt.mli +0 -151
- 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 +0 -201
- package/lib/ocaml/belt_SetString.mli +0 -151
- 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 +0 -322
- package/lib/ocaml/belt_SortArray.mli +0 -146
- 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 +0 -263
- package/lib/ocaml/belt_SortArrayInt.mli +0 -93
- 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 +0 -263
- package/lib/ocaml/belt_SortArrayString.mli +0 -93
- package/lib/ocaml/belt_internalAVLset.cmt +0 -0
- package/lib/ocaml/belt_internalAVLset.cmti +0 -0
- package/lib/ocaml/belt_internalAVLset.ml +0 -665
- package/lib/ocaml/belt_internalAVLset.mli +0 -124
- package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
- package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
- package/lib/ocaml/belt_internalAVLtree.ml +0 -762
- package/lib/ocaml/belt_internalAVLtree.mli +0 -215
- package/lib/ocaml/belt_internalBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalBuckets.ml +0 -218
- package/lib/ocaml/belt_internalBuckets.mli +0 -57
- package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
- package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
- package/lib/ocaml/belt_internalBucketsType.ml +0 -59
- package/lib/ocaml/belt_internalBucketsType.mli +0 -46
- package/lib/ocaml/belt_internalMapInt.cmt +0 -0
- package/lib/ocaml/belt_internalMapInt.ml +0 -227
- package/lib/ocaml/belt_internalMapString.cmt +0 -0
- package/lib/ocaml/belt_internalMapString.ml +0 -227
- package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalSetBuckets.ml +0 -157
- package/lib/ocaml/belt_internalSetBuckets.mli +0 -47
- package/lib/ocaml/belt_internalSetInt.cmt +0 -0
- package/lib/ocaml/belt_internalSetInt.ml +0 -129
- package/lib/ocaml/belt_internalSetString.cmt +0 -0
- package/lib/ocaml/belt_internalSetString.ml +0 -129
- package/lib/ocaml/belt_internals.cmti +0 -0
- package/lib/ocaml/belt_internals.mli +0 -79
- 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 +0 -250
- package/lib/ocaml/buffer.mli +0 -149
- 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 +0 -431
- package/lib/ocaml/bytes.mli +0 -430
- 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 +0 -428
- package/lib/ocaml/bytesLabels.mli +0 -276
- 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 +0 -20
- package/lib/ocaml/callback.mli +0 -34
- 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 +0 -89
- package/lib/ocaml/camlinternalLazy.mli +0 -27
- 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 +0 -21
- package/lib/ocaml/camlinternalMod.mli +0 -25
- 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 +0 -76
- package/lib/ocaml/char.mli +0 -72
- 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 +0 -87
- package/lib/ocaml/complex.mli +0 -86
- 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 +0 -66
- package/lib/ocaml/digest.mli +0 -68
- package/lib/ocaml/dom.cmi +0 -0
- package/lib/ocaml/dom.cmt +0 -0
- package/lib/ocaml/dom.ml +0 -296
- package/lib/ocaml/dom_storage.cmi +0 -0
- package/lib/ocaml/dom_storage.cmt +0 -0
- package/lib/ocaml/dom_storage.ml +0 -22
- package/lib/ocaml/dom_storage2.cmi +0 -0
- package/lib/ocaml/dom_storage2.cmt +0 -0
- package/lib/ocaml/dom_storage2.ml +0 -11
- 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 +0 -233
- package/lib/ocaml/filename.mli +0 -134
- 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 +0 -201
- package/lib/ocaml/genlex.mli +0 -73
- package/lib/ocaml/hashmap.cppo.ml +0 -214
- package/lib/ocaml/hashmap.cppo.mli +0 -54
- package/lib/ocaml/hashset.cppo.ml +0 -165
- package/lib/ocaml/hashset.cppo.mli +0 -77
- 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 +0 -541
- package/lib/ocaml/hashtbl.mli +0 -411
- package/lib/ocaml/hashtblLabels.cmi +0 -0
- package/lib/ocaml/hashtblLabels.cmt +0 -0
- package/lib/ocaml/hashtblLabels.ml +0 -130
- 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 +0 -64
- package/lib/ocaml/int32.mli +0 -186
- 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 +0 -72
- package/lib/ocaml/int64.mli +0 -197
- package/lib/ocaml/internal_map.cppo.ml +0 -230
- package/lib/ocaml/internal_set.cppo.ml +0 -134
- package/lib/ocaml/js.cmi +0 -0
- package/lib/ocaml/js.cmt +0 -0
- package/lib/ocaml/js.ml +0 -316
- package/lib/ocaml/js_OO.cmi +0 -0
- package/lib/ocaml/js_OO.cmt +0 -0
- package/lib/ocaml/js_OO.ml +0 -180
- package/lib/ocaml/js_array.cmi +0 -0
- package/lib/ocaml/js_array.cmt +0 -0
- package/lib/ocaml/js_array.ml +0 -970
- package/lib/ocaml/js_array2.cmi +0 -0
- package/lib/ocaml/js_array2.cmt +0 -0
- package/lib/ocaml/js_array2.ml +0 -1065
- package/lib/ocaml/js_bigint.cmi +0 -0
- package/lib/ocaml/js_bigint.cmt +0 -0
- package/lib/ocaml/js_bigint.ml +0 -3
- 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 +0 -29
- package/lib/ocaml/js_cast.mli +0 -45
- package/lib/ocaml/js_console.cmi +0 -0
- package/lib/ocaml/js_console.cmt +0 -0
- package/lib/ocaml/js_console.ml +0 -51
- package/lib/ocaml/js_date.cmi +0 -0
- package/lib/ocaml/js_date.cmt +0 -0
- package/lib/ocaml/js_date.ml +0 -1263
- 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 +0 -114
- package/lib/ocaml/js_dict.mli +0 -152
- 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 +0 -102
- package/lib/ocaml/js_exn.mli +0 -79
- package/lib/ocaml/js_float.cmi +0 -0
- package/lib/ocaml/js_float.cmt +0 -0
- package/lib/ocaml/js_float.ml +0 -294
- package/lib/ocaml/js_global.cmi +0 -0
- package/lib/ocaml/js_global.cmt +0 -0
- package/lib/ocaml/js_global.ml +0 -185
- package/lib/ocaml/js_int.cmi +0 -0
- package/lib/ocaml/js_int.cmt +0 -0
- package/lib/ocaml/js_int.ml +0 -158
- 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 +0 -195
- package/lib/ocaml/js_json.mli +0 -244
- 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 +0 -174
- package/lib/ocaml/js_list.mli +0 -72
- package/lib/ocaml/js_map.cmi +0 -0
- package/lib/ocaml/js_map.cmt +0 -0
- package/lib/ocaml/js_map.ml +0 -3
- 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 +0 -50
- package/lib/ocaml/js_mapperRt.mli +0 -44
- package/lib/ocaml/js_math.cmi +0 -0
- package/lib/ocaml/js_math.cmt +0 -0
- package/lib/ocaml/js_math.ml +0 -626
- 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 +0 -57
- package/lib/ocaml/js_null.mli +0 -87
- 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 +0 -50
- package/lib/ocaml/js_null_undefined.mli +0 -85
- package/lib/ocaml/js_obj.cmi +0 -0
- package/lib/ocaml/js_obj.cmt +0 -0
- package/lib/ocaml/js_obj.ml +0 -100
- 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 +0 -203
- package/lib/ocaml/js_option.mli +0 -52
- package/lib/ocaml/js_promise.cmi +0 -0
- package/lib/ocaml/js_promise.cmt +0 -0
- package/lib/ocaml/js_promise.ml +0 -100
- package/lib/ocaml/js_promise2.cmi +0 -0
- package/lib/ocaml/js_promise2.cmt +0 -0
- package/lib/ocaml/js_promise2.res +0 -58
- package/lib/ocaml/js_re.cmi +0 -0
- package/lib/ocaml/js_re.cmt +0 -0
- package/lib/ocaml/js_re.ml +0 -184
- 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 +0 -28
- package/lib/ocaml/js_result.mli +0 -28
- package/lib/ocaml/js_set.cmi +0 -0
- package/lib/ocaml/js_set.cmt +0 -0
- package/lib/ocaml/js_set.ml +0 -3
- package/lib/ocaml/js_string.cmi +0 -0
- package/lib/ocaml/js_string.cmt +0 -0
- package/lib/ocaml/js_string.ml +0 -914
- package/lib/ocaml/js_string2.cmi +0 -0
- package/lib/ocaml/js_string2.cmt +0 -0
- package/lib/ocaml/js_string2.ml +0 -912
- 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 +0 -429
- package/lib/ocaml/js_typed_array.ml +0 -1405
- 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 +0 -296
- package/lib/ocaml/js_typed_array2.ml +0 -1269
- 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 +0 -118
- package/lib/ocaml/js_types.mli +0 -78
- 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 +0 -59
- package/lib/ocaml/js_undefined.mli +0 -92
- 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 +0 -143
- package/lib/ocaml/js_vector.mli +0 -92
- package/lib/ocaml/js_weakmap.cmi +0 -0
- package/lib/ocaml/js_weakmap.cmt +0 -0
- package/lib/ocaml/js_weakmap.ml +0 -3
- package/lib/ocaml/js_weakset.cmi +0 -0
- package/lib/ocaml/js_weakset.cmt +0 -0
- package/lib/ocaml/js_weakset.ml +0 -3
- package/lib/ocaml/jsx.cmi +0 -0
- package/lib/ocaml/jsx.cmt +0 -0
- package/lib/ocaml/jsx.res +0 -40
- package/lib/ocaml/jsxDOM.cmi +0 -0
- package/lib/ocaml/jsxDOM.cmt +0 -0
- package/lib/ocaml/jsxDOM.res +0 -620
- package/lib/ocaml/jsxDOMStyle.cmi +0 -0
- package/lib/ocaml/jsxDOMStyle.cmt +0 -0
- package/lib/ocaml/jsxDOMStyle.ml +0 -781
- package/lib/ocaml/jsxEvent.cmi +0 -0
- package/lib/ocaml/jsxEvent.cmt +0 -0
- package/lib/ocaml/jsxEvent.ml +0 -358
- package/lib/ocaml/jsxPPXReactSupport.cmi +0 -0
- package/lib/ocaml/jsxPPXReactSupport.cmt +0 -0
- package/lib/ocaml/jsxPPXReactSupport.res +0 -48
- 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 +0 -70
- package/lib/ocaml/lazy.mli +0 -95
- 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 +0 -230
- package/lib/ocaml/lexing.mli +0 -172
- 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 +0 -485
- package/lib/ocaml/list.mli +0 -347
- 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 +0 -485
- package/lib/ocaml/listLabels.mli +0 -353
- 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 +0 -174
- package/lib/ocaml/map.cppo.mli +0 -191
- package/lib/ocaml/map.ml +0 -480
- package/lib/ocaml/map.mli +0 -315
- package/lib/ocaml/mapLabels.cmi +0 -0
- package/lib/ocaml/mapLabels.cmt +0 -0
- package/lib/ocaml/mapLabels.ml +0 -480
- package/lib/ocaml/mapm.cppo.ml +0 -177
- package/lib/ocaml/mapm.cppo.mli +0 -138
- 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 +0 -22
- package/lib/ocaml/moreLabels.mli +0 -198
- package/lib/ocaml/node.cmi +0 -0
- package/lib/ocaml/node.cmt +0 -0
- package/lib/ocaml/node.ml +0 -84
- package/lib/ocaml/node_buffer.cmi +0 -0
- package/lib/ocaml/node_buffer.cmt +0 -0
- package/lib/ocaml/node_buffer.ml +0 -47
- 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 +0 -50
- package/lib/ocaml/node_fs.cmi +0 -0
- package/lib/ocaml/node_fs.cmt +0 -0
- package/lib/ocaml/node_fs.ml +0 -153
- package/lib/ocaml/node_module.cmi +0 -0
- package/lib/ocaml/node_module.cmt +0 -0
- package/lib/ocaml/node_module.ml +0 -29
- package/lib/ocaml/node_path.cmi +0 -0
- package/lib/ocaml/node_path.cmt +0 -0
- package/lib/ocaml/node_path.ml +0 -71
- 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 +0 -59
- package/lib/ocaml/node_process.mli +0 -48
- 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 +0 -29
- package/lib/ocaml/obj.mli +0 -62
- 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 +0 -212
- package/lib/ocaml/parsing.mli +0 -105
- 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 +0 -297
- package/lib/ocaml/pervasives.mli +0 -771
- 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 +0 -75
- package/lib/ocaml/printexc.mli +0 -57
- 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 +0 -132
- package/lib/ocaml/queue.mli +0 -82
- 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 +0 -273
- package/lib/ocaml/random.mli +0 -102
- 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 +0 -526
- package/lib/ocaml/set.mli +0 -266
- package/lib/ocaml/setLabels.cmi +0 -0
- package/lib/ocaml/setLabels.cmt +0 -0
- package/lib/ocaml/setLabels.ml +0 -526
- package/lib/ocaml/setm.cppo.ml +0 -346
- package/lib/ocaml/setm.cppo.mli +0 -126
- 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 +0 -267
- package/lib/ocaml/sort.cppo.mli +0 -96
- package/lib/ocaml/sort.ml +0 -99
- package/lib/ocaml/sort.mli +0 -44
- 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 +0 -44
- package/lib/ocaml/stack.mli +0 -63
- 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 +0 -24
- package/lib/ocaml/stdLabels.mli +0 -29
- 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 +0 -213
- package/lib/ocaml/stream.mli +0 -108
- 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 +0 -190
- package/lib/ocaml/string.mli +0 -286
- 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 +0 -190
- package/lib/ocaml/stringLabels.mli +0 -241
- 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 +0 -135
- package/lib/ocaml/sys.mli +0 -333
- 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 +0 -58
- package/lib/ocaml/uchar.mli +0 -98
package/lib/ocaml/map.cppo.mli
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
#ifdef TYPE_STRING
|
|
2
|
-
type key = string
|
|
3
|
-
#elif defined TYPE_INT
|
|
4
|
-
type key = int
|
|
5
|
-
#else
|
|
6
|
-
[%error "unknown type"]
|
|
7
|
-
#endif
|
|
8
|
-
type 'value t
|
|
9
|
-
(** The type of maps from type `key` to type `'value`. *)
|
|
10
|
-
|
|
11
|
-
val empty: 'v t
|
|
12
|
-
|
|
13
|
-
val isEmpty: 'v t -> bool
|
|
14
|
-
|
|
15
|
-
val has: 'v t -> key -> bool
|
|
16
|
-
|
|
17
|
-
val cmpU: 'v t -> 'v t -> ('v -> 'v -> int [@bs]) -> int
|
|
18
|
-
val cmp: 'v t -> 'v t -> ('v -> 'v -> int) -> int
|
|
19
|
-
|
|
20
|
-
val eqU: 'v t -> 'v t -> ('v -> 'v -> bool [@bs]) -> bool
|
|
21
|
-
val eq: 'v t -> 'v t -> ('v -> 'v -> bool) -> bool
|
|
22
|
-
(**
|
|
23
|
-
`eq m1 m2` tests whether the maps `m1` and `m2` are
|
|
24
|
-
equal, that is, contain equal keys and associate them with
|
|
25
|
-
equal data.
|
|
26
|
-
*)
|
|
27
|
-
|
|
28
|
-
val findFirstByU : 'v t -> (key -> 'v -> bool [@bs]) -> (key * 'v) option
|
|
29
|
-
val findFirstBy : 'v t -> (key -> 'v -> bool) -> (key * 'v) option
|
|
30
|
-
(**
|
|
31
|
-
`findFirstBy m p` uses funcion `f` to find the first key value pair
|
|
32
|
-
to match predicate `p`.
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
let s0 = fromArray ~id:(module IntCmp) [|4,"4";1,"1";2,"2,"3""|];;
|
|
36
|
-
findFirstBy s0 (fun k v -> k = 4 ) = option (4, "4");;
|
|
37
|
-
```
|
|
38
|
-
*)
|
|
39
|
-
|
|
40
|
-
val forEachU: 'v t -> (key -> 'v -> unit [@bs]) -> unit
|
|
41
|
-
val forEach: 'v t -> (key -> 'v -> unit) -> unit
|
|
42
|
-
(**
|
|
43
|
-
`forEach m f` applies `f` to all bindings in map `m`.
|
|
44
|
-
`f` receives the key as first argument, and the associated value
|
|
45
|
-
as second argument. The bindings are passed to `f` in increasing
|
|
46
|
-
order with respect to the ordering over the type of the keys.
|
|
47
|
-
*)
|
|
48
|
-
|
|
49
|
-
val reduceU: 'v t -> 'v2 -> ('v2 -> key -> 'v -> 'v2 [@bs]) -> 'v2
|
|
50
|
-
val reduce: 'v t -> 'v2 -> ('v2 -> key -> 'v -> 'v2) -> 'v2
|
|
51
|
-
(**
|
|
52
|
-
`reduce m a f` computes `(f kN dN ... (f k1 d1 a)...)`,
|
|
53
|
-
where `k1 ... kN` are the keys of all bindings in `m`
|
|
54
|
-
(in increasing order), and `d1 ... dN` are the associated data.
|
|
55
|
-
*)
|
|
56
|
-
|
|
57
|
-
val everyU: 'v t -> (key -> 'v -> bool [@bs]) -> bool
|
|
58
|
-
val every: 'v t -> (key -> 'v -> bool) -> bool
|
|
59
|
-
(** `every m p` checks if all the bindings of the map
|
|
60
|
-
satisfy the predicate `p`. Order unspecified *)
|
|
61
|
-
|
|
62
|
-
val someU: 'v t -> (key -> 'v -> bool [@bs]) -> bool
|
|
63
|
-
val some: 'v t -> (key -> 'v -> bool) -> bool
|
|
64
|
-
(** `some m p` checks if at least one binding of the map
|
|
65
|
-
satisfy the predicate `p`. Order unspecified *)
|
|
66
|
-
|
|
67
|
-
val size: 'v t -> int
|
|
68
|
-
|
|
69
|
-
val toList: 'v t -> (key * 'v) list
|
|
70
|
-
(** In increasing order. *)
|
|
71
|
-
|
|
72
|
-
val toArray: 'v t -> (key * 'v) array
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
val fromArray: (key * 'v) array -> 'v t
|
|
76
|
-
|
|
77
|
-
val keysToArray: 'v t -> key array
|
|
78
|
-
|
|
79
|
-
val valuesToArray: 'v t -> 'v array
|
|
80
|
-
|
|
81
|
-
val minKey: _ t -> key option
|
|
82
|
-
|
|
83
|
-
val minKeyUndefined: _ t -> key Js.undefined
|
|
84
|
-
|
|
85
|
-
val maxKey: _ t -> key option
|
|
86
|
-
|
|
87
|
-
val maxKeyUndefined: _ t -> key Js.undefined
|
|
88
|
-
|
|
89
|
-
val minimum: 'v t -> (key * 'v) option
|
|
90
|
-
|
|
91
|
-
val minUndefined: 'v t -> (key * 'v) Js.undefined
|
|
92
|
-
|
|
93
|
-
val maximum: 'v t -> (key * 'v) option
|
|
94
|
-
|
|
95
|
-
val maxUndefined: 'v t -> (key * 'v) Js.undefined
|
|
96
|
-
|
|
97
|
-
val get: 'v t -> key -> 'v option
|
|
98
|
-
|
|
99
|
-
val getUndefined: 'v t -> key -> 'v Js.undefined
|
|
100
|
-
|
|
101
|
-
val getWithDefault: 'v t -> key -> 'v -> 'v
|
|
102
|
-
|
|
103
|
-
val getExn: 'v t -> key -> 'v
|
|
104
|
-
|
|
105
|
-
val checkInvariantInternal: _ t -> unit
|
|
106
|
-
(**
|
|
107
|
-
**raise** when invariant is not held
|
|
108
|
-
*)
|
|
109
|
-
|
|
110
|
-
val remove: 'v t -> key -> 'v t
|
|
111
|
-
(** `remove m x` returns a map containing the same bindings as
|
|
112
|
-
`m`, except for `x` which is unbound in the returned map. *)
|
|
113
|
-
|
|
114
|
-
val removeMany: 'v t -> key array -> 'v t
|
|
115
|
-
|
|
116
|
-
val set: 'v t -> key -> 'v -> 'v t
|
|
117
|
-
(**
|
|
118
|
-
`set m x y` returns a map containing the same bindings as
|
|
119
|
-
`m`, plus a binding of `x` to `y`. If `x` was already bound
|
|
120
|
-
in `m`, its previous binding disappears.
|
|
121
|
-
*)
|
|
122
|
-
|
|
123
|
-
val updateU: 'v t -> key -> ('v option -> 'v option [@bs]) -> 'v t
|
|
124
|
-
val update: 'v t -> key -> ('v option -> 'v option) -> 'v t
|
|
125
|
-
|
|
126
|
-
val mergeU:
|
|
127
|
-
'v t -> 'v2 t ->
|
|
128
|
-
(key -> 'v option -> 'v2 option -> 'c option [@bs]) ->
|
|
129
|
-
'c t
|
|
130
|
-
val merge:
|
|
131
|
-
'v t -> 'v2 t ->
|
|
132
|
-
(key -> 'v option -> 'v2 option -> 'c option) ->
|
|
133
|
-
'c t
|
|
134
|
-
(**
|
|
135
|
-
`merge m1 m2 f` computes a map whose keys is a subset of keys of `m1`
|
|
136
|
-
and of `m2`. The presence of each such binding, and the corresponding
|
|
137
|
-
value, is determined with the function `f`.
|
|
138
|
-
*)
|
|
139
|
-
|
|
140
|
-
val mergeMany: 'v t -> (key * 'v) array -> 'v t
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
val keepU:
|
|
144
|
-
'v t ->
|
|
145
|
-
(key -> 'v -> bool [@bs]) ->
|
|
146
|
-
'v t
|
|
147
|
-
val keep:
|
|
148
|
-
'v t ->
|
|
149
|
-
(key -> 'v -> bool) ->
|
|
150
|
-
'v t
|
|
151
|
-
(** `keep m p` returns the map with all the bindings in `m`
|
|
152
|
-
that satisfy predicate `p`. *)
|
|
153
|
-
|
|
154
|
-
val partitionU:
|
|
155
|
-
'v t ->
|
|
156
|
-
(key -> 'v -> bool [@bs]) ->
|
|
157
|
-
'v t * 'v t
|
|
158
|
-
val partition:
|
|
159
|
-
'v t ->
|
|
160
|
-
(key -> 'v -> bool) ->
|
|
161
|
-
'v t * 'v t
|
|
162
|
-
(**
|
|
163
|
-
`partition m p` returns a pair of maps `(m1, m2)`, where
|
|
164
|
-
`m1` contains all the bindings of `s` that satisfy the
|
|
165
|
-
predicate `p`, and `m2` is the map with all the bindings of
|
|
166
|
-
`s` that do not satisfy `p`.
|
|
167
|
-
*)
|
|
168
|
-
|
|
169
|
-
val split: key -> 'v t -> 'v t * 'v option * 'v t
|
|
170
|
-
(**
|
|
171
|
-
`split x m` returns a triple `(l, data, r)`, where
|
|
172
|
-
`l` is the map with all the bindings of `m` whose key
|
|
173
|
-
is strictly less than `x`;
|
|
174
|
-
`r` is the map with all the bindings of `m` whose key
|
|
175
|
-
is strictly greater than `x`;
|
|
176
|
-
`data` is `None` if `m` contains no binding for `x`,
|
|
177
|
-
or `Some v` if `m` binds `v` to `x`.
|
|
178
|
-
*)
|
|
179
|
-
|
|
180
|
-
val mapU: 'v t -> ('v -> 'v2 [@bs]) -> 'v2 t
|
|
181
|
-
val map: 'v t -> ('v -> 'v2) -> 'v2 t
|
|
182
|
-
(**
|
|
183
|
-
`map m f` returns a map with same domain as `m`, where the
|
|
184
|
-
associated value `a` of all bindings of `m` has been
|
|
185
|
-
replaced by the result of the application of `f` to `a`.
|
|
186
|
-
The bindings are passed to `f` in increasing order
|
|
187
|
-
with respect to the ordering over the type of the keys.
|
|
188
|
-
*)
|
|
189
|
-
|
|
190
|
-
val mapWithKeyU: 'v t -> (key -> 'v -> 'v2 [@bs]) -> 'v2 t
|
|
191
|
-
val mapWithKey: 'v t -> (key -> 'v -> 'v2) -> 'v2 t
|
package/lib/ocaml/map.ml
DELETED
|
@@ -1,480 +0,0 @@
|
|
|
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 -> 'a -> 'a t -> 'a t
|
|
30
|
-
val update: key -> ('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
|
-
(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
|
|
35
|
-
val union: (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
|
|
36
|
-
val compare: ('a -> 'a -> int) -> 'a t -> 'a t -> int
|
|
37
|
-
val equal: ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
|
|
38
|
-
val iter: (key -> 'a -> unit) -> 'a t -> unit
|
|
39
|
-
val fold: (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
|
|
40
|
-
val for_all: (key -> 'a -> bool) -> 'a t -> bool
|
|
41
|
-
val exists: (key -> 'a -> bool) -> 'a t -> bool
|
|
42
|
-
val filter: (key -> 'a -> bool) -> 'a t -> 'a t
|
|
43
|
-
val partition: (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: (key -> bool) -> 'a t -> key * 'a
|
|
56
|
-
val find_first_opt: (key -> bool) -> 'a t -> (key * 'a) option
|
|
57
|
-
val find_last: (key -> bool) -> 'a t -> key * 'a
|
|
58
|
-
val find_last_opt: (key -> bool) -> 'a t -> (key * 'a) option
|
|
59
|
-
val map: ('a -> 'b) -> 'a t -> 'b t
|
|
60
|
-
val mapi: (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 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 x data l in
|
|
124
|
-
if l == ll then m else bal ll v d r
|
|
125
|
-
else
|
|
126
|
-
let rr = add 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 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 x f l in
|
|
283
|
-
if l == ll then m else bal ll v d r
|
|
284
|
-
else
|
|
285
|
-
let rr = update 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 v 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 accu =
|
|
312
|
-
match m with
|
|
313
|
-
Empty -> accu
|
|
314
|
-
| Node {l; v; d; r} ->
|
|
315
|
-
fold f r (f v d (fold f l accu))
|
|
316
|
-
|
|
317
|
-
let rec for_all p = function
|
|
318
|
-
Empty -> true
|
|
319
|
-
| Node {l; v; d; r} -> p v d && for_all p l && for_all p r
|
|
320
|
-
|
|
321
|
-
let rec exists p = function
|
|
322
|
-
Empty -> false
|
|
323
|
-
| Node {l; v; d; r} -> p v d || exists p l || exists 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 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 p l in
|
|
417
|
-
let pvd = p v d in
|
|
418
|
-
let r' = filter 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 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 p l in
|
|
427
|
-
let pvd = p v d in
|
|
428
|
-
let (rt, rf) = partition 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
|