@tellahq/rescript 10.1.0-alpha.2 → 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.
Files changed (668) hide show
  1. package/CHANGELOG.md +204 -2
  2. package/README.md +1 -1
  3. package/darwinarm64/bsb_helper.exe +0 -0
  4. package/darwinarm64/bsc.exe +0 -0
  5. package/darwinarm64/ninja.exe +0 -0
  6. package/darwinarm64/rescript.exe +0 -0
  7. package/docs/docson/build-schema.json +497 -516
  8. package/lib/4.06.1/bsb_helper.ml +6 -1
  9. package/lib/4.06.1/rescript.ml +1414 -1191
  10. package/lib/4.06.1/whole_compiler.ml +69844 -69069
  11. package/lib/es6/belt_internalBuckets.js +13 -13
  12. package/lib/es6/caml_float.js +5 -5
  13. package/lib/es6/caml_format.js +1 -1
  14. package/lib/es6/caml_int64.js +1 -1
  15. package/lib/es6/caml_obj.js +26 -6
  16. package/lib/es6/complex.js +4 -4
  17. package/lib/es6/js.js +3 -0
  18. package/lib/es6/js_promise2.js +16 -0
  19. package/lib/es6/jsxPPXReactSupport.js +26 -0
  20. package/lib/js/belt_internalBuckets.js +13 -13
  21. package/lib/js/caml_float.js +5 -5
  22. package/lib/js/caml_format.js +1 -1
  23. package/lib/js/caml_int64.js +1 -1
  24. package/lib/js/caml_obj.js +26 -6
  25. package/lib/js/complex.js +4 -4
  26. package/lib/js/js.js +3 -0
  27. package/lib/js/js_promise2.js +14 -0
  28. package/lib/js/jsxPPXReactSupport.js +24 -0
  29. package/package.json +2 -1
  30. package/scripts/buildNinjaBinary.js +29 -0
  31. package/scripts/install.js +7 -3
  32. package/scripts/installUtils.js +9 -1
  33. package/scripts/rescript_arg.js +2 -4
  34. package/scripts/rescript_format.js +73 -39
  35. package/win32/refmt.exe +0 -0
  36. package/darwin/bsb_helper.exe +0 -0
  37. package/darwin/bsc.exe +0 -0
  38. package/darwin/ninja.COPYING +0 -202
  39. package/darwin/ninja.exe +0 -0
  40. package/darwin/rescript.exe +0 -0
  41. package/darwinarm64/ninja.COPYING +0 -202
  42. package/freebsd/ninja.COPYING +0 -202
  43. package/lib/ocaml/arg.cmi +0 -0
  44. package/lib/ocaml/arg.cmt +0 -0
  45. package/lib/ocaml/arg.cmti +0 -0
  46. package/lib/ocaml/arg.ml +0 -359
  47. package/lib/ocaml/arg.mli +0 -185
  48. package/lib/ocaml/array.cmi +0 -0
  49. package/lib/ocaml/array.cmt +0 -0
  50. package/lib/ocaml/array.cmti +0 -0
  51. package/lib/ocaml/array.ml +0 -307
  52. package/lib/ocaml/array.mli +0 -275
  53. package/lib/ocaml/arrayLabels.cmi +0 -0
  54. package/lib/ocaml/arrayLabels.cmt +0 -0
  55. package/lib/ocaml/arrayLabels.cmti +0 -0
  56. package/lib/ocaml/arrayLabels.ml +0 -307
  57. package/lib/ocaml/arrayLabels.mli +0 -276
  58. package/lib/ocaml/belt.cmi +0 -0
  59. package/lib/ocaml/belt.cmt +0 -0
  60. package/lib/ocaml/belt.ml +0 -352
  61. package/lib/ocaml/belt_Array.cmi +0 -0
  62. package/lib/ocaml/belt_Array.cmt +0 -0
  63. package/lib/ocaml/belt_Array.cmti +0 -0
  64. package/lib/ocaml/belt_Array.ml +0 -525
  65. package/lib/ocaml/belt_Array.mli +0 -707
  66. package/lib/ocaml/belt_Float.cmi +0 -0
  67. package/lib/ocaml/belt_Float.cmt +0 -0
  68. package/lib/ocaml/belt_Float.cmti +0 -0
  69. package/lib/ocaml/belt_Float.ml +0 -50
  70. package/lib/ocaml/belt_Float.mli +0 -106
  71. package/lib/ocaml/belt_HashMap.cmi +0 -0
  72. package/lib/ocaml/belt_HashMap.cmt +0 -0
  73. package/lib/ocaml/belt_HashMap.cmti +0 -0
  74. package/lib/ocaml/belt_HashMap.ml +0 -226
  75. package/lib/ocaml/belt_HashMap.mli +0 -436
  76. package/lib/ocaml/belt_HashMapInt.cmi +0 -0
  77. package/lib/ocaml/belt_HashMapInt.cmt +0 -0
  78. package/lib/ocaml/belt_HashMapInt.cmti +0 -0
  79. package/lib/ocaml/belt_HashMapInt.ml +0 -206
  80. package/lib/ocaml/belt_HashMapInt.mli +0 -50
  81. package/lib/ocaml/belt_HashMapString.cmi +0 -0
  82. package/lib/ocaml/belt_HashMapString.cmt +0 -0
  83. package/lib/ocaml/belt_HashMapString.cmti +0 -0
  84. package/lib/ocaml/belt_HashMapString.ml +0 -206
  85. package/lib/ocaml/belt_HashMapString.mli +0 -50
  86. package/lib/ocaml/belt_HashSet.cmi +0 -0
  87. package/lib/ocaml/belt_HashSet.cmt +0 -0
  88. package/lib/ocaml/belt_HashSet.cmti +0 -0
  89. package/lib/ocaml/belt_HashSet.ml +0 -196
  90. package/lib/ocaml/belt_HashSet.mli +0 -125
  91. package/lib/ocaml/belt_HashSetInt.cmi +0 -0
  92. package/lib/ocaml/belt_HashSetInt.cmt +0 -0
  93. package/lib/ocaml/belt_HashSetInt.cmti +0 -0
  94. package/lib/ocaml/belt_HashSetInt.ml +0 -155
  95. package/lib/ocaml/belt_HashSetInt.mli +0 -74
  96. package/lib/ocaml/belt_HashSetString.cmi +0 -0
  97. package/lib/ocaml/belt_HashSetString.cmt +0 -0
  98. package/lib/ocaml/belt_HashSetString.cmti +0 -0
  99. package/lib/ocaml/belt_HashSetString.ml +0 -156
  100. package/lib/ocaml/belt_HashSetString.mli +0 -74
  101. package/lib/ocaml/belt_Id.cmi +0 -0
  102. package/lib/ocaml/belt_Id.cmt +0 -0
  103. package/lib/ocaml/belt_Id.cmti +0 -0
  104. package/lib/ocaml/belt_Id.ml +0 -133
  105. package/lib/ocaml/belt_Id.mli +0 -171
  106. package/lib/ocaml/belt_Int.cmi +0 -0
  107. package/lib/ocaml/belt_Int.cmt +0 -0
  108. package/lib/ocaml/belt_Int.cmti +0 -0
  109. package/lib/ocaml/belt_Int.ml +0 -50
  110. package/lib/ocaml/belt_Int.mli +0 -103
  111. package/lib/ocaml/belt_List.cmi +0 -0
  112. package/lib/ocaml/belt_List.cmt +0 -0
  113. package/lib/ocaml/belt_List.cmti +0 -0
  114. package/lib/ocaml/belt_List.ml +0 -803
  115. package/lib/ocaml/belt_List.mli +0 -844
  116. package/lib/ocaml/belt_Map.cmi +0 -0
  117. package/lib/ocaml/belt_Map.cmt +0 -0
  118. package/lib/ocaml/belt_Map.cmti +0 -0
  119. package/lib/ocaml/belt_Map.ml +0 -170
  120. package/lib/ocaml/belt_Map.mli +0 -496
  121. package/lib/ocaml/belt_MapDict.cmi +0 -0
  122. package/lib/ocaml/belt_MapDict.cmt +0 -0
  123. package/lib/ocaml/belt_MapDict.cmti +0 -0
  124. package/lib/ocaml/belt_MapDict.ml +0 -278
  125. package/lib/ocaml/belt_MapDict.mli +0 -268
  126. package/lib/ocaml/belt_MapInt.cmi +0 -0
  127. package/lib/ocaml/belt_MapInt.cmt +0 -0
  128. package/lib/ocaml/belt_MapInt.cmti +0 -0
  129. package/lib/ocaml/belt_MapInt.ml +0 -169
  130. package/lib/ocaml/belt_MapInt.mli +0 -187
  131. package/lib/ocaml/belt_MapString.cmi +0 -0
  132. package/lib/ocaml/belt_MapString.cmt +0 -0
  133. package/lib/ocaml/belt_MapString.cmti +0 -0
  134. package/lib/ocaml/belt_MapString.ml +0 -169
  135. package/lib/ocaml/belt_MapString.mli +0 -187
  136. package/lib/ocaml/belt_MutableMap.cmi +0 -0
  137. package/lib/ocaml/belt_MutableMap.cmt +0 -0
  138. package/lib/ocaml/belt_MutableMap.cmti +0 -0
  139. package/lib/ocaml/belt_MutableMap.ml +0 -241
  140. package/lib/ocaml/belt_MutableMap.mli +0 -145
  141. package/lib/ocaml/belt_MutableMapInt.cmi +0 -0
  142. package/lib/ocaml/belt_MutableMapInt.cmt +0 -0
  143. package/lib/ocaml/belt_MutableMapInt.cmti +0 -0
  144. package/lib/ocaml/belt_MutableMapInt.ml +0 -172
  145. package/lib/ocaml/belt_MutableMapInt.mli +0 -135
  146. package/lib/ocaml/belt_MutableMapString.cmi +0 -0
  147. package/lib/ocaml/belt_MutableMapString.cmt +0 -0
  148. package/lib/ocaml/belt_MutableMapString.cmti +0 -0
  149. package/lib/ocaml/belt_MutableMapString.ml +0 -172
  150. package/lib/ocaml/belt_MutableMapString.mli +0 -135
  151. package/lib/ocaml/belt_MutableQueue.cmi +0 -0
  152. package/lib/ocaml/belt_MutableQueue.cmt +0 -0
  153. package/lib/ocaml/belt_MutableQueue.cmti +0 -0
  154. package/lib/ocaml/belt_MutableQueue.ml +0 -222
  155. package/lib/ocaml/belt_MutableQueue.mli +0 -116
  156. package/lib/ocaml/belt_MutableSet.cmi +0 -0
  157. package/lib/ocaml/belt_MutableSet.cmt +0 -0
  158. package/lib/ocaml/belt_MutableSet.cmti +0 -0
  159. package/lib/ocaml/belt_MutableSet.ml +0 -371
  160. package/lib/ocaml/belt_MutableSet.mli +0 -617
  161. package/lib/ocaml/belt_MutableSetInt.cmi +0 -0
  162. package/lib/ocaml/belt_MutableSetInt.cmt +0 -0
  163. package/lib/ocaml/belt_MutableSetInt.cmti +0 -0
  164. package/lib/ocaml/belt_MutableSetInt.ml +0 -342
  165. package/lib/ocaml/belt_MutableSetInt.mli +0 -124
  166. package/lib/ocaml/belt_MutableSetString.cmi +0 -0
  167. package/lib/ocaml/belt_MutableSetString.cmt +0 -0
  168. package/lib/ocaml/belt_MutableSetString.cmti +0 -0
  169. package/lib/ocaml/belt_MutableSetString.ml +0 -342
  170. package/lib/ocaml/belt_MutableSetString.mli +0 -124
  171. package/lib/ocaml/belt_MutableStack.cmi +0 -0
  172. package/lib/ocaml/belt_MutableStack.cmt +0 -0
  173. package/lib/ocaml/belt_MutableStack.cmti +0 -0
  174. package/lib/ocaml/belt_MutableStack.ml +0 -106
  175. package/lib/ocaml/belt_MutableStack.mli +0 -63
  176. package/lib/ocaml/belt_Option.cmi +0 -0
  177. package/lib/ocaml/belt_Option.cmt +0 -0
  178. package/lib/ocaml/belt_Option.cmti +0 -0
  179. package/lib/ocaml/belt_Option.ml +0 -93
  180. package/lib/ocaml/belt_Option.mli +0 -270
  181. package/lib/ocaml/belt_Range.cmi +0 -0
  182. package/lib/ocaml/belt_Range.cmt +0 -0
  183. package/lib/ocaml/belt_Range.cmti +0 -0
  184. package/lib/ocaml/belt_Range.ml +0 -76
  185. package/lib/ocaml/belt_Range.mli +0 -114
  186. package/lib/ocaml/belt_Result.cmi +0 -0
  187. package/lib/ocaml/belt_Result.cmt +0 -0
  188. package/lib/ocaml/belt_Result.cmti +0 -0
  189. package/lib/ocaml/belt_Result.ml +0 -75
  190. package/lib/ocaml/belt_Result.mli +0 -205
  191. package/lib/ocaml/belt_Set.cmi +0 -0
  192. package/lib/ocaml/belt_Set.cmt +0 -0
  193. package/lib/ocaml/belt_Set.cmti +0 -0
  194. package/lib/ocaml/belt_Set.cppo.ml +0 -205
  195. package/lib/ocaml/belt_Set.cppo.mli +0 -153
  196. package/lib/ocaml/belt_Set.ml +0 -164
  197. package/lib/ocaml/belt_Set.mli +0 -523
  198. package/lib/ocaml/belt_SetDict.cmi +0 -0
  199. package/lib/ocaml/belt_SetDict.cmt +0 -0
  200. package/lib/ocaml/belt_SetDict.cmti +0 -0
  201. package/lib/ocaml/belt_SetDict.ml +0 -237
  202. package/lib/ocaml/belt_SetDict.mli +0 -567
  203. package/lib/ocaml/belt_SetInt.cmi +0 -0
  204. package/lib/ocaml/belt_SetInt.cmt +0 -0
  205. package/lib/ocaml/belt_SetInt.cmti +0 -0
  206. package/lib/ocaml/belt_SetInt.ml +0 -201
  207. package/lib/ocaml/belt_SetInt.mli +0 -151
  208. package/lib/ocaml/belt_SetString.cmi +0 -0
  209. package/lib/ocaml/belt_SetString.cmt +0 -0
  210. package/lib/ocaml/belt_SetString.cmti +0 -0
  211. package/lib/ocaml/belt_SetString.ml +0 -201
  212. package/lib/ocaml/belt_SetString.mli +0 -151
  213. package/lib/ocaml/belt_SortArray.cmi +0 -0
  214. package/lib/ocaml/belt_SortArray.cmt +0 -0
  215. package/lib/ocaml/belt_SortArray.cmti +0 -0
  216. package/lib/ocaml/belt_SortArray.ml +0 -322
  217. package/lib/ocaml/belt_SortArray.mli +0 -146
  218. package/lib/ocaml/belt_SortArrayInt.cmi +0 -0
  219. package/lib/ocaml/belt_SortArrayInt.cmt +0 -0
  220. package/lib/ocaml/belt_SortArrayInt.cmti +0 -0
  221. package/lib/ocaml/belt_SortArrayInt.ml +0 -263
  222. package/lib/ocaml/belt_SortArrayInt.mli +0 -93
  223. package/lib/ocaml/belt_SortArrayString.cmi +0 -0
  224. package/lib/ocaml/belt_SortArrayString.cmt +0 -0
  225. package/lib/ocaml/belt_SortArrayString.cmti +0 -0
  226. package/lib/ocaml/belt_SortArrayString.ml +0 -263
  227. package/lib/ocaml/belt_SortArrayString.mli +0 -93
  228. package/lib/ocaml/belt_internalAVLset.cmt +0 -0
  229. package/lib/ocaml/belt_internalAVLset.cmti +0 -0
  230. package/lib/ocaml/belt_internalAVLset.ml +0 -665
  231. package/lib/ocaml/belt_internalAVLset.mli +0 -124
  232. package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
  233. package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
  234. package/lib/ocaml/belt_internalAVLtree.ml +0 -762
  235. package/lib/ocaml/belt_internalAVLtree.mli +0 -215
  236. package/lib/ocaml/belt_internalBuckets.cmt +0 -0
  237. package/lib/ocaml/belt_internalBuckets.cmti +0 -0
  238. package/lib/ocaml/belt_internalBuckets.ml +0 -218
  239. package/lib/ocaml/belt_internalBuckets.mli +0 -57
  240. package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
  241. package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
  242. package/lib/ocaml/belt_internalBucketsType.ml +0 -59
  243. package/lib/ocaml/belt_internalBucketsType.mli +0 -46
  244. package/lib/ocaml/belt_internalMapInt.cmt +0 -0
  245. package/lib/ocaml/belt_internalMapInt.ml +0 -227
  246. package/lib/ocaml/belt_internalMapString.cmt +0 -0
  247. package/lib/ocaml/belt_internalMapString.ml +0 -227
  248. package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
  249. package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
  250. package/lib/ocaml/belt_internalSetBuckets.ml +0 -157
  251. package/lib/ocaml/belt_internalSetBuckets.mli +0 -47
  252. package/lib/ocaml/belt_internalSetInt.cmt +0 -0
  253. package/lib/ocaml/belt_internalSetInt.ml +0 -129
  254. package/lib/ocaml/belt_internalSetString.cmt +0 -0
  255. package/lib/ocaml/belt_internalSetString.ml +0 -129
  256. package/lib/ocaml/belt_internals.cmti +0 -0
  257. package/lib/ocaml/belt_internals.mli +0 -79
  258. package/lib/ocaml/buffer.cmi +0 -0
  259. package/lib/ocaml/buffer.cmt +0 -0
  260. package/lib/ocaml/buffer.cmti +0 -0
  261. package/lib/ocaml/buffer.ml +0 -250
  262. package/lib/ocaml/buffer.mli +0 -149
  263. package/lib/ocaml/bytes.cmi +0 -0
  264. package/lib/ocaml/bytes.cmt +0 -0
  265. package/lib/ocaml/bytes.cmti +0 -0
  266. package/lib/ocaml/bytes.ml +0 -431
  267. package/lib/ocaml/bytes.mli +0 -430
  268. package/lib/ocaml/bytesLabels.cmi +0 -0
  269. package/lib/ocaml/bytesLabels.cmt +0 -0
  270. package/lib/ocaml/bytesLabels.cmti +0 -0
  271. package/lib/ocaml/bytesLabels.ml +0 -428
  272. package/lib/ocaml/bytesLabels.mli +0 -276
  273. package/lib/ocaml/callback.cmi +0 -0
  274. package/lib/ocaml/callback.cmt +0 -0
  275. package/lib/ocaml/callback.cmti +0 -0
  276. package/lib/ocaml/callback.ml +0 -20
  277. package/lib/ocaml/callback.mli +0 -34
  278. package/lib/ocaml/camlinternalLazy.cmi +0 -0
  279. package/lib/ocaml/camlinternalLazy.cmt +0 -0
  280. package/lib/ocaml/camlinternalLazy.cmti +0 -0
  281. package/lib/ocaml/camlinternalLazy.ml +0 -89
  282. package/lib/ocaml/camlinternalLazy.mli +0 -27
  283. package/lib/ocaml/camlinternalMod.cmi +0 -0
  284. package/lib/ocaml/camlinternalMod.cmt +0 -0
  285. package/lib/ocaml/camlinternalMod.cmti +0 -0
  286. package/lib/ocaml/camlinternalMod.ml +0 -21
  287. package/lib/ocaml/camlinternalMod.mli +0 -25
  288. package/lib/ocaml/char.cmi +0 -0
  289. package/lib/ocaml/char.cmt +0 -0
  290. package/lib/ocaml/char.cmti +0 -0
  291. package/lib/ocaml/char.ml +0 -76
  292. package/lib/ocaml/char.mli +0 -72
  293. package/lib/ocaml/complex.cmi +0 -0
  294. package/lib/ocaml/complex.cmt +0 -0
  295. package/lib/ocaml/complex.cmti +0 -0
  296. package/lib/ocaml/complex.ml +0 -87
  297. package/lib/ocaml/complex.mli +0 -86
  298. package/lib/ocaml/digest.cmi +0 -0
  299. package/lib/ocaml/digest.cmt +0 -0
  300. package/lib/ocaml/digest.cmti +0 -0
  301. package/lib/ocaml/digest.ml +0 -66
  302. package/lib/ocaml/digest.mli +0 -68
  303. package/lib/ocaml/dom.cmi +0 -0
  304. package/lib/ocaml/dom.cmt +0 -0
  305. package/lib/ocaml/dom.ml +0 -296
  306. package/lib/ocaml/dom_storage.cmi +0 -0
  307. package/lib/ocaml/dom_storage.cmt +0 -0
  308. package/lib/ocaml/dom_storage.ml +0 -22
  309. package/lib/ocaml/dom_storage2.cmi +0 -0
  310. package/lib/ocaml/dom_storage2.cmt +0 -0
  311. package/lib/ocaml/dom_storage2.ml +0 -11
  312. package/lib/ocaml/filename.cmi +0 -0
  313. package/lib/ocaml/filename.cmt +0 -0
  314. package/lib/ocaml/filename.cmti +0 -0
  315. package/lib/ocaml/filename.ml +0 -233
  316. package/lib/ocaml/filename.mli +0 -134
  317. package/lib/ocaml/genlex.cmi +0 -0
  318. package/lib/ocaml/genlex.cmt +0 -0
  319. package/lib/ocaml/genlex.cmti +0 -0
  320. package/lib/ocaml/genlex.ml +0 -201
  321. package/lib/ocaml/genlex.mli +0 -73
  322. package/lib/ocaml/hashmap.cppo.ml +0 -214
  323. package/lib/ocaml/hashmap.cppo.mli +0 -54
  324. package/lib/ocaml/hashset.cppo.ml +0 -165
  325. package/lib/ocaml/hashset.cppo.mli +0 -77
  326. package/lib/ocaml/hashtbl.cmi +0 -0
  327. package/lib/ocaml/hashtbl.cmt +0 -0
  328. package/lib/ocaml/hashtbl.cmti +0 -0
  329. package/lib/ocaml/hashtbl.ml +0 -541
  330. package/lib/ocaml/hashtbl.mli +0 -411
  331. package/lib/ocaml/hashtblLabels.cmi +0 -0
  332. package/lib/ocaml/hashtblLabels.cmt +0 -0
  333. package/lib/ocaml/hashtblLabels.ml +0 -130
  334. package/lib/ocaml/int32.cmi +0 -0
  335. package/lib/ocaml/int32.cmt +0 -0
  336. package/lib/ocaml/int32.cmti +0 -0
  337. package/lib/ocaml/int32.ml +0 -64
  338. package/lib/ocaml/int32.mli +0 -186
  339. package/lib/ocaml/int64.cmi +0 -0
  340. package/lib/ocaml/int64.cmt +0 -0
  341. package/lib/ocaml/int64.cmti +0 -0
  342. package/lib/ocaml/int64.ml +0 -72
  343. package/lib/ocaml/int64.mli +0 -197
  344. package/lib/ocaml/internal_map.cppo.ml +0 -230
  345. package/lib/ocaml/internal_set.cppo.ml +0 -134
  346. package/lib/ocaml/js.cmi +0 -0
  347. package/lib/ocaml/js.cmt +0 -0
  348. package/lib/ocaml/js.ml +0 -313
  349. package/lib/ocaml/js_OO.cmi +0 -0
  350. package/lib/ocaml/js_OO.cmt +0 -0
  351. package/lib/ocaml/js_OO.ml +0 -180
  352. package/lib/ocaml/js_array.cmi +0 -0
  353. package/lib/ocaml/js_array.cmt +0 -0
  354. package/lib/ocaml/js_array.ml +0 -970
  355. package/lib/ocaml/js_array2.cmi +0 -0
  356. package/lib/ocaml/js_array2.cmt +0 -0
  357. package/lib/ocaml/js_array2.ml +0 -1065
  358. package/lib/ocaml/js_bigint.cmi +0 -0
  359. package/lib/ocaml/js_bigint.cmt +0 -0
  360. package/lib/ocaml/js_bigint.ml +0 -3
  361. package/lib/ocaml/js_cast.cmi +0 -0
  362. package/lib/ocaml/js_cast.cmt +0 -0
  363. package/lib/ocaml/js_cast.cmti +0 -0
  364. package/lib/ocaml/js_cast.ml +0 -29
  365. package/lib/ocaml/js_cast.mli +0 -45
  366. package/lib/ocaml/js_console.cmi +0 -0
  367. package/lib/ocaml/js_console.cmt +0 -0
  368. package/lib/ocaml/js_console.ml +0 -51
  369. package/lib/ocaml/js_date.cmi +0 -0
  370. package/lib/ocaml/js_date.cmt +0 -0
  371. package/lib/ocaml/js_date.ml +0 -1263
  372. package/lib/ocaml/js_dict.cmi +0 -0
  373. package/lib/ocaml/js_dict.cmt +0 -0
  374. package/lib/ocaml/js_dict.cmti +0 -0
  375. package/lib/ocaml/js_dict.ml +0 -114
  376. package/lib/ocaml/js_dict.mli +0 -152
  377. package/lib/ocaml/js_exn.cmi +0 -0
  378. package/lib/ocaml/js_exn.cmt +0 -0
  379. package/lib/ocaml/js_exn.cmti +0 -0
  380. package/lib/ocaml/js_exn.ml +0 -102
  381. package/lib/ocaml/js_exn.mli +0 -79
  382. package/lib/ocaml/js_float.cmi +0 -0
  383. package/lib/ocaml/js_float.cmt +0 -0
  384. package/lib/ocaml/js_float.ml +0 -294
  385. package/lib/ocaml/js_global.cmi +0 -0
  386. package/lib/ocaml/js_global.cmt +0 -0
  387. package/lib/ocaml/js_global.ml +0 -185
  388. package/lib/ocaml/js_int.cmi +0 -0
  389. package/lib/ocaml/js_int.cmt +0 -0
  390. package/lib/ocaml/js_int.ml +0 -158
  391. package/lib/ocaml/js_json.cmi +0 -0
  392. package/lib/ocaml/js_json.cmt +0 -0
  393. package/lib/ocaml/js_json.cmti +0 -0
  394. package/lib/ocaml/js_json.ml +0 -195
  395. package/lib/ocaml/js_json.mli +0 -244
  396. package/lib/ocaml/js_list.cmi +0 -0
  397. package/lib/ocaml/js_list.cmt +0 -0
  398. package/lib/ocaml/js_list.cmti +0 -0
  399. package/lib/ocaml/js_list.ml +0 -174
  400. package/lib/ocaml/js_list.mli +0 -72
  401. package/lib/ocaml/js_map.cmi +0 -0
  402. package/lib/ocaml/js_map.cmt +0 -0
  403. package/lib/ocaml/js_map.ml +0 -3
  404. package/lib/ocaml/js_mapperRt.cmi +0 -0
  405. package/lib/ocaml/js_mapperRt.cmt +0 -0
  406. package/lib/ocaml/js_mapperRt.cmti +0 -0
  407. package/lib/ocaml/js_mapperRt.ml +0 -50
  408. package/lib/ocaml/js_mapperRt.mli +0 -44
  409. package/lib/ocaml/js_math.cmi +0 -0
  410. package/lib/ocaml/js_math.cmt +0 -0
  411. package/lib/ocaml/js_math.ml +0 -626
  412. package/lib/ocaml/js_null.cmi +0 -0
  413. package/lib/ocaml/js_null.cmt +0 -0
  414. package/lib/ocaml/js_null.cmti +0 -0
  415. package/lib/ocaml/js_null.ml +0 -57
  416. package/lib/ocaml/js_null.mli +0 -87
  417. package/lib/ocaml/js_null_undefined.cmi +0 -0
  418. package/lib/ocaml/js_null_undefined.cmt +0 -0
  419. package/lib/ocaml/js_null_undefined.cmti +0 -0
  420. package/lib/ocaml/js_null_undefined.ml +0 -50
  421. package/lib/ocaml/js_null_undefined.mli +0 -85
  422. package/lib/ocaml/js_obj.cmi +0 -0
  423. package/lib/ocaml/js_obj.cmt +0 -0
  424. package/lib/ocaml/js_obj.ml +0 -100
  425. package/lib/ocaml/js_option.cmi +0 -0
  426. package/lib/ocaml/js_option.cmt +0 -0
  427. package/lib/ocaml/js_option.cmti +0 -0
  428. package/lib/ocaml/js_option.ml +0 -203
  429. package/lib/ocaml/js_option.mli +0 -52
  430. package/lib/ocaml/js_promise.cmi +0 -0
  431. package/lib/ocaml/js_promise.cmt +0 -0
  432. package/lib/ocaml/js_promise.ml +0 -100
  433. package/lib/ocaml/js_re.cmi +0 -0
  434. package/lib/ocaml/js_re.cmt +0 -0
  435. package/lib/ocaml/js_re.ml +0 -184
  436. package/lib/ocaml/js_result.cmi +0 -0
  437. package/lib/ocaml/js_result.cmt +0 -0
  438. package/lib/ocaml/js_result.cmti +0 -0
  439. package/lib/ocaml/js_result.ml +0 -28
  440. package/lib/ocaml/js_result.mli +0 -28
  441. package/lib/ocaml/js_set.cmi +0 -0
  442. package/lib/ocaml/js_set.cmt +0 -0
  443. package/lib/ocaml/js_set.ml +0 -3
  444. package/lib/ocaml/js_string.cmi +0 -0
  445. package/lib/ocaml/js_string.cmt +0 -0
  446. package/lib/ocaml/js_string.ml +0 -914
  447. package/lib/ocaml/js_string2.cmi +0 -0
  448. package/lib/ocaml/js_string2.cmt +0 -0
  449. package/lib/ocaml/js_string2.ml +0 -912
  450. package/lib/ocaml/js_typed_array.cmi +0 -0
  451. package/lib/ocaml/js_typed_array.cmt +0 -0
  452. package/lib/ocaml/js_typed_array.cppo.ml +0 -429
  453. package/lib/ocaml/js_typed_array.ml +0 -1405
  454. package/lib/ocaml/js_typed_array2.cmi +0 -0
  455. package/lib/ocaml/js_typed_array2.cmt +0 -0
  456. package/lib/ocaml/js_typed_array2.cppo.ml +0 -296
  457. package/lib/ocaml/js_typed_array2.ml +0 -1269
  458. package/lib/ocaml/js_types.cmi +0 -0
  459. package/lib/ocaml/js_types.cmt +0 -0
  460. package/lib/ocaml/js_types.cmti +0 -0
  461. package/lib/ocaml/js_types.ml +0 -118
  462. package/lib/ocaml/js_types.mli +0 -78
  463. package/lib/ocaml/js_undefined.cmi +0 -0
  464. package/lib/ocaml/js_undefined.cmt +0 -0
  465. package/lib/ocaml/js_undefined.cmti +0 -0
  466. package/lib/ocaml/js_undefined.ml +0 -59
  467. package/lib/ocaml/js_undefined.mli +0 -92
  468. package/lib/ocaml/js_vector.cmi +0 -0
  469. package/lib/ocaml/js_vector.cmt +0 -0
  470. package/lib/ocaml/js_vector.cmti +0 -0
  471. package/lib/ocaml/js_vector.ml +0 -143
  472. package/lib/ocaml/js_vector.mli +0 -92
  473. package/lib/ocaml/js_weakmap.cmi +0 -0
  474. package/lib/ocaml/js_weakmap.cmt +0 -0
  475. package/lib/ocaml/js_weakmap.ml +0 -3
  476. package/lib/ocaml/js_weakset.cmi +0 -0
  477. package/lib/ocaml/js_weakset.cmt +0 -0
  478. package/lib/ocaml/js_weakset.ml +0 -3
  479. package/lib/ocaml/jsx.cmi +0 -0
  480. package/lib/ocaml/jsx.cmt +0 -0
  481. package/lib/ocaml/jsx.ml +0 -39
  482. package/lib/ocaml/jsxDOM.cmi +0 -0
  483. package/lib/ocaml/jsxDOM.cmt +0 -0
  484. package/lib/ocaml/jsxDOM.ml +0 -2087
  485. package/lib/ocaml/jsxDOMStyle.cmi +0 -0
  486. package/lib/ocaml/jsxDOMStyle.cmt +0 -0
  487. package/lib/ocaml/jsxDOMStyle.ml +0 -777
  488. package/lib/ocaml/jsxEvent.cmi +0 -0
  489. package/lib/ocaml/jsxEvent.cmt +0 -0
  490. package/lib/ocaml/jsxEvent.ml +0 -358
  491. package/lib/ocaml/lazy.cmi +0 -0
  492. package/lib/ocaml/lazy.cmt +0 -0
  493. package/lib/ocaml/lazy.cmti +0 -0
  494. package/lib/ocaml/lazy.ml +0 -70
  495. package/lib/ocaml/lazy.mli +0 -95
  496. package/lib/ocaml/lexing.cmi +0 -0
  497. package/lib/ocaml/lexing.cmt +0 -0
  498. package/lib/ocaml/lexing.cmti +0 -0
  499. package/lib/ocaml/lexing.ml +0 -230
  500. package/lib/ocaml/lexing.mli +0 -172
  501. package/lib/ocaml/list.cmi +0 -0
  502. package/lib/ocaml/list.cmt +0 -0
  503. package/lib/ocaml/list.cmti +0 -0
  504. package/lib/ocaml/list.ml +0 -485
  505. package/lib/ocaml/list.mli +0 -347
  506. package/lib/ocaml/listLabels.cmi +0 -0
  507. package/lib/ocaml/listLabels.cmt +0 -0
  508. package/lib/ocaml/listLabels.cmti +0 -0
  509. package/lib/ocaml/listLabels.ml +0 -485
  510. package/lib/ocaml/listLabels.mli +0 -353
  511. package/lib/ocaml/map.cmi +0 -0
  512. package/lib/ocaml/map.cmt +0 -0
  513. package/lib/ocaml/map.cmti +0 -0
  514. package/lib/ocaml/map.cppo.ml +0 -174
  515. package/lib/ocaml/map.cppo.mli +0 -191
  516. package/lib/ocaml/map.ml +0 -480
  517. package/lib/ocaml/map.mli +0 -315
  518. package/lib/ocaml/mapLabels.cmi +0 -0
  519. package/lib/ocaml/mapLabels.cmt +0 -0
  520. package/lib/ocaml/mapLabels.ml +0 -480
  521. package/lib/ocaml/mapm.cppo.ml +0 -177
  522. package/lib/ocaml/mapm.cppo.mli +0 -138
  523. package/lib/ocaml/moreLabels.cmi +0 -0
  524. package/lib/ocaml/moreLabels.cmt +0 -0
  525. package/lib/ocaml/moreLabels.cmti +0 -0
  526. package/lib/ocaml/moreLabels.ml +0 -22
  527. package/lib/ocaml/moreLabels.mli +0 -198
  528. package/lib/ocaml/node.cmi +0 -0
  529. package/lib/ocaml/node.cmt +0 -0
  530. package/lib/ocaml/node.ml +0 -84
  531. package/lib/ocaml/node_buffer.cmi +0 -0
  532. package/lib/ocaml/node_buffer.cmt +0 -0
  533. package/lib/ocaml/node_buffer.ml +0 -47
  534. package/lib/ocaml/node_child_process.cmi +0 -0
  535. package/lib/ocaml/node_child_process.cmt +0 -0
  536. package/lib/ocaml/node_child_process.ml +0 -50
  537. package/lib/ocaml/node_fs.cmi +0 -0
  538. package/lib/ocaml/node_fs.cmt +0 -0
  539. package/lib/ocaml/node_fs.ml +0 -153
  540. package/lib/ocaml/node_module.cmi +0 -0
  541. package/lib/ocaml/node_module.cmt +0 -0
  542. package/lib/ocaml/node_module.ml +0 -29
  543. package/lib/ocaml/node_path.cmi +0 -0
  544. package/lib/ocaml/node_path.cmt +0 -0
  545. package/lib/ocaml/node_path.ml +0 -71
  546. package/lib/ocaml/node_process.cmi +0 -0
  547. package/lib/ocaml/node_process.cmt +0 -0
  548. package/lib/ocaml/node_process.cmti +0 -0
  549. package/lib/ocaml/node_process.ml +0 -59
  550. package/lib/ocaml/node_process.mli +0 -48
  551. package/lib/ocaml/obj.cmi +0 -0
  552. package/lib/ocaml/obj.cmt +0 -0
  553. package/lib/ocaml/obj.cmti +0 -0
  554. package/lib/ocaml/obj.ml +0 -29
  555. package/lib/ocaml/obj.mli +0 -62
  556. package/lib/ocaml/parsing.cmi +0 -0
  557. package/lib/ocaml/parsing.cmt +0 -0
  558. package/lib/ocaml/parsing.cmti +0 -0
  559. package/lib/ocaml/parsing.ml +0 -212
  560. package/lib/ocaml/parsing.mli +0 -105
  561. package/lib/ocaml/pervasives.cmi +0 -0
  562. package/lib/ocaml/pervasives.cmt +0 -0
  563. package/lib/ocaml/pervasives.cmti +0 -0
  564. package/lib/ocaml/pervasives.ml +0 -297
  565. package/lib/ocaml/pervasives.mli +0 -771
  566. package/lib/ocaml/printexc.cmi +0 -0
  567. package/lib/ocaml/printexc.cmt +0 -0
  568. package/lib/ocaml/printexc.cmti +0 -0
  569. package/lib/ocaml/printexc.ml +0 -79
  570. package/lib/ocaml/printexc.mli +0 -57
  571. package/lib/ocaml/queue.cmi +0 -0
  572. package/lib/ocaml/queue.cmt +0 -0
  573. package/lib/ocaml/queue.cmti +0 -0
  574. package/lib/ocaml/queue.ml +0 -132
  575. package/lib/ocaml/queue.mli +0 -82
  576. package/lib/ocaml/random.cmi +0 -0
  577. package/lib/ocaml/random.cmt +0 -0
  578. package/lib/ocaml/random.cmti +0 -0
  579. package/lib/ocaml/random.ml +0 -273
  580. package/lib/ocaml/random.mli +0 -102
  581. package/lib/ocaml/set.cmi +0 -0
  582. package/lib/ocaml/set.cmt +0 -0
  583. package/lib/ocaml/set.cmti +0 -0
  584. package/lib/ocaml/set.ml +0 -526
  585. package/lib/ocaml/set.mli +0 -266
  586. package/lib/ocaml/setLabels.cmi +0 -0
  587. package/lib/ocaml/setLabels.cmt +0 -0
  588. package/lib/ocaml/setLabels.ml +0 -526
  589. package/lib/ocaml/setm.cppo.ml +0 -346
  590. package/lib/ocaml/setm.cppo.mli +0 -126
  591. package/lib/ocaml/sort.cmi +0 -0
  592. package/lib/ocaml/sort.cmt +0 -0
  593. package/lib/ocaml/sort.cmti +0 -0
  594. package/lib/ocaml/sort.cppo.ml +0 -267
  595. package/lib/ocaml/sort.cppo.mli +0 -96
  596. package/lib/ocaml/sort.ml +0 -99
  597. package/lib/ocaml/sort.mli +0 -44
  598. package/lib/ocaml/stack.cmi +0 -0
  599. package/lib/ocaml/stack.cmt +0 -0
  600. package/lib/ocaml/stack.cmti +0 -0
  601. package/lib/ocaml/stack.ml +0 -44
  602. package/lib/ocaml/stack.mli +0 -63
  603. package/lib/ocaml/stdLabels.cmi +0 -0
  604. package/lib/ocaml/stdLabels.cmt +0 -0
  605. package/lib/ocaml/stdLabels.cmti +0 -0
  606. package/lib/ocaml/stdLabels.ml +0 -24
  607. package/lib/ocaml/stdLabels.mli +0 -29
  608. package/lib/ocaml/stream.cmi +0 -0
  609. package/lib/ocaml/stream.cmt +0 -0
  610. package/lib/ocaml/stream.cmti +0 -0
  611. package/lib/ocaml/stream.ml +0 -213
  612. package/lib/ocaml/stream.mli +0 -108
  613. package/lib/ocaml/string.cmi +0 -0
  614. package/lib/ocaml/string.cmt +0 -0
  615. package/lib/ocaml/string.cmti +0 -0
  616. package/lib/ocaml/string.ml +0 -190
  617. package/lib/ocaml/string.mli +0 -286
  618. package/lib/ocaml/stringLabels.cmi +0 -0
  619. package/lib/ocaml/stringLabels.cmt +0 -0
  620. package/lib/ocaml/stringLabels.cmti +0 -0
  621. package/lib/ocaml/stringLabels.ml +0 -190
  622. package/lib/ocaml/stringLabels.mli +0 -241
  623. package/lib/ocaml/sys.cmi +0 -0
  624. package/lib/ocaml/sys.cmt +0 -0
  625. package/lib/ocaml/sys.cmti +0 -0
  626. package/lib/ocaml/sys.ml +0 -135
  627. package/lib/ocaml/sys.mli +0 -333
  628. package/lib/ocaml/uchar.cmi +0 -0
  629. package/lib/ocaml/uchar.cmt +0 -0
  630. package/lib/ocaml/uchar.cmti +0 -0
  631. package/lib/ocaml/uchar.ml +0 -58
  632. package/lib/ocaml/uchar.mli +0 -98
  633. package/linux/bsb_helper.exe +0 -0
  634. package/linux/bsc.exe +0 -0
  635. package/linux/ninja.COPYING +0 -202
  636. package/linux/ninja.exe +0 -0
  637. package/linux/rescript.exe +0 -0
  638. package/openbsd/.keep +0 -0
  639. package/scripts/LICENSE.ml +0 -27
  640. package/scripts/buckle_lto.js +0 -55
  641. package/scripts/build_sorted.ml +0 -233
  642. package/scripts/caml_oo_curry_gen.ml +0 -71
  643. package/scripts/checkUnused.js +0 -63
  644. package/scripts/ciTest.js +0 -172
  645. package/scripts/cover.sh +0 -3
  646. package/scripts/curry_gen.ml +0 -167
  647. package/scripts/dbg +0 -13
  648. package/scripts/dedupe.js +0 -44
  649. package/scripts/doc_gen.js +0 -117
  650. package/scripts/js_internal_gen.js +0 -135
  651. package/scripts/jsconfig.json +0 -12
  652. package/scripts/littlecase.js +0 -21
  653. package/scripts/ninja.js +0 -1980
  654. package/scripts/pack.js +0 -107
  655. package/scripts/prebuilt.js +0 -99
  656. package/scripts/release.js +0 -41
  657. package/scripts/repl.js +0 -151
  658. package/scripts/shake.js +0 -138
  659. package/scripts/tasks.js +0 -149
  660. package/scripts/test.sh +0 -3
  661. package/scripts/tmp.js +0 -98
  662. package/scripts/validate.js +0 -41
  663. package/vendor/ninja.tar.gz +0 -0
  664. package/win32/bsb_helper.exe +0 -0
  665. package/win32/bsc.exe +0 -0
  666. package/win32/ninja.COPYING +0 -202
  667. package/win32/ninja.exe +0 -0
  668. package/win32/rescript.exe +0 -0
@@ -1,411 +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
- (** Hash tables and hash functions.
17
-
18
- Hash tables are hashed association tables, with in-place modification.
19
- *)
20
-
21
-
22
- (** {1 Generic interface} *)
23
-
24
-
25
- type ('a, 'b) t
26
- (** The type of hash tables from type ['a] to type ['b]. *)
27
-
28
- val create : ?random:bool -> int -> ('a, 'b) t
29
- (** [Hashtbl.create n] creates a new, empty hash table, with
30
- initial size [n]. For best results, [n] should be on the
31
- order of the expected number of elements that will be in
32
- the table. The table grows as needed, so [n] is just an
33
- initial guess.
34
-
35
- The optional [random] parameter (a boolean) controls whether
36
- the internal organization of the hash table is randomized at each
37
- execution of [Hashtbl.create] or deterministic over all executions.
38
-
39
- A hash table that is created with [~random:false] uses a
40
- fixed hash function ({!Hashtbl.hash}) to distribute keys among
41
- buckets. As a consequence, collisions between keys happen
42
- deterministically. In Web-facing applications or other
43
- security-sensitive applications, the deterministic collision
44
- patterns can be exploited by a malicious user to create a
45
- denial-of-service attack: the attacker sends input crafted to
46
- create many collisions in the table, slowing the application down.
47
-
48
- A hash table that is created with [~random:true] uses the seeded
49
- hash function {!Hashtbl.seeded_hash} with a seed that is randomly
50
- chosen at hash table creation time. In effect, the hash function
51
- used is randomly selected among [2^{30}] different hash functions.
52
- All these hash functions have different collision patterns,
53
- rendering ineffective the denial-of-service attack described above.
54
- However, because of randomization, enumerating all elements of the
55
- hash table using {!Hashtbl.fold} or {!Hashtbl.iter} is no longer
56
- deterministic: elements are enumerated in different orders at
57
- different runs of the program.
58
-
59
- If no [~random] parameter is given, hash tables are created
60
- in non-random mode by default. This default can be changed
61
- either programmatically by calling {!Hashtbl.randomize} or by
62
- setting the [R] flag in the [OCAMLRUNPARAM] environment variable.
63
-
64
- @before 4.00.0 the [random] parameter was not present and all
65
- hash tables were created in non-randomized mode. *)
66
-
67
- val clear : ('a, 'b) t -> unit
68
- (** Empty a hash table. Use [reset] instead of [clear] to shrink the
69
- size of the bucket table to its initial size. *)
70
-
71
- val reset : ('a, 'b) t -> unit
72
- (** Empty a hash table and shrink the size of the bucket table
73
- to its initial size.
74
- @since 4.00.0 *)
75
-
76
- val copy : ('a, 'b) t -> ('a, 'b) t
77
- (** Return a copy of the given hashtable. *)
78
-
79
- val add : ('a, 'b) t -> 'a -> 'b -> unit
80
- (** [Hashtbl.add tbl x y] adds a binding of [x] to [y] in table [tbl].
81
- Previous bindings for [x] are not removed, but simply
82
- hidden. That is, after performing {!Hashtbl.remove}[ tbl x],
83
- the previous binding for [x], if any, is restored.
84
- (Same behavior as with association lists.) *)
85
-
86
- val find : ('a, 'b) t -> 'a -> 'b
87
- (** [Hashtbl.find tbl x] returns the current binding of [x] in [tbl],
88
- or raises [Not_found] if no such binding exists. *)
89
-
90
- val find_opt : ('a, 'b) t -> 'a -> 'b option
91
- (** [Hashtbl.find_opt tbl x] returns the current binding of [x] in [tbl],
92
- or [None] if no such binding exists.
93
- @since 4.05 *)
94
-
95
- val find_all : ('a, 'b) t -> 'a -> 'b list
96
- (** [Hashtbl.find_all tbl x] returns the list of all data
97
- associated with [x] in [tbl].
98
- The current binding is returned first, then the previous
99
- bindings, in reverse order of introduction in the table. *)
100
-
101
- val mem : ('a, 'b) t -> 'a -> bool
102
- (** [Hashtbl.mem tbl x] checks if [x] is bound in [tbl]. *)
103
-
104
- val remove : ('a, 'b) t -> 'a -> unit
105
- (** [Hashtbl.remove tbl x] removes the current binding of [x] in [tbl],
106
- restoring the previous binding if it exists.
107
- It does nothing if [x] is not bound in [tbl]. *)
108
-
109
- val replace : ('a, 'b) t -> 'a -> 'b -> unit
110
- (** [Hashtbl.replace tbl x y] replaces the current binding of [x]
111
- in [tbl] by a binding of [x] to [y]. If [x] is unbound in [tbl],
112
- a binding of [x] to [y] is added to [tbl].
113
- This is functionally equivalent to {!Hashtbl.remove}[ tbl x]
114
- followed by {!Hashtbl.add}[ tbl x y]. *)
115
-
116
- val iter : ('a -> 'b -> unit) -> ('a, 'b) t -> unit
117
- (** [Hashtbl.iter f tbl] applies [f] to all bindings in table [tbl].
118
- [f] receives the key as first argument, and the associated value
119
- as second argument. Each binding is presented exactly once to [f].
120
-
121
- The order in which the bindings are passed to [f] is unspecified.
122
- However, if the table contains several bindings for the same key,
123
- they are passed to [f] in reverse order of introduction, that is,
124
- the most recent binding is passed first.
125
-
126
- If the hash table was created in non-randomized mode, the order
127
- in which the bindings are enumerated is reproducible between
128
- successive runs of the program, and even between minor versions
129
- of OCaml. For randomized hash tables, the order of enumeration
130
- is entirely random.
131
-
132
- The behavior is not defined if the hash table is modified
133
- by [f] during the iteration.
134
- *)
135
-
136
- val filter_map_inplace: ('a -> 'b -> 'b option) -> ('a, 'b) t -> unit
137
- (** [Hashtbl.filter_map_inplace f tbl] applies [f] to all bindings in
138
- table [tbl] and update each binding depending on the result of
139
- [f]. If [f] returns [None], the binding is discarded. If it
140
- returns [Some new_val], the binding is update to associate the key
141
- to [new_val].
142
-
143
- Other comments for {!Hashtbl.iter} apply as well.
144
- @since 4.03.0 *)
145
-
146
- val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
147
- (** [Hashtbl.fold f tbl init] computes
148
- [(f kN dN ... (f k1 d1 init)...)],
149
- where [k1 ... kN] are the keys of all bindings in [tbl],
150
- and [d1 ... dN] are the associated values.
151
- Each binding is presented exactly once to [f].
152
-
153
- The order in which the bindings are passed to [f] is unspecified.
154
- However, if the table contains several bindings for the same key,
155
- they are passed to [f] in reverse order of introduction, that is,
156
- the most recent binding is passed first.
157
-
158
- If the hash table was created in non-randomized mode, the order
159
- in which the bindings are enumerated is reproducible between
160
- successive runs of the program, and even between minor versions
161
- of OCaml. For randomized hash tables, the order of enumeration
162
- is entirely random.
163
-
164
- The behavior is not defined if the hash table is modified
165
- by [f] during the iteration.
166
- *)
167
-
168
- val length : ('a, 'b) t -> int
169
- (** [Hashtbl.length tbl] returns the number of bindings in [tbl].
170
- It takes constant time. Multiple bindings are counted once each, so
171
- [Hashtbl.length] gives the number of times [Hashtbl.iter] calls its
172
- first argument. *)
173
-
174
- val randomize : unit -> unit
175
- (** After a call to [Hashtbl.randomize()], hash tables are created in
176
- randomized mode by default: {!Hashtbl.create} returns randomized
177
- hash tables, unless the [~random:false] optional parameter is given.
178
- The same effect can be achieved by setting the [R] parameter in
179
- the [OCAMLRUNPARAM] environment variable.
180
-
181
- It is recommended that applications or Web frameworks that need to
182
- protect themselves against the denial-of-service attack described
183
- in {!Hashtbl.create} call [Hashtbl.randomize()] at initialization
184
- time.
185
-
186
- Note that once [Hashtbl.randomize()] was called, there is no way
187
- to revert to the non-randomized default behavior of {!Hashtbl.create}.
188
- This is intentional. Non-randomized hash tables can still be
189
- created using [Hashtbl.create ~random:false].
190
-
191
- @since 4.00.0 *)
192
-
193
- val is_randomized : unit -> bool
194
- (** return if the tables are currently created in randomized mode by default
195
-
196
- @since 4.03.0 *)
197
-
198
- (** @since 4.00.0 *)
199
- type statistics = {
200
- num_bindings: int;
201
- (** Number of bindings present in the table.
202
- Same value as returned by {!Hashtbl.length}. *)
203
- num_buckets: int;
204
- (** Number of buckets in the table. *)
205
- max_bucket_length: int;
206
- (** Maximal number of bindings per bucket. *)
207
- bucket_histogram: int array
208
- (** Histogram of bucket sizes. This array [histo] has
209
- length [max_bucket_length + 1]. The value of
210
- [histo.(i)] is the number of buckets whose size is [i]. *)
211
- }
212
-
213
- val stats : ('a, 'b) t -> statistics
214
- (** [Hashtbl.stats tbl] returns statistics about the table [tbl]:
215
- number of buckets, size of the biggest bucket, distribution of
216
- buckets by size.
217
- @since 4.00.0 *)
218
-
219
- (** {1 Functorial interface} *)
220
-
221
- (** The functorial interface allows the use of specific comparison
222
- and hash functions, either for performance/security concerns,
223
- or because keys are not hashable/comparable with the polymorphic builtins.
224
-
225
- For instance, one might want to specialize a table for integer keys:
226
- {[
227
- module IntHash =
228
- struct
229
- type t = int
230
- let equal i j = i=j
231
- let hash i = i land max_int
232
- end
233
-
234
- module IntHashtbl = Hashtbl.Make(IntHash)
235
-
236
- let h = IntHashtbl.create 17 in
237
- IntHashtbl.add h 12 "hello"
238
- ]}
239
-
240
- This creates a new module [IntHashtbl], with a new type ['a
241
- IntHashtbl.t] of tables from [int] to ['a]. In this example, [h]
242
- contains [string] values so its type is [string IntHashtbl.t].
243
-
244
- Note that the new type ['a IntHashtbl.t] is not compatible with
245
- the type [('a,'b) Hashtbl.t] of the generic interface. For
246
- example, [Hashtbl.length h] would not type-check, you must use
247
- [IntHashtbl.length].
248
- *)
249
-
250
- module type HashedType =
251
- sig
252
- type t
253
- (** The type of the hashtable keys. *)
254
-
255
- val equal : t -> t -> bool
256
- (** The equality predicate used to compare keys. *)
257
-
258
- val hash : t -> int
259
- (** A hashing function on keys. It must be such that if two keys are
260
- equal according to [equal], then they have identical hash values
261
- as computed by [hash].
262
- Examples: suitable ([equal], [hash]) pairs for arbitrary key
263
- types include
264
- - ([(=)], {!Hashtbl.hash}) for comparing objects by structure
265
- (provided objects do not contain floats)
266
- - ([(fun x y -> compare x y = 0)], {!Hashtbl.hash})
267
- for comparing objects by structure
268
- and handling {!Pervasives.nan} correctly
269
- - ([(==)], {!Hashtbl.hash}) for comparing objects by physical
270
- equality (e.g. for mutable or cyclic objects). *)
271
- end
272
- (** The input signature of the functor {!Hashtbl.Make}. *)
273
-
274
- module type S =
275
- sig
276
- type key
277
- type 'a t
278
- val create : int -> 'a t
279
- val clear : 'a t -> unit
280
- val reset : 'a t -> unit (** @since 4.00.0 *)
281
-
282
- val copy : 'a t -> 'a t
283
- val add : 'a t -> key -> 'a -> unit
284
- val remove : 'a t -> key -> unit
285
- val find : 'a t -> key -> 'a
286
- val find_opt : 'a t -> key -> 'a option
287
- (** @since 4.05.0 *)
288
-
289
- val find_all : 'a t -> key -> 'a list
290
- val replace : 'a t -> key -> 'a -> unit
291
- val mem : 'a t -> key -> bool
292
- val iter : (key -> 'a -> unit) -> 'a t -> unit
293
- val filter_map_inplace: (key -> 'a -> 'a option) -> 'a t -> unit
294
- (** @since 4.03.0 *)
295
-
296
- val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
297
- val length : 'a t -> int
298
- val stats: 'a t -> statistics (** @since 4.00.0 *)
299
- end
300
- (** The output signature of the functor {!Hashtbl.Make}. *)
301
-
302
- module Make (H : HashedType) : S with type key = H.t
303
- (** Functor building an implementation of the hashtable structure.
304
- The functor [Hashtbl.Make] returns a structure containing
305
- a type [key] of keys and a type ['a t] of hash tables
306
- associating data of type ['a] to keys of type [key].
307
- The operations perform similarly to those of the generic
308
- interface, but use the hashing and equality functions
309
- specified in the functor argument [H] instead of generic
310
- equality and hashing. Since the hash function is not seeded,
311
- the [create] operation of the result structure always returns
312
- non-randomized hash tables. *)
313
-
314
- module type SeededHashedType =
315
- sig
316
- type t
317
- (** The type of the hashtable keys. *)
318
-
319
- val equal: t -> t -> bool
320
- (** The equality predicate used to compare keys. *)
321
-
322
- val hash: int -> t -> int
323
- (** A seeded hashing function on keys. The first argument is
324
- the seed. It must be the case that if [equal x y] is true,
325
- then [hash seed x = hash seed y] for any value of [seed].
326
- A suitable choice for [hash] is the function {!Hashtbl.seeded_hash}
327
- below. *)
328
- end
329
- (** The input signature of the functor {!Hashtbl.MakeSeeded}.
330
- @since 4.00.0 *)
331
-
332
- module type SeededS =
333
- sig
334
- type key
335
- type 'a t
336
- val create : ?random:bool -> int -> 'a t
337
- val clear : 'a t -> unit
338
- val reset : 'a t -> unit
339
- val copy : 'a t -> 'a t
340
- val add : 'a t -> key -> 'a -> unit
341
- val remove : 'a t -> key -> unit
342
- val find : 'a t -> key -> 'a
343
- val find_opt : 'a t -> key -> 'a option (** @since 4.05.0 *)
344
-
345
- val find_all : 'a t -> key -> 'a list
346
- val replace : 'a t -> key -> 'a -> unit
347
- val mem : 'a t -> key -> bool
348
- val iter : (key -> 'a -> unit) -> 'a t -> unit
349
- val filter_map_inplace: (key -> 'a -> 'a option) -> 'a t -> unit
350
- (** @since 4.03.0 *)
351
-
352
- val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
353
- val length : 'a t -> int
354
- val stats: 'a t -> statistics
355
- end
356
- (** The output signature of the functor {!Hashtbl.MakeSeeded}.
357
- @since 4.00.0 *)
358
-
359
- module MakeSeeded (H : SeededHashedType) : SeededS with type key = H.t
360
- (** Functor building an implementation of the hashtable structure.
361
- The functor [Hashtbl.MakeSeeded] returns a structure containing
362
- a type [key] of keys and a type ['a t] of hash tables
363
- associating data of type ['a] to keys of type [key].
364
- The operations perform similarly to those of the generic
365
- interface, but use the seeded hashing and equality functions
366
- specified in the functor argument [H] instead of generic
367
- equality and hashing. The [create] operation of the
368
- result structure supports the [~random] optional parameter
369
- and returns randomized hash tables if [~random:true] is passed
370
- or if randomization is globally on (see {!Hashtbl.randomize}).
371
- @since 4.00.0 *)
372
-
373
-
374
- (** {1 The polymorphic hash functions} *)
375
-
376
-
377
- val hash : 'a -> int
378
- (** [Hashtbl.hash x] associates a nonnegative integer to any value of
379
- any type. It is guaranteed that
380
- if [x = y] or [Pervasives.compare x y = 0], then [hash x = hash y].
381
- Moreover, [hash] always terminates, even on cyclic structures. *)
382
-
383
- val seeded_hash : int -> 'a -> int
384
- (** A variant of {!Hashtbl.hash} that is further parameterized by
385
- an integer seed.
386
- @since 4.00.0 *)
387
-
388
- val hash_param : int -> int -> 'a -> int
389
- (** [Hashtbl.hash_param meaningful total x] computes a hash value for [x],
390
- with the same properties as for [hash]. The two extra integer
391
- parameters [meaningful] and [total] give more precise control over
392
- hashing. Hashing performs a breadth-first, left-to-right traversal
393
- of the structure [x], stopping after [meaningful] meaningful nodes
394
- were encountered, or [total] nodes (meaningful or not) were
395
- encountered. If [total] as specified by the user exceeds a certain
396
- value, currently 256, then it is capped to that value.
397
- Meaningful nodes are: integers; floating-point
398
- numbers; strings; characters; booleans; and constant
399
- constructors. Larger values of [meaningful] and [total] means that
400
- more nodes are taken into account to compute the final hash value,
401
- and therefore collisions are less likely to happen. However,
402
- hashing takes longer. The parameters [meaningful] and [total]
403
- govern the tradeoff between accuracy and speed. As default
404
- choices, {!Hashtbl.hash} and {!Hashtbl.seeded_hash} take
405
- [meaningful = 10] and [total = 100]. *)
406
-
407
- val seeded_hash_param : int -> int -> int -> 'a -> int
408
- (** A variant of {!Hashtbl.hash_param} that is further parameterized by
409
- an integer seed. Usage:
410
- [Hashtbl.seeded_hash_param meaningful total seed x].
411
- @since 4.00.0 *)
Binary file
Binary file
@@ -1,130 +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
- (* Hash tables *)
17
-
18
-
19
- type ('a, 'b) t = ('a,'b) Hashtbl.t
20
-
21
-
22
-
23
- let {create;
24
- clear;reset;copy;add;find;find_opt;find_all;mem;remove;replace;iter;filter_map_inplace;fold;length;randomize;is_randomized;stats;hash;seeded_hash;hash_param;seeded_hash_param} = (module Hashtbl)
25
-
26
- let add tbl ~key ~data = add tbl key data
27
-
28
- let replace tbl ~key ~data = replace tbl key data
29
-
30
- let iter ~f tbl = iter (fun key data -> f ~key ~data) tbl
31
-
32
- let filter_map_inplace ~f tbl =
33
- filter_map_inplace (fun key data -> f ~key ~data) tbl
34
-
35
- let fold ~f tbl ~init =
36
- fold (fun key data acc -> f ~key ~data acc) tbl init
37
-
38
- type statistics = Hashtbl.statistics = {
39
- num_bindings: int;
40
- num_buckets: int;
41
- max_bucket_length: int;
42
- bucket_histogram: int array
43
- }
44
-
45
-
46
- (* Functorial interface *)
47
-
48
- module type HashedType = Hashtbl.HashedType
49
-
50
- module type SeededHashedType = Hashtbl.SeededHashedType
51
-
52
-
53
- module type S =
54
- sig
55
- type key
56
- and 'a t
57
- val create : int -> 'a t
58
- val clear : 'a t -> unit
59
- val reset : 'a t -> unit
60
- val copy : 'a t -> 'a t
61
- val add : 'a t -> key:key -> data:'a -> unit
62
- val remove : 'a t -> key -> unit
63
- val find : 'a t -> key -> 'a
64
- val find_opt: 'a t -> key -> 'a option
65
- val find_all : 'a t -> key -> 'a list
66
- val replace : 'a t -> key:key -> data:'a -> unit
67
- val mem : 'a t -> key -> bool
68
- val iter : f:(key:key -> data:'a -> unit) -> 'a t -> unit
69
- val filter_map_inplace:
70
- f:(key:key -> data:'a -> 'a option) -> 'a t -> unit
71
- val fold :
72
- f:(key:key -> data:'a -> 'b -> 'b) ->
73
- 'a t -> init:'b -> 'b
74
- val length : 'a t -> int
75
- val stats: 'a t -> statistics
76
- end
77
-
78
- module type SeededS =
79
- sig
80
- type key
81
- and 'a t
82
- val create : ?random:bool -> int -> 'a t
83
- val clear : 'a t -> unit
84
- val reset : 'a t -> unit
85
- val copy : 'a t -> 'a t
86
- val add : 'a t -> key:key -> data:'a -> unit
87
- val remove : 'a t -> key -> unit
88
- val find : 'a t -> key -> 'a
89
- val find_opt : 'a t -> key -> 'a option
90
- val find_all : 'a t -> key -> 'a list
91
- val replace : 'a t -> key:key -> data:'a -> unit
92
- val mem : 'a t -> key -> bool
93
- val iter : f:(key:key -> data:'a -> unit) -> 'a t -> unit
94
- val filter_map_inplace:
95
- f:(key:key -> data:'a -> 'a option) -> 'a t -> unit
96
- val fold :
97
- f:(key:key -> data:'a -> 'b -> 'b) ->
98
- 'a t -> init:'b -> 'b
99
- val length : 'a t -> int
100
- val stats: 'a t -> statistics
101
- end
102
-
103
- module MakeSeeded(H: SeededHashedType): (SeededS with type key = H.t) = struct
104
- include Hashtbl.MakeSeeded(H)
105
- let add tbl ~key ~data = add tbl key data
106
- let replace tbl ~key ~data = replace tbl key data
107
-
108
- let iter ~f tbl = iter (fun key data -> f ~key ~data) tbl
109
-
110
-
111
-
112
-
113
-
114
- let filter_map_inplace ~f tbl =
115
- filter_map_inplace (fun key data -> f ~key ~data) tbl
116
-
117
- let fold ~f tbl ~init =
118
- fold (fun key data acc -> f ~key ~data acc) tbl init
119
-
120
- end
121
-
122
- module Make(H: HashedType): (S with type key = H.t) =
123
- struct
124
- include MakeSeeded(struct
125
- type t = H.t
126
- let equal = H.equal
127
- let hash (_seed: int) x = H.hash x
128
- end)
129
- let create sz = create ~random:false sz
130
- end
Binary file
Binary file
Binary file
@@ -1,64 +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
- type t = int
16
- (* Module [t]: 32-bit integers *)
17
-
18
- external neg : t -> t = "%negint"
19
- external add : t -> t -> t = "%addint"
20
- external sub : t -> t -> t = "%subint"
21
- external mul : t -> t -> t = "%mulint"
22
- external div : t -> t -> t = "%divint"
23
- external rem : t -> t -> t = "%modint"
24
- external logand : t -> t -> t = "%andint"
25
- external logor : t -> t -> t = "%orint"
26
- external logxor : t -> t -> t = "%xorint"
27
- external shift_left : t -> int -> t = "%lslint"
28
- external shift_right : t -> int -> t = "%asrint"
29
- external shift_right_logical : t -> int -> t = "%lsrint"
30
- external of_int : int -> t = "%identity"
31
- external to_int : t -> int = "%identity"
32
- external of_float : float -> t
33
- = "?int_of_float"
34
- external to_float : t -> float
35
- = "?int_to_float"
36
- external bits_of_float : float -> t
37
- = "?int_bits_of_float"
38
- external float_of_bits : t -> float
39
- = "?int_float_of_bits"
40
-
41
- let zero = 0l
42
- let one = 1l
43
- let minus_one = -1l
44
- let succ n = add n 1l
45
- let pred n = sub n 1l
46
- let abs n = if n >= 0l then n else neg n
47
- let min_int = 0x80000000l
48
- let max_int = 0x7FFFFFFFl
49
- let lognot n = logxor n (-1l)
50
-
51
- external format : string -> t -> string = "?format_int"
52
- let to_string n = format "%d" n
53
-
54
- external of_string : string -> t = "?int_of_string"
55
-
56
- let of_string_opt s =
57
- (* TODO: expose a non-raising primitive directly. *)
58
- try Some (of_string s)
59
- with Failure _ -> None
60
-
61
-
62
-
63
- let compare (x: t) (y: t) = Pervasives.compare x y
64
- let equal (x: t) (y: t) = compare x y = 0