@tellahq/rescript 10.1.4-republish-2 → 10.1.4-republish-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/darwin/bsb_helper.exe +0 -0
  2. package/darwin/bsc.exe +0 -0
  3. package/darwin/ninja.exe +0 -0
  4. package/darwin/rescript.exe +0 -0
  5. package/darwinarm64/bsb_helper.exe +0 -0
  6. package/darwinarm64/bsc.exe +0 -0
  7. package/darwinarm64/ninja.exe +0 -0
  8. package/darwinarm64/rescript.exe +0 -0
  9. package/lib/ocaml/arg.cmi +0 -0
  10. package/lib/ocaml/arg.cmt +0 -0
  11. package/lib/ocaml/arg.cmti +0 -0
  12. package/lib/ocaml/arg.ml +359 -0
  13. package/lib/ocaml/arg.mli +185 -0
  14. package/lib/ocaml/array.cmi +0 -0
  15. package/lib/ocaml/array.cmt +0 -0
  16. package/lib/ocaml/array.cmti +0 -0
  17. package/lib/ocaml/array.ml +307 -0
  18. package/lib/ocaml/array.mli +275 -0
  19. package/lib/ocaml/arrayLabels.cmi +0 -0
  20. package/lib/ocaml/arrayLabels.cmt +0 -0
  21. package/lib/ocaml/arrayLabels.cmti +0 -0
  22. package/lib/ocaml/arrayLabels.ml +307 -0
  23. package/lib/ocaml/arrayLabels.mli +276 -0
  24. package/lib/ocaml/belt.cmi +0 -0
  25. package/lib/ocaml/belt.cmt +0 -0
  26. package/lib/ocaml/belt.ml +352 -0
  27. package/lib/ocaml/belt_Array.cmi +0 -0
  28. package/lib/ocaml/belt_Array.cmt +0 -0
  29. package/lib/ocaml/belt_Array.cmti +0 -0
  30. package/lib/ocaml/belt_Array.ml +525 -0
  31. package/lib/ocaml/belt_Array.mli +707 -0
  32. package/lib/ocaml/belt_Float.cmi +0 -0
  33. package/lib/ocaml/belt_Float.cmt +0 -0
  34. package/lib/ocaml/belt_Float.cmti +0 -0
  35. package/lib/ocaml/belt_Float.ml +50 -0
  36. package/lib/ocaml/belt_Float.mli +106 -0
  37. package/lib/ocaml/belt_HashMap.cmi +0 -0
  38. package/lib/ocaml/belt_HashMap.cmt +0 -0
  39. package/lib/ocaml/belt_HashMap.cmti +0 -0
  40. package/lib/ocaml/belt_HashMap.ml +226 -0
  41. package/lib/ocaml/belt_HashMap.mli +436 -0
  42. package/lib/ocaml/belt_HashMapInt.cmi +0 -0
  43. package/lib/ocaml/belt_HashMapInt.cmt +0 -0
  44. package/lib/ocaml/belt_HashMapInt.cmti +0 -0
  45. package/lib/ocaml/belt_HashMapInt.ml +206 -0
  46. package/lib/ocaml/belt_HashMapInt.mli +50 -0
  47. package/lib/ocaml/belt_HashMapString.cmi +0 -0
  48. package/lib/ocaml/belt_HashMapString.cmt +0 -0
  49. package/lib/ocaml/belt_HashMapString.cmti +0 -0
  50. package/lib/ocaml/belt_HashMapString.ml +206 -0
  51. package/lib/ocaml/belt_HashMapString.mli +50 -0
  52. package/lib/ocaml/belt_HashSet.cmi +0 -0
  53. package/lib/ocaml/belt_HashSet.cmt +0 -0
  54. package/lib/ocaml/belt_HashSet.cmti +0 -0
  55. package/lib/ocaml/belt_HashSet.ml +196 -0
  56. package/lib/ocaml/belt_HashSet.mli +125 -0
  57. package/lib/ocaml/belt_HashSetInt.cmi +0 -0
  58. package/lib/ocaml/belt_HashSetInt.cmt +0 -0
  59. package/lib/ocaml/belt_HashSetInt.cmti +0 -0
  60. package/lib/ocaml/belt_HashSetInt.ml +155 -0
  61. package/lib/ocaml/belt_HashSetInt.mli +74 -0
  62. package/lib/ocaml/belt_HashSetString.cmi +0 -0
  63. package/lib/ocaml/belt_HashSetString.cmt +0 -0
  64. package/lib/ocaml/belt_HashSetString.cmti +0 -0
  65. package/lib/ocaml/belt_HashSetString.ml +156 -0
  66. package/lib/ocaml/belt_HashSetString.mli +74 -0
  67. package/lib/ocaml/belt_Id.cmi +0 -0
  68. package/lib/ocaml/belt_Id.cmt +0 -0
  69. package/lib/ocaml/belt_Id.cmti +0 -0
  70. package/lib/ocaml/belt_Id.ml +133 -0
  71. package/lib/ocaml/belt_Id.mli +171 -0
  72. package/lib/ocaml/belt_Int.cmi +0 -0
  73. package/lib/ocaml/belt_Int.cmt +0 -0
  74. package/lib/ocaml/belt_Int.cmti +0 -0
  75. package/lib/ocaml/belt_Int.ml +50 -0
  76. package/lib/ocaml/belt_Int.mli +103 -0
  77. package/lib/ocaml/belt_List.cmi +0 -0
  78. package/lib/ocaml/belt_List.cmt +0 -0
  79. package/lib/ocaml/belt_List.cmti +0 -0
  80. package/lib/ocaml/belt_List.ml +803 -0
  81. package/lib/ocaml/belt_List.mli +844 -0
  82. package/lib/ocaml/belt_Map.cmi +0 -0
  83. package/lib/ocaml/belt_Map.cmt +0 -0
  84. package/lib/ocaml/belt_Map.cmti +0 -0
  85. package/lib/ocaml/belt_Map.ml +170 -0
  86. package/lib/ocaml/belt_Map.mli +496 -0
  87. package/lib/ocaml/belt_MapDict.cmi +0 -0
  88. package/lib/ocaml/belt_MapDict.cmt +0 -0
  89. package/lib/ocaml/belt_MapDict.cmti +0 -0
  90. package/lib/ocaml/belt_MapDict.ml +278 -0
  91. package/lib/ocaml/belt_MapDict.mli +268 -0
  92. package/lib/ocaml/belt_MapInt.cmi +0 -0
  93. package/lib/ocaml/belt_MapInt.cmt +0 -0
  94. package/lib/ocaml/belt_MapInt.cmti +0 -0
  95. package/lib/ocaml/belt_MapInt.ml +169 -0
  96. package/lib/ocaml/belt_MapInt.mli +187 -0
  97. package/lib/ocaml/belt_MapString.cmi +0 -0
  98. package/lib/ocaml/belt_MapString.cmt +0 -0
  99. package/lib/ocaml/belt_MapString.cmti +0 -0
  100. package/lib/ocaml/belt_MapString.ml +169 -0
  101. package/lib/ocaml/belt_MapString.mli +187 -0
  102. package/lib/ocaml/belt_MutableMap.cmi +0 -0
  103. package/lib/ocaml/belt_MutableMap.cmt +0 -0
  104. package/lib/ocaml/belt_MutableMap.cmti +0 -0
  105. package/lib/ocaml/belt_MutableMap.ml +241 -0
  106. package/lib/ocaml/belt_MutableMap.mli +145 -0
  107. package/lib/ocaml/belt_MutableMapInt.cmi +0 -0
  108. package/lib/ocaml/belt_MutableMapInt.cmt +0 -0
  109. package/lib/ocaml/belt_MutableMapInt.cmti +0 -0
  110. package/lib/ocaml/belt_MutableMapInt.ml +172 -0
  111. package/lib/ocaml/belt_MutableMapInt.mli +135 -0
  112. package/lib/ocaml/belt_MutableMapString.cmi +0 -0
  113. package/lib/ocaml/belt_MutableMapString.cmt +0 -0
  114. package/lib/ocaml/belt_MutableMapString.cmti +0 -0
  115. package/lib/ocaml/belt_MutableMapString.ml +172 -0
  116. package/lib/ocaml/belt_MutableMapString.mli +135 -0
  117. package/lib/ocaml/belt_MutableQueue.cmi +0 -0
  118. package/lib/ocaml/belt_MutableQueue.cmt +0 -0
  119. package/lib/ocaml/belt_MutableQueue.cmti +0 -0
  120. package/lib/ocaml/belt_MutableQueue.ml +222 -0
  121. package/lib/ocaml/belt_MutableQueue.mli +116 -0
  122. package/lib/ocaml/belt_MutableSet.cmi +0 -0
  123. package/lib/ocaml/belt_MutableSet.cmt +0 -0
  124. package/lib/ocaml/belt_MutableSet.cmti +0 -0
  125. package/lib/ocaml/belt_MutableSet.ml +371 -0
  126. package/lib/ocaml/belt_MutableSet.mli +617 -0
  127. package/lib/ocaml/belt_MutableSetInt.cmi +0 -0
  128. package/lib/ocaml/belt_MutableSetInt.cmt +0 -0
  129. package/lib/ocaml/belt_MutableSetInt.cmti +0 -0
  130. package/lib/ocaml/belt_MutableSetInt.ml +342 -0
  131. package/lib/ocaml/belt_MutableSetInt.mli +124 -0
  132. package/lib/ocaml/belt_MutableSetString.cmi +0 -0
  133. package/lib/ocaml/belt_MutableSetString.cmt +0 -0
  134. package/lib/ocaml/belt_MutableSetString.cmti +0 -0
  135. package/lib/ocaml/belt_MutableSetString.ml +342 -0
  136. package/lib/ocaml/belt_MutableSetString.mli +124 -0
  137. package/lib/ocaml/belt_MutableStack.cmi +0 -0
  138. package/lib/ocaml/belt_MutableStack.cmt +0 -0
  139. package/lib/ocaml/belt_MutableStack.cmti +0 -0
  140. package/lib/ocaml/belt_MutableStack.ml +106 -0
  141. package/lib/ocaml/belt_MutableStack.mli +63 -0
  142. package/lib/ocaml/belt_Option.cmi +0 -0
  143. package/lib/ocaml/belt_Option.cmt +0 -0
  144. package/lib/ocaml/belt_Option.cmti +0 -0
  145. package/lib/ocaml/belt_Option.ml +93 -0
  146. package/lib/ocaml/belt_Option.mli +270 -0
  147. package/lib/ocaml/belt_Range.cmi +0 -0
  148. package/lib/ocaml/belt_Range.cmt +0 -0
  149. package/lib/ocaml/belt_Range.cmti +0 -0
  150. package/lib/ocaml/belt_Range.ml +76 -0
  151. package/lib/ocaml/belt_Range.mli +114 -0
  152. package/lib/ocaml/belt_Result.cmi +0 -0
  153. package/lib/ocaml/belt_Result.cmt +0 -0
  154. package/lib/ocaml/belt_Result.cmti +0 -0
  155. package/lib/ocaml/belt_Result.ml +75 -0
  156. package/lib/ocaml/belt_Result.mli +205 -0
  157. package/lib/ocaml/belt_Set.cmi +0 -0
  158. package/lib/ocaml/belt_Set.cmt +0 -0
  159. package/lib/ocaml/belt_Set.cmti +0 -0
  160. package/lib/ocaml/belt_Set.cppo.ml +205 -0
  161. package/lib/ocaml/belt_Set.cppo.mli +153 -0
  162. package/lib/ocaml/belt_Set.ml +164 -0
  163. package/lib/ocaml/belt_Set.mli +523 -0
  164. package/lib/ocaml/belt_SetDict.cmi +0 -0
  165. package/lib/ocaml/belt_SetDict.cmt +0 -0
  166. package/lib/ocaml/belt_SetDict.cmti +0 -0
  167. package/lib/ocaml/belt_SetDict.ml +237 -0
  168. package/lib/ocaml/belt_SetDict.mli +567 -0
  169. package/lib/ocaml/belt_SetInt.cmi +0 -0
  170. package/lib/ocaml/belt_SetInt.cmt +0 -0
  171. package/lib/ocaml/belt_SetInt.cmti +0 -0
  172. package/lib/ocaml/belt_SetInt.ml +201 -0
  173. package/lib/ocaml/belt_SetInt.mli +151 -0
  174. package/lib/ocaml/belt_SetString.cmi +0 -0
  175. package/lib/ocaml/belt_SetString.cmt +0 -0
  176. package/lib/ocaml/belt_SetString.cmti +0 -0
  177. package/lib/ocaml/belt_SetString.ml +201 -0
  178. package/lib/ocaml/belt_SetString.mli +151 -0
  179. package/lib/ocaml/belt_SortArray.cmi +0 -0
  180. package/lib/ocaml/belt_SortArray.cmt +0 -0
  181. package/lib/ocaml/belt_SortArray.cmti +0 -0
  182. package/lib/ocaml/belt_SortArray.ml +322 -0
  183. package/lib/ocaml/belt_SortArray.mli +146 -0
  184. package/lib/ocaml/belt_SortArrayInt.cmi +0 -0
  185. package/lib/ocaml/belt_SortArrayInt.cmt +0 -0
  186. package/lib/ocaml/belt_SortArrayInt.cmti +0 -0
  187. package/lib/ocaml/belt_SortArrayInt.ml +263 -0
  188. package/lib/ocaml/belt_SortArrayInt.mli +93 -0
  189. package/lib/ocaml/belt_SortArrayString.cmi +0 -0
  190. package/lib/ocaml/belt_SortArrayString.cmt +0 -0
  191. package/lib/ocaml/belt_SortArrayString.cmti +0 -0
  192. package/lib/ocaml/belt_SortArrayString.ml +263 -0
  193. package/lib/ocaml/belt_SortArrayString.mli +93 -0
  194. package/lib/ocaml/belt_internalAVLset.cmt +0 -0
  195. package/lib/ocaml/belt_internalAVLset.cmti +0 -0
  196. package/lib/ocaml/belt_internalAVLset.ml +665 -0
  197. package/lib/ocaml/belt_internalAVLset.mli +124 -0
  198. package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
  199. package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
  200. package/lib/ocaml/belt_internalAVLtree.ml +762 -0
  201. package/lib/ocaml/belt_internalAVLtree.mli +215 -0
  202. package/lib/ocaml/belt_internalBuckets.cmt +0 -0
  203. package/lib/ocaml/belt_internalBuckets.cmti +0 -0
  204. package/lib/ocaml/belt_internalBuckets.ml +218 -0
  205. package/lib/ocaml/belt_internalBuckets.mli +57 -0
  206. package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
  207. package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
  208. package/lib/ocaml/belt_internalBucketsType.ml +59 -0
  209. package/lib/ocaml/belt_internalBucketsType.mli +46 -0
  210. package/lib/ocaml/belt_internalMapInt.cmt +0 -0
  211. package/lib/ocaml/belt_internalMapInt.ml +227 -0
  212. package/lib/ocaml/belt_internalMapString.cmt +0 -0
  213. package/lib/ocaml/belt_internalMapString.ml +227 -0
  214. package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
  215. package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
  216. package/lib/ocaml/belt_internalSetBuckets.ml +157 -0
  217. package/lib/ocaml/belt_internalSetBuckets.mli +47 -0
  218. package/lib/ocaml/belt_internalSetInt.cmt +0 -0
  219. package/lib/ocaml/belt_internalSetInt.ml +129 -0
  220. package/lib/ocaml/belt_internalSetString.cmt +0 -0
  221. package/lib/ocaml/belt_internalSetString.ml +129 -0
  222. package/lib/ocaml/belt_internals.cmti +0 -0
  223. package/lib/ocaml/belt_internals.mli +79 -0
  224. package/lib/ocaml/buffer.cmi +0 -0
  225. package/lib/ocaml/buffer.cmt +0 -0
  226. package/lib/ocaml/buffer.cmti +0 -0
  227. package/lib/ocaml/buffer.ml +250 -0
  228. package/lib/ocaml/buffer.mli +149 -0
  229. package/lib/ocaml/bytes.cmi +0 -0
  230. package/lib/ocaml/bytes.cmt +0 -0
  231. package/lib/ocaml/bytes.cmti +0 -0
  232. package/lib/ocaml/bytes.ml +431 -0
  233. package/lib/ocaml/bytes.mli +430 -0
  234. package/lib/ocaml/bytesLabels.cmi +0 -0
  235. package/lib/ocaml/bytesLabels.cmt +0 -0
  236. package/lib/ocaml/bytesLabels.cmti +0 -0
  237. package/lib/ocaml/bytesLabels.ml +428 -0
  238. package/lib/ocaml/bytesLabels.mli +276 -0
  239. package/lib/ocaml/callback.cmi +0 -0
  240. package/lib/ocaml/callback.cmt +0 -0
  241. package/lib/ocaml/callback.cmti +0 -0
  242. package/lib/ocaml/callback.ml +20 -0
  243. package/lib/ocaml/callback.mli +34 -0
  244. package/lib/ocaml/camlinternalLazy.cmi +0 -0
  245. package/lib/ocaml/camlinternalLazy.cmt +0 -0
  246. package/lib/ocaml/camlinternalLazy.cmti +0 -0
  247. package/lib/ocaml/camlinternalLazy.ml +89 -0
  248. package/lib/ocaml/camlinternalLazy.mli +27 -0
  249. package/lib/ocaml/camlinternalMod.cmi +0 -0
  250. package/lib/ocaml/camlinternalMod.cmt +0 -0
  251. package/lib/ocaml/camlinternalMod.cmti +0 -0
  252. package/lib/ocaml/camlinternalMod.ml +21 -0
  253. package/lib/ocaml/camlinternalMod.mli +25 -0
  254. package/lib/ocaml/char.cmi +0 -0
  255. package/lib/ocaml/char.cmt +0 -0
  256. package/lib/ocaml/char.cmti +0 -0
  257. package/lib/ocaml/char.ml +76 -0
  258. package/lib/ocaml/char.mli +72 -0
  259. package/lib/ocaml/complex.cmi +0 -0
  260. package/lib/ocaml/complex.cmt +0 -0
  261. package/lib/ocaml/complex.cmti +0 -0
  262. package/lib/ocaml/complex.ml +87 -0
  263. package/lib/ocaml/complex.mli +86 -0
  264. package/lib/ocaml/digest.cmi +0 -0
  265. package/lib/ocaml/digest.cmt +0 -0
  266. package/lib/ocaml/digest.cmti +0 -0
  267. package/lib/ocaml/digest.ml +66 -0
  268. package/lib/ocaml/digest.mli +68 -0
  269. package/lib/ocaml/dom.cmi +0 -0
  270. package/lib/ocaml/dom.cmt +0 -0
  271. package/lib/ocaml/dom.ml +296 -0
  272. package/lib/ocaml/dom_storage.cmi +0 -0
  273. package/lib/ocaml/dom_storage.cmt +0 -0
  274. package/lib/ocaml/dom_storage.ml +22 -0
  275. package/lib/ocaml/dom_storage2.cmi +0 -0
  276. package/lib/ocaml/dom_storage2.cmt +0 -0
  277. package/lib/ocaml/dom_storage2.ml +11 -0
  278. package/lib/ocaml/filename.cmi +0 -0
  279. package/lib/ocaml/filename.cmt +0 -0
  280. package/lib/ocaml/filename.cmti +0 -0
  281. package/lib/ocaml/filename.ml +233 -0
  282. package/lib/ocaml/filename.mli +134 -0
  283. package/lib/ocaml/genlex.cmi +0 -0
  284. package/lib/ocaml/genlex.cmt +0 -0
  285. package/lib/ocaml/genlex.cmti +0 -0
  286. package/lib/ocaml/genlex.ml +201 -0
  287. package/lib/ocaml/genlex.mli +73 -0
  288. package/lib/ocaml/hashmap.cppo.ml +214 -0
  289. package/lib/ocaml/hashmap.cppo.mli +54 -0
  290. package/lib/ocaml/hashset.cppo.ml +165 -0
  291. package/lib/ocaml/hashset.cppo.mli +77 -0
  292. package/lib/ocaml/hashtbl.cmi +0 -0
  293. package/lib/ocaml/hashtbl.cmt +0 -0
  294. package/lib/ocaml/hashtbl.cmti +0 -0
  295. package/lib/ocaml/hashtbl.ml +541 -0
  296. package/lib/ocaml/hashtbl.mli +411 -0
  297. package/lib/ocaml/hashtblLabels.cmi +0 -0
  298. package/lib/ocaml/hashtblLabels.cmt +0 -0
  299. package/lib/ocaml/hashtblLabels.ml +130 -0
  300. package/lib/ocaml/int32.cmi +0 -0
  301. package/lib/ocaml/int32.cmt +0 -0
  302. package/lib/ocaml/int32.cmti +0 -0
  303. package/lib/ocaml/int32.ml +64 -0
  304. package/lib/ocaml/int32.mli +186 -0
  305. package/lib/ocaml/int64.cmi +0 -0
  306. package/lib/ocaml/int64.cmt +0 -0
  307. package/lib/ocaml/int64.cmti +0 -0
  308. package/lib/ocaml/int64.ml +72 -0
  309. package/lib/ocaml/int64.mli +197 -0
  310. package/lib/ocaml/internal_map.cppo.ml +230 -0
  311. package/lib/ocaml/internal_set.cppo.ml +134 -0
  312. package/lib/ocaml/js.cmi +0 -0
  313. package/lib/ocaml/js.cmt +0 -0
  314. package/lib/ocaml/js.ml +316 -0
  315. package/lib/ocaml/js_OO.cmi +0 -0
  316. package/lib/ocaml/js_OO.cmt +0 -0
  317. package/lib/ocaml/js_OO.ml +180 -0
  318. package/lib/ocaml/js_array.cmi +0 -0
  319. package/lib/ocaml/js_array.cmt +0 -0
  320. package/lib/ocaml/js_array.ml +970 -0
  321. package/lib/ocaml/js_array2.cmi +0 -0
  322. package/lib/ocaml/js_array2.cmt +0 -0
  323. package/lib/ocaml/js_array2.ml +1065 -0
  324. package/lib/ocaml/js_bigint.cmi +0 -0
  325. package/lib/ocaml/js_bigint.cmt +0 -0
  326. package/lib/ocaml/js_bigint.ml +3 -0
  327. package/lib/ocaml/js_cast.cmi +0 -0
  328. package/lib/ocaml/js_cast.cmt +0 -0
  329. package/lib/ocaml/js_cast.cmti +0 -0
  330. package/lib/ocaml/js_cast.ml +29 -0
  331. package/lib/ocaml/js_cast.mli +45 -0
  332. package/lib/ocaml/js_console.cmi +0 -0
  333. package/lib/ocaml/js_console.cmt +0 -0
  334. package/lib/ocaml/js_console.ml +51 -0
  335. package/lib/ocaml/js_date.cmi +0 -0
  336. package/lib/ocaml/js_date.cmt +0 -0
  337. package/lib/ocaml/js_date.ml +1263 -0
  338. package/lib/ocaml/js_dict.cmi +0 -0
  339. package/lib/ocaml/js_dict.cmt +0 -0
  340. package/lib/ocaml/js_dict.cmti +0 -0
  341. package/lib/ocaml/js_dict.ml +114 -0
  342. package/lib/ocaml/js_dict.mli +152 -0
  343. package/lib/ocaml/js_exn.cmi +0 -0
  344. package/lib/ocaml/js_exn.cmt +0 -0
  345. package/lib/ocaml/js_exn.cmti +0 -0
  346. package/lib/ocaml/js_exn.ml +102 -0
  347. package/lib/ocaml/js_exn.mli +79 -0
  348. package/lib/ocaml/js_float.cmi +0 -0
  349. package/lib/ocaml/js_float.cmt +0 -0
  350. package/lib/ocaml/js_float.ml +294 -0
  351. package/lib/ocaml/js_global.cmi +0 -0
  352. package/lib/ocaml/js_global.cmt +0 -0
  353. package/lib/ocaml/js_global.ml +185 -0
  354. package/lib/ocaml/js_int.cmi +0 -0
  355. package/lib/ocaml/js_int.cmt +0 -0
  356. package/lib/ocaml/js_int.ml +158 -0
  357. package/lib/ocaml/js_json.cmi +0 -0
  358. package/lib/ocaml/js_json.cmt +0 -0
  359. package/lib/ocaml/js_json.cmti +0 -0
  360. package/lib/ocaml/js_json.ml +195 -0
  361. package/lib/ocaml/js_json.mli +244 -0
  362. package/lib/ocaml/js_list.cmi +0 -0
  363. package/lib/ocaml/js_list.cmt +0 -0
  364. package/lib/ocaml/js_list.cmti +0 -0
  365. package/lib/ocaml/js_list.ml +174 -0
  366. package/lib/ocaml/js_list.mli +72 -0
  367. package/lib/ocaml/js_map.cmi +0 -0
  368. package/lib/ocaml/js_map.cmt +0 -0
  369. package/lib/ocaml/js_map.ml +3 -0
  370. package/lib/ocaml/js_mapperRt.cmi +0 -0
  371. package/lib/ocaml/js_mapperRt.cmt +0 -0
  372. package/lib/ocaml/js_mapperRt.cmti +0 -0
  373. package/lib/ocaml/js_mapperRt.ml +50 -0
  374. package/lib/ocaml/js_mapperRt.mli +44 -0
  375. package/lib/ocaml/js_math.cmi +0 -0
  376. package/lib/ocaml/js_math.cmt +0 -0
  377. package/lib/ocaml/js_math.ml +626 -0
  378. package/lib/ocaml/js_null.cmi +0 -0
  379. package/lib/ocaml/js_null.cmt +0 -0
  380. package/lib/ocaml/js_null.cmti +0 -0
  381. package/lib/ocaml/js_null.ml +57 -0
  382. package/lib/ocaml/js_null.mli +87 -0
  383. package/lib/ocaml/js_null_undefined.cmi +0 -0
  384. package/lib/ocaml/js_null_undefined.cmt +0 -0
  385. package/lib/ocaml/js_null_undefined.cmti +0 -0
  386. package/lib/ocaml/js_null_undefined.ml +50 -0
  387. package/lib/ocaml/js_null_undefined.mli +85 -0
  388. package/lib/ocaml/js_obj.cmi +0 -0
  389. package/lib/ocaml/js_obj.cmt +0 -0
  390. package/lib/ocaml/js_obj.ml +100 -0
  391. package/lib/ocaml/js_option.cmi +0 -0
  392. package/lib/ocaml/js_option.cmt +0 -0
  393. package/lib/ocaml/js_option.cmti +0 -0
  394. package/lib/ocaml/js_option.ml +203 -0
  395. package/lib/ocaml/js_option.mli +52 -0
  396. package/lib/ocaml/js_promise.cmi +0 -0
  397. package/lib/ocaml/js_promise.cmt +0 -0
  398. package/lib/ocaml/js_promise.ml +100 -0
  399. package/lib/ocaml/js_promise2.cmi +0 -0
  400. package/lib/ocaml/js_promise2.cmt +0 -0
  401. package/lib/ocaml/js_promise2.res +58 -0
  402. package/lib/ocaml/js_re.cmi +0 -0
  403. package/lib/ocaml/js_re.cmt +0 -0
  404. package/lib/ocaml/js_re.ml +184 -0
  405. package/lib/ocaml/js_result.cmi +0 -0
  406. package/lib/ocaml/js_result.cmt +0 -0
  407. package/lib/ocaml/js_result.cmti +0 -0
  408. package/lib/ocaml/js_result.ml +28 -0
  409. package/lib/ocaml/js_result.mli +28 -0
  410. package/lib/ocaml/js_set.cmi +0 -0
  411. package/lib/ocaml/js_set.cmt +0 -0
  412. package/lib/ocaml/js_set.ml +3 -0
  413. package/lib/ocaml/js_string.cmi +0 -0
  414. package/lib/ocaml/js_string.cmt +0 -0
  415. package/lib/ocaml/js_string.ml +914 -0
  416. package/lib/ocaml/js_string2.cmi +0 -0
  417. package/lib/ocaml/js_string2.cmt +0 -0
  418. package/lib/ocaml/js_string2.ml +912 -0
  419. package/lib/ocaml/js_typed_array.cmi +0 -0
  420. package/lib/ocaml/js_typed_array.cmt +0 -0
  421. package/lib/ocaml/js_typed_array.cppo.ml +429 -0
  422. package/lib/ocaml/js_typed_array.ml +1405 -0
  423. package/lib/ocaml/js_typed_array2.cmi +0 -0
  424. package/lib/ocaml/js_typed_array2.cmt +0 -0
  425. package/lib/ocaml/js_typed_array2.cppo.ml +296 -0
  426. package/lib/ocaml/js_typed_array2.ml +1269 -0
  427. package/lib/ocaml/js_types.cmi +0 -0
  428. package/lib/ocaml/js_types.cmt +0 -0
  429. package/lib/ocaml/js_types.cmti +0 -0
  430. package/lib/ocaml/js_types.ml +118 -0
  431. package/lib/ocaml/js_types.mli +78 -0
  432. package/lib/ocaml/js_undefined.cmi +0 -0
  433. package/lib/ocaml/js_undefined.cmt +0 -0
  434. package/lib/ocaml/js_undefined.cmti +0 -0
  435. package/lib/ocaml/js_undefined.ml +59 -0
  436. package/lib/ocaml/js_undefined.mli +92 -0
  437. package/lib/ocaml/js_vector.cmi +0 -0
  438. package/lib/ocaml/js_vector.cmt +0 -0
  439. package/lib/ocaml/js_vector.cmti +0 -0
  440. package/lib/ocaml/js_vector.ml +143 -0
  441. package/lib/ocaml/js_vector.mli +92 -0
  442. package/lib/ocaml/js_weakmap.cmi +0 -0
  443. package/lib/ocaml/js_weakmap.cmt +0 -0
  444. package/lib/ocaml/js_weakmap.ml +3 -0
  445. package/lib/ocaml/js_weakset.cmi +0 -0
  446. package/lib/ocaml/js_weakset.cmt +0 -0
  447. package/lib/ocaml/js_weakset.ml +3 -0
  448. package/lib/ocaml/jsx.cmi +0 -0
  449. package/lib/ocaml/jsx.cmt +0 -0
  450. package/lib/ocaml/jsx.res +40 -0
  451. package/lib/ocaml/jsxDOM.cmi +0 -0
  452. package/lib/ocaml/jsxDOM.cmt +0 -0
  453. package/lib/ocaml/jsxDOM.res +620 -0
  454. package/lib/ocaml/jsxDOMStyle.cmi +0 -0
  455. package/lib/ocaml/jsxDOMStyle.cmt +0 -0
  456. package/lib/ocaml/jsxDOMStyle.ml +781 -0
  457. package/lib/ocaml/jsxEvent.cmi +0 -0
  458. package/lib/ocaml/jsxEvent.cmt +0 -0
  459. package/lib/ocaml/jsxEvent.ml +358 -0
  460. package/lib/ocaml/jsxPPXReactSupport.cmi +0 -0
  461. package/lib/ocaml/jsxPPXReactSupport.cmt +0 -0
  462. package/lib/ocaml/jsxPPXReactSupport.res +48 -0
  463. package/lib/ocaml/lazy.cmi +0 -0
  464. package/lib/ocaml/lazy.cmt +0 -0
  465. package/lib/ocaml/lazy.cmti +0 -0
  466. package/lib/ocaml/lazy.ml +70 -0
  467. package/lib/ocaml/lazy.mli +95 -0
  468. package/lib/ocaml/lexing.cmi +0 -0
  469. package/lib/ocaml/lexing.cmt +0 -0
  470. package/lib/ocaml/lexing.cmti +0 -0
  471. package/lib/ocaml/lexing.ml +230 -0
  472. package/lib/ocaml/lexing.mli +172 -0
  473. package/lib/ocaml/list.cmi +0 -0
  474. package/lib/ocaml/list.cmt +0 -0
  475. package/lib/ocaml/list.cmti +0 -0
  476. package/lib/ocaml/list.ml +485 -0
  477. package/lib/ocaml/list.mli +347 -0
  478. package/lib/ocaml/listLabels.cmi +0 -0
  479. package/lib/ocaml/listLabels.cmt +0 -0
  480. package/lib/ocaml/listLabels.cmti +0 -0
  481. package/lib/ocaml/listLabels.ml +485 -0
  482. package/lib/ocaml/listLabels.mli +353 -0
  483. package/lib/ocaml/map.cmi +0 -0
  484. package/lib/ocaml/map.cmt +0 -0
  485. package/lib/ocaml/map.cmti +0 -0
  486. package/lib/ocaml/map.cppo.ml +174 -0
  487. package/lib/ocaml/map.cppo.mli +191 -0
  488. package/lib/ocaml/map.ml +480 -0
  489. package/lib/ocaml/map.mli +315 -0
  490. package/lib/ocaml/mapLabels.cmi +0 -0
  491. package/lib/ocaml/mapLabels.cmt +0 -0
  492. package/lib/ocaml/mapLabels.ml +480 -0
  493. package/lib/ocaml/mapm.cppo.ml +177 -0
  494. package/lib/ocaml/mapm.cppo.mli +138 -0
  495. package/lib/ocaml/moreLabels.cmi +0 -0
  496. package/lib/ocaml/moreLabels.cmt +0 -0
  497. package/lib/ocaml/moreLabels.cmti +0 -0
  498. package/lib/ocaml/moreLabels.ml +22 -0
  499. package/lib/ocaml/moreLabels.mli +198 -0
  500. package/lib/ocaml/node.cmi +0 -0
  501. package/lib/ocaml/node.cmt +0 -0
  502. package/lib/ocaml/node.ml +84 -0
  503. package/lib/ocaml/node_buffer.cmi +0 -0
  504. package/lib/ocaml/node_buffer.cmt +0 -0
  505. package/lib/ocaml/node_buffer.ml +47 -0
  506. package/lib/ocaml/node_child_process.cmi +0 -0
  507. package/lib/ocaml/node_child_process.cmt +0 -0
  508. package/lib/ocaml/node_child_process.ml +50 -0
  509. package/lib/ocaml/node_fs.cmi +0 -0
  510. package/lib/ocaml/node_fs.cmt +0 -0
  511. package/lib/ocaml/node_fs.ml +153 -0
  512. package/lib/ocaml/node_module.cmi +0 -0
  513. package/lib/ocaml/node_module.cmt +0 -0
  514. package/lib/ocaml/node_module.ml +29 -0
  515. package/lib/ocaml/node_path.cmi +0 -0
  516. package/lib/ocaml/node_path.cmt +0 -0
  517. package/lib/ocaml/node_path.ml +71 -0
  518. package/lib/ocaml/node_process.cmi +0 -0
  519. package/lib/ocaml/node_process.cmt +0 -0
  520. package/lib/ocaml/node_process.cmti +0 -0
  521. package/lib/ocaml/node_process.ml +59 -0
  522. package/lib/ocaml/node_process.mli +48 -0
  523. package/lib/ocaml/obj.cmi +0 -0
  524. package/lib/ocaml/obj.cmt +0 -0
  525. package/lib/ocaml/obj.cmti +0 -0
  526. package/lib/ocaml/obj.ml +29 -0
  527. package/lib/ocaml/obj.mli +62 -0
  528. package/lib/ocaml/parsing.cmi +0 -0
  529. package/lib/ocaml/parsing.cmt +0 -0
  530. package/lib/ocaml/parsing.cmti +0 -0
  531. package/lib/ocaml/parsing.ml +212 -0
  532. package/lib/ocaml/parsing.mli +105 -0
  533. package/lib/ocaml/pervasives.cmi +0 -0
  534. package/lib/ocaml/pervasives.cmt +0 -0
  535. package/lib/ocaml/pervasives.cmti +0 -0
  536. package/lib/ocaml/pervasives.ml +297 -0
  537. package/lib/ocaml/pervasives.mli +771 -0
  538. package/lib/ocaml/printexc.cmi +0 -0
  539. package/lib/ocaml/printexc.cmt +0 -0
  540. package/lib/ocaml/printexc.cmti +0 -0
  541. package/lib/ocaml/printexc.ml +75 -0
  542. package/lib/ocaml/printexc.mli +57 -0
  543. package/lib/ocaml/queue.cmi +0 -0
  544. package/lib/ocaml/queue.cmt +0 -0
  545. package/lib/ocaml/queue.cmti +0 -0
  546. package/lib/ocaml/queue.ml +132 -0
  547. package/lib/ocaml/queue.mli +82 -0
  548. package/lib/ocaml/random.cmi +0 -0
  549. package/lib/ocaml/random.cmt +0 -0
  550. package/lib/ocaml/random.cmti +0 -0
  551. package/lib/ocaml/random.ml +273 -0
  552. package/lib/ocaml/random.mli +102 -0
  553. package/lib/ocaml/set.cmi +0 -0
  554. package/lib/ocaml/set.cmt +0 -0
  555. package/lib/ocaml/set.cmti +0 -0
  556. package/lib/ocaml/set.ml +526 -0
  557. package/lib/ocaml/set.mli +266 -0
  558. package/lib/ocaml/setLabels.cmi +0 -0
  559. package/lib/ocaml/setLabels.cmt +0 -0
  560. package/lib/ocaml/setLabels.ml +526 -0
  561. package/lib/ocaml/setm.cppo.ml +346 -0
  562. package/lib/ocaml/setm.cppo.mli +126 -0
  563. package/lib/ocaml/sort.cmi +0 -0
  564. package/lib/ocaml/sort.cmt +0 -0
  565. package/lib/ocaml/sort.cmti +0 -0
  566. package/lib/ocaml/sort.cppo.ml +267 -0
  567. package/lib/ocaml/sort.cppo.mli +96 -0
  568. package/lib/ocaml/sort.ml +99 -0
  569. package/lib/ocaml/sort.mli +44 -0
  570. package/lib/ocaml/stack.cmi +0 -0
  571. package/lib/ocaml/stack.cmt +0 -0
  572. package/lib/ocaml/stack.cmti +0 -0
  573. package/lib/ocaml/stack.ml +44 -0
  574. package/lib/ocaml/stack.mli +63 -0
  575. package/lib/ocaml/stdLabels.cmi +0 -0
  576. package/lib/ocaml/stdLabels.cmt +0 -0
  577. package/lib/ocaml/stdLabels.cmti +0 -0
  578. package/lib/ocaml/stdLabels.ml +24 -0
  579. package/lib/ocaml/stdLabels.mli +29 -0
  580. package/lib/ocaml/stream.cmi +0 -0
  581. package/lib/ocaml/stream.cmt +0 -0
  582. package/lib/ocaml/stream.cmti +0 -0
  583. package/lib/ocaml/stream.ml +213 -0
  584. package/lib/ocaml/stream.mli +108 -0
  585. package/lib/ocaml/string.cmi +0 -0
  586. package/lib/ocaml/string.cmt +0 -0
  587. package/lib/ocaml/string.cmti +0 -0
  588. package/lib/ocaml/string.ml +190 -0
  589. package/lib/ocaml/string.mli +286 -0
  590. package/lib/ocaml/stringLabels.cmi +0 -0
  591. package/lib/ocaml/stringLabels.cmt +0 -0
  592. package/lib/ocaml/stringLabels.cmti +0 -0
  593. package/lib/ocaml/stringLabels.ml +190 -0
  594. package/lib/ocaml/stringLabels.mli +241 -0
  595. package/lib/ocaml/sys.cmi +0 -0
  596. package/lib/ocaml/sys.cmt +0 -0
  597. package/lib/ocaml/sys.cmti +0 -0
  598. package/lib/ocaml/sys.ml +135 -0
  599. package/lib/ocaml/sys.mli +333 -0
  600. package/lib/ocaml/uchar.cmi +0 -0
  601. package/lib/ocaml/uchar.cmt +0 -0
  602. package/lib/ocaml/uchar.cmti +0 -0
  603. package/lib/ocaml/uchar.ml +58 -0
  604. package/lib/ocaml/uchar.mli +98 -0
  605. package/linux/bsb_helper.exe +0 -0
  606. package/linux/bsc.exe +0 -0
  607. package/linux/ninja.exe +0 -0
  608. package/linux/rescript.exe +0 -0
  609. package/ninja.COPYING +202 -0
  610. package/package.json +1 -1
  611. package/vendor/ninja.tar.gz +0 -0
  612. package/win32/bsb_helper.exe +0 -0
  613. package/win32/bsc.exe +0 -0
  614. package/win32/ninja.exe +0 -0
  615. package/win32/refmt.exe +0 -0
  616. package/win32/rescript.exe +0 -0
@@ -0,0 +1,803 @@
1
+ (* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript
2
+ *
3
+ * This program is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU Lesser General Public License as published by
5
+ * the Free Software Foundation, either version 3 of the License, or
6
+ * (at your option) any later version.
7
+ *
8
+ * In addition to the permissions granted to you by the LGPL, you may combine
9
+ * or link a "work that uses the Library" with a publicly distributed version
10
+ * of this file to produce a combined library or application, then distribute
11
+ * that combined work under the terms of your choosing, with no requirement
12
+ * to comply with the obligations normally placed on you by section 4 of the
13
+ * LGPL version 3 (or the corresponding section of a later version of the LGPL
14
+ * should you choose to use a later version).
15
+ *
16
+ * This program is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * along with this program; if not, write to the Free Software
23
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
24
+
25
+
26
+ (*
27
+ perf is not everything, there are better memory represenations
28
+
29
+ ```
30
+ type 'a cell = {
31
+ mutable head : 'a;
32
+ mutable tail : 'a opt_cell
33
+ }
34
+
35
+ and 'a opt_cell = 'a cell Js.null
36
+
37
+ and 'a t = {
38
+ length : int ;
39
+ data : 'a opt_cell
40
+ }
41
+ ```
42
+ However,
43
+ - people use List not because of its perf, but its
44
+ convenience, in that case, pattern match and compatibility seems
45
+ more attractive, we could keep a mutable list
46
+ - The built in types would indicate that
47
+ its construtor is immutable, a better optimizer would break such code
48
+
49
+ ```
50
+ type 'a t = {
51
+ head : 'a;
52
+ mutable tail : 'a t | int
53
+ }
54
+ ```
55
+ In the future, we could come up with a safer version
56
+ ```
57
+ type 'a t =
58
+ | Nil
59
+ | Cons of { hd : 'a ; mutable tail : 'a t }
60
+ ```
61
+ *)
62
+
63
+ [@@@bs.config {flags = [| "-bs-noassertfalse" |]}]
64
+
65
+ type 'a t = 'a list
66
+
67
+ module A = Belt_Array
68
+
69
+ external mutableCell :
70
+ 'a -> 'a t -> 'a t = "#makemutablelist"
71
+
72
+
73
+ (*
74
+ `mutableCell x []` == `x`
75
+ but tell the compiler that is a mutable cell, so it wont
76
+ be mis-inlined in the future
77
+ dont inline a binding to mutable cell, it is mutable
78
+ *)
79
+ (* INVARIANT: relies on Literals.tl (internal representation) *)
80
+ external unsafeMutateTail : 'a t -> 'a t -> unit = "tl" [@@bs.set]
81
+
82
+
83
+
84
+
85
+ (*
86
+ - the cell is not empty
87
+ *)
88
+
89
+ let head x =
90
+ match x with
91
+ | [] -> None
92
+ | x::_ -> Some x
93
+
94
+ let headExn x =
95
+ match x with
96
+ | [] -> raise Not_found
97
+ | x::_ -> x
98
+
99
+ let tail x =
100
+ match x with
101
+ | [] -> None
102
+ | _::xs -> Some xs
103
+
104
+ let tailExn x =
105
+ match x with
106
+ | [] -> raise Not_found
107
+ | _::t -> t
108
+
109
+ let add xs x = x :: xs
110
+
111
+ (* Assume `n >=0` *)
112
+ let rec nthAux x n =
113
+ match x with
114
+ | h::t -> if n = 0 then Some h else nthAux t (n - 1)
115
+ | _ -> None
116
+
117
+ let rec nthAuxAssert x n =
118
+ match x with
119
+ | h::t -> if n = 0 then h else nthAuxAssert t (n - 1)
120
+ | _ -> raise Not_found
121
+
122
+ let get x n =
123
+ if n < 0 then None
124
+ else nthAux x n
125
+
126
+ let getExn x n =
127
+ if n < 0 then raise Not_found
128
+ else nthAuxAssert x n
129
+
130
+ let rec partitionAux p cell precX precY =
131
+ match cell with
132
+ | [] -> ()
133
+ | h::t ->
134
+ let next = mutableCell h [] in
135
+ if p h [@bs] then
136
+ begin
137
+ unsafeMutateTail precX next ;
138
+ partitionAux p t next precY
139
+ end
140
+ else
141
+ begin
142
+ unsafeMutateTail precY next ;
143
+ partitionAux p t precX next
144
+ end
145
+
146
+ let rec splitAux cell precX precY =
147
+ match cell with
148
+ | [] -> ()
149
+ | (a,b)::t ->
150
+ let nextA = mutableCell a [] in
151
+ let nextB = mutableCell b [] in
152
+ unsafeMutateTail precX nextA;
153
+ unsafeMutateTail precY nextB;
154
+ splitAux t nextA nextB
155
+
156
+ (* return the tail pointer so it can continue copy other
157
+ list
158
+ *)
159
+ let rec copyAuxCont cellX prec =
160
+ match cellX with
161
+ | [] -> prec
162
+ | h::t ->
163
+ let next = mutableCell h [] in
164
+ unsafeMutateTail prec next ;
165
+ copyAuxCont t next
166
+
167
+ let rec copyAuxWitFilter f cellX prec =
168
+ match cellX with
169
+ | [] ->
170
+ ()
171
+ | h::t ->
172
+ if f h [@bs] then
173
+ begin
174
+ let next = mutableCell h [] in
175
+ unsafeMutateTail prec next ;
176
+ copyAuxWitFilter f t next
177
+ end
178
+ else copyAuxWitFilter f t prec
179
+
180
+ let rec copyAuxWithFilterIndex f cellX prec i =
181
+ match cellX with
182
+ | [] ->
183
+ ()
184
+ | h::t ->
185
+ if f h i [@bs] then
186
+ begin
187
+ let next = mutableCell h [] in
188
+ unsafeMutateTail prec next ;
189
+ copyAuxWithFilterIndex f t next (i + 1)
190
+ end
191
+ else copyAuxWithFilterIndex f t prec (i + 1)
192
+
193
+ let rec copyAuxWitFilterMap f cellX prec =
194
+ match cellX with
195
+ | [] ->
196
+ ()
197
+ | h::t ->
198
+ match f h [@bs] with
199
+ | Some h ->
200
+ begin
201
+ let next = mutableCell h [] in
202
+ unsafeMutateTail prec next ;
203
+ copyAuxWitFilterMap f t next
204
+ end
205
+ | None -> copyAuxWitFilterMap f t prec
206
+
207
+ let rec removeAssocAuxWithMap cellX x prec f =
208
+ match cellX with
209
+ | [] -> false
210
+ | ((a,_) as h):: t ->
211
+ if f a x [@bs] then
212
+ (unsafeMutateTail prec t ; true)
213
+ else
214
+ let next = mutableCell h [] in
215
+ unsafeMutateTail prec next ;
216
+ removeAssocAuxWithMap t x next f
217
+
218
+ let rec setAssocAuxWithMap cellX x k prec eq =
219
+ match cellX with
220
+ | [] -> false
221
+ | ((a,_) as h) :: t ->
222
+ if eq a x [@bs] then
223
+ (unsafeMutateTail prec ( (x,k)::t); true)
224
+ else
225
+ let next = mutableCell h [] in
226
+ unsafeMutateTail prec next ;
227
+ setAssocAuxWithMap t x k next eq
228
+
229
+
230
+ let rec copyAuxWithMap cellX prec f =
231
+ match cellX with
232
+ | [] ->
233
+ ()
234
+ | h::t ->
235
+ let next = mutableCell (f h [@bs]) [] in
236
+ unsafeMutateTail prec next ;
237
+ copyAuxWithMap t next f
238
+
239
+
240
+ let rec zipAux cellX cellY prec =
241
+ match cellX, cellY with
242
+ | h1::t1, h2::t2 ->
243
+ let next = mutableCell ( h1, h2) [] in
244
+ unsafeMutateTail prec next ;
245
+ zipAux t1 t2 next
246
+ | [],_ | _,[] ->
247
+ ()
248
+
249
+ let rec copyAuxWithMap2 f cellX cellY prec =
250
+ match cellX, cellY with
251
+ | h1::t1, h2::t2 ->
252
+ let next = mutableCell (f h1 h2 [@bs]) [] in
253
+ unsafeMutateTail prec next ;
254
+ copyAuxWithMap2 f t1 t2 next
255
+ | [],_ | _,[] ->
256
+ ()
257
+
258
+ let rec copyAuxWithMapI f i cellX prec =
259
+ match cellX with
260
+ | h::t ->
261
+ let next = mutableCell (f i h [@bs]) [] in
262
+ unsafeMutateTail prec next ;
263
+ copyAuxWithMapI f (i + 1) t next
264
+ | [] ->
265
+ ()
266
+
267
+ let rec takeAux n cell prec =
268
+ if n = 0 then true
269
+ else
270
+ match cell with
271
+ | [] -> false
272
+ | x::xs ->
273
+ let cell = mutableCell x [] in
274
+ unsafeMutateTail prec cell;
275
+ takeAux (n - 1) xs cell
276
+
277
+ let rec splitAtAux n cell prec =
278
+ if n = 0 then Some cell
279
+ else
280
+ match cell with
281
+ | [] -> None
282
+ | x::xs ->
283
+ let cell = mutableCell x [] in
284
+ unsafeMutateTail prec cell;
285
+ splitAtAux (n - 1) xs cell
286
+
287
+ (* invarint `n >= 0` *)
288
+ let take lst n =
289
+ if n < 0 then None
290
+ else
291
+ if n = 0 then Some []
292
+ else
293
+ match lst with
294
+ | [] -> None
295
+ | x::xs ->
296
+ let cell = mutableCell x [] in
297
+ let has = takeAux (n-1) xs cell in
298
+ if has then Some cell
299
+ else None
300
+ (* invariant `n >= 0 ` *)
301
+ let rec dropAux l n =
302
+ if n = 0 then Some l
303
+ else
304
+ match l with
305
+ | _::tl -> dropAux tl (n -1)
306
+ | [] -> None
307
+
308
+ let drop lst n =
309
+ if n < 0 then None
310
+ else
311
+ dropAux lst n
312
+
313
+ let splitAt lst n =
314
+ if n < 0 then None
315
+ else
316
+ if n = 0 then Some ([],lst)
317
+ else
318
+ match lst with
319
+ | [] -> None
320
+ | x::xs ->
321
+ let cell = mutableCell x [] in
322
+ let rest = splitAtAux (n - 1) xs cell in
323
+ match rest with
324
+ | Some rest -> Some (cell, rest)
325
+ | None -> None
326
+
327
+ let concat xs ys =
328
+ match xs with
329
+ | [] -> ys
330
+ | h::t ->
331
+ let cell = mutableCell h [] in
332
+ unsafeMutateTail (copyAuxCont t cell) ys;
333
+ cell
334
+
335
+ let mapU xs f =
336
+ match xs with
337
+ | [] -> []
338
+ | h::t ->
339
+ let cell = mutableCell (f h [@bs]) [] in
340
+ copyAuxWithMap t cell f;
341
+ cell
342
+
343
+ let map xs f = mapU xs (fun[@bs] x -> f x )
344
+
345
+ let zipByU l1 l2 f =
346
+ match (l1, l2) with
347
+ | (a1::l1, a2::l2) ->
348
+ let cell = mutableCell (f a1 a2 [@bs]) [] in
349
+ copyAuxWithMap2 f l1 l2 cell;
350
+ cell
351
+ | [], _ | _, [] -> []
352
+
353
+ let zipBy l1 l2 f = zipByU l1 l2 (fun[@bs] x y -> f x y)
354
+
355
+ let mapWithIndexU xs f =
356
+ match xs with
357
+ [] -> []
358
+ | h::t ->
359
+ let cell = mutableCell (f 0 h [@bs]) [] in
360
+ copyAuxWithMapI f 1 t cell;
361
+ cell
362
+
363
+ let mapWithIndex xs f = mapWithIndexU xs (fun[@bs] i x -> f i x)
364
+
365
+
366
+ let makeByU n f =
367
+ if n <= 0 then []
368
+ else
369
+ let headX = mutableCell (f 0 [@bs]) [] in
370
+ let cur = ref headX in
371
+ let i = ref 1 in
372
+ while i.contents < n do
373
+ let v = mutableCell (f i.contents [@bs]) [] in
374
+ unsafeMutateTail cur.contents v ;
375
+ cur.contents<- v ;
376
+ i.contents <- i.contents + 1 ;
377
+ done
378
+ ;
379
+ headX
380
+
381
+ let makeBy n f = makeByU n (fun[@bs] x -> f x)
382
+
383
+ let make (type a) n (v : a) : a list =
384
+ if n <= 0 then []
385
+ else
386
+ let headX = mutableCell v [] in
387
+ let cur = ref headX in
388
+ let i = ref 1 in
389
+ while i.contents < n do
390
+ let v = mutableCell v [] in
391
+ unsafeMutateTail cur.contents v ;
392
+ cur.contents<- v ;
393
+ i.contents <- i.contents + 1 ;
394
+ done
395
+ ;
396
+ headX
397
+
398
+ let rec lengthAux x acc =
399
+ match x with
400
+ | [] -> acc
401
+ | _::t -> lengthAux t (acc + 1)
402
+
403
+ let length xs = lengthAux xs 0
404
+ let size = length
405
+
406
+ let rec fillAux arr i x =
407
+ match x with
408
+ | [] -> ()
409
+ | h::t ->
410
+ A.setUnsafe arr i h ;
411
+ fillAux arr (i + 1) t
412
+
413
+ let rec fromArrayAux a i res =
414
+ if i < 0 then res
415
+ else fromArrayAux a (i - 1) (A.getUnsafe a i :: res)
416
+
417
+ let fromArray a =
418
+ fromArrayAux a (A.length a - 1) []
419
+
420
+ let toArray ( x : _ t) =
421
+ let len = length x in
422
+ let arr = A.makeUninitializedUnsafe len in
423
+ fillAux arr 0 x;
424
+ arr
425
+
426
+ let shuffle xs =
427
+ let v = toArray xs in
428
+ A.shuffleInPlace v ;
429
+ fromArray v
430
+
431
+ (* let rec fillAuxMap arr i x f =
432
+ match x with
433
+ | [] -> ()
434
+ | h::t ->
435
+ A.setUnsafe arr i (f h [@bs]) ;
436
+ fillAuxMap arr (i + 1) t f *)
437
+
438
+ (* module J = Js_json *)
439
+ (* type json = J.t *)
440
+ (* let toJson x f = *)
441
+ (* let len = length x in *)
442
+ (* let arr = Belt_Array.makeUninitializedUnsafe len in *)
443
+ (* fillAuxMap arr 0 x f; *)
444
+ (* J.array arr *)
445
+
446
+ (* TODO: best practice about raising excpetion
447
+ 1. raise OCaml exception, no stacktrace
448
+ 2. raise JS exception, how to pattern match
449
+ *)
450
+
451
+
452
+
453
+ let rec reverseConcat l1 l2 =
454
+ match l1 with
455
+ [] -> l2
456
+ | a :: l -> reverseConcat l (a :: l2)
457
+
458
+ let reverse l = reverseConcat l []
459
+
460
+ let rec flattenAux prec xs =
461
+ match xs with
462
+ | [] ->unsafeMutateTail prec []
463
+ | h::r -> flattenAux (copyAuxCont h prec) r
464
+
465
+
466
+ let rec flatten xs =
467
+ match xs with
468
+ | [] -> []
469
+ | []::xs -> flatten xs
470
+ | (h::t):: r ->
471
+ let cell = mutableCell h [] in
472
+ flattenAux (copyAuxCont t cell) r ;
473
+ cell
474
+
475
+ let concatMany xs =
476
+ match xs with
477
+ | [||] -> []
478
+ | [|x|] -> x
479
+ | _ ->
480
+ let len = A.length xs in
481
+ let v = ref (A.getUnsafe xs (len - 1)) in
482
+ for i = len - 2 downto 0 do
483
+ v .contents<- concat (A.getUnsafe xs i) v.contents
484
+ done ;
485
+ v.contents
486
+
487
+ let rec mapRevAux f accu xs =
488
+ match xs with
489
+ | [] -> accu
490
+ | a::l -> mapRevAux f (f a [@bs] :: accu) l
491
+
492
+ let mapReverseU l f =
493
+ mapRevAux f [] l
494
+
495
+ let mapReverse l f = mapReverseU l (fun [@bs] x -> f x)
496
+
497
+ let rec forEachU xs f =
498
+ match xs with
499
+ [] -> ()
500
+ | a::l -> f a [@bs] |. ignore ; forEachU l f
501
+
502
+ let forEach xs f = forEachU xs (fun [@bs] x -> f x)
503
+
504
+ let rec iteri xs i f =
505
+ match xs with
506
+ [] -> ()
507
+ | a::l -> f i a [@bs] |. ignore ; iteri l (i + 1) f
508
+
509
+ let forEachWithIndexU l f = iteri l 0 f
510
+ let forEachWithIndex l f = forEachWithIndexU l (fun [@bs] i x -> f i x)
511
+
512
+ let rec reduceU l accu f =
513
+ match l with
514
+ [] -> accu
515
+ | a::l -> reduceU l (f accu a [@bs]) f
516
+
517
+ let reduce l accu f =
518
+ reduceU l accu (fun[@bs] acc x -> f acc x )
519
+
520
+ let rec reduceReverseUnsafeU l accu f =
521
+ match l with
522
+ [] -> accu
523
+ | a::l -> f (reduceReverseUnsafeU l accu f) a [@bs]
524
+
525
+ let reduceReverseU (type a ) (type b) (l : a list) (acc : b) f =
526
+ let len = length l in
527
+ if len < 1000 then
528
+ reduceReverseUnsafeU l acc f
529
+ else
530
+ A.reduceReverseU (toArray l) acc f
531
+
532
+ let reduceReverse l accu f =
533
+ reduceReverseU l accu (fun [@bs] a b -> f a b)
534
+
535
+ let rec reduceWithIndexAuxU l acc f i =
536
+ match l with
537
+ | [] -> acc
538
+ | x::xs -> reduceWithIndexAuxU xs ((f acc x i)[@bs]) f (i + 1)
539
+
540
+ let reduceWithIndexU l acc f = reduceWithIndexAuxU l acc f 0
541
+
542
+ let reduceWithIndex l acc f =
543
+ reduceWithIndexU l acc (fun [@bs] acc x i -> f acc x i)
544
+
545
+ let rec mapRevAux2 l1 l2 accu f =
546
+ match (l1, l2) with
547
+ | (a1::l1, a2::l2) -> mapRevAux2 l1 l2 (f a1 a2 [@bs]:: accu) f
548
+ | _, [] | [], _ -> accu
549
+
550
+ let mapReverse2U l1 l2 f =
551
+ mapRevAux2 l1 l2 [] f
552
+
553
+ let mapReverse2 l1 l2 f = mapReverse2U l1 l2 (fun [@bs] a b -> f a b)
554
+
555
+ let rec forEach2U l1 l2 f =
556
+ match (l1, l2) with
557
+ | (a1::l1, a2::l2) -> f a1 a2 [@bs] |. ignore ; forEach2U l1 l2 f
558
+ | [],_ | _, [] -> ()
559
+
560
+ let forEach2 l1 l2 f = forEach2U l1 l2 (fun [@bs] a b -> f a b)
561
+
562
+ let rec reduce2U l1 l2 accu f =
563
+ match (l1, l2) with
564
+ | (a1::l1, a2::l2) ->
565
+ reduce2U l1 l2 (f accu a1 a2 [@bs]) f
566
+ | [], _ | _, [] -> accu
567
+
568
+ let reduce2 l1 l2 acc f = reduce2U l1 l2 acc (fun[@bs] a b c -> f a b c )
569
+
570
+ let rec reduceReverse2UnsafeU l1 l2 accu f =
571
+ match (l1, l2) with
572
+ ([], []) -> accu
573
+ | (a1::l1, a2::l2) ->
574
+ f (reduceReverse2UnsafeU l1 l2 accu f) a1 a2 [@bs]
575
+ | _, [] | [], _ -> accu
576
+
577
+ let reduceReverse2U (type a ) (type b ) (type c)
578
+ (l1 : a list) (l2 : b list) (acc : c) f =
579
+ let len = length l1 in
580
+ if len < 1000 then
581
+ reduceReverse2UnsafeU l1 l2 acc f
582
+ else
583
+ A.reduceReverse2U (toArray l1) (toArray l2) acc f
584
+
585
+ let reduceReverse2 l1 l2 acc f =
586
+ reduceReverse2U l1 l2 acc (fun [@bs] a b c -> f a b c)
587
+
588
+ let rec everyU xs p =
589
+ match xs with
590
+ [] -> true
591
+ | a::l -> p a [@bs] && everyU l p
592
+
593
+ let every xs p = everyU xs (fun[@bs] x -> p x)
594
+
595
+ let rec someU xs p =
596
+ match xs with
597
+ [] -> false
598
+ | a::l -> p a [@bs] || someU l p
599
+
600
+ let some xs p = someU xs (fun[@bs] x -> p x)
601
+
602
+ let rec every2U l1 l2 p =
603
+ match (l1, l2) with
604
+ | _,[] | [], _ -> true
605
+ | (a1::l1, a2::l2) -> p a1 a2 [@bs] && every2U l1 l2 p
606
+
607
+ let every2 l1 l2 p = every2U l1 l2 (fun[@bs] a b -> p a b)
608
+
609
+ let rec cmpByLength l1 l2 =
610
+ match l1, l2 with
611
+ | [], [] -> 0
612
+ | _, [] -> 1
613
+ | [], _ -> -1
614
+ | _ :: l1s , _ :: l2s ->
615
+ cmpByLength l1s l2s
616
+
617
+ let rec cmpU l1 l2 p =
618
+ match (l1, l2) with
619
+ | [], [] -> 0
620
+ | _ , [] -> 1
621
+ | [], _ -> -1
622
+ | (a1::l1, a2::l2) ->
623
+ let c = p a1 a2 [@bs] in
624
+ if c = 0 then
625
+ cmpU l1 l2 p
626
+ else c
627
+
628
+ let cmp l1 l2 f = cmpU l1 l2 (fun [@bs] x y -> f x y)
629
+
630
+
631
+ let rec eqU l1 l2 p =
632
+ match (l1, l2) with
633
+ | [], [] -> true
634
+ | _ , []
635
+ | [], _ -> false
636
+ | (a1::l1, a2::l2) ->
637
+ if p a1 a2 [@bs] then
638
+ eqU l1 l2 p
639
+ else false
640
+ let eq l1 l2 f = eqU l1 l2 (fun [@bs] x y -> f x y)
641
+
642
+ let rec some2U l1 l2 p =
643
+ match (l1, l2) with
644
+ | [], _ | _, [] -> false
645
+ | (a1::l1, a2::l2) -> p a1 a2 [@bs] || some2U l1 l2 p
646
+
647
+ let some2 l1 l2 p = some2U l1 l2 (fun[@bs] a b -> p a b)
648
+
649
+ let rec hasU xs x eq =
650
+ match xs with
651
+ [] -> false
652
+ | a::l -> eq a x [@bs] || hasU l x eq
653
+
654
+ let has xs x eq = hasU xs x (fun [@bs] a b -> eq a b)
655
+
656
+
657
+ let rec getAssocU xs x eq =
658
+ match xs with
659
+ | [] -> None
660
+ | (a,b)::l ->
661
+ if eq a x [@bs] then Some b
662
+ else getAssocU l x eq
663
+
664
+ let getAssoc xs x eq = getAssocU xs x (fun[@bs] a b -> eq a b)
665
+
666
+
667
+ let rec hasAssocU xs x eq =
668
+ match xs with
669
+ | [] -> false
670
+ | (a, _) :: l -> eq a x [@bs] || hasAssocU l x eq
671
+
672
+ let hasAssoc xs x eq = hasAssocU xs x (fun[@bs] a b -> eq a b)
673
+
674
+
675
+
676
+ let removeAssocU xs x eq =
677
+ match xs with
678
+ | [] -> []
679
+ | (a, _ as pair) :: l ->
680
+ if eq a x [@bs] then l
681
+ else
682
+ let cell = mutableCell pair [] in
683
+ let removed = removeAssocAuxWithMap l x cell eq in
684
+ if removed then
685
+ cell
686
+ else xs
687
+
688
+ let removeAssoc xs x eq = removeAssocU xs x (fun [@bs] a b -> eq a b)
689
+
690
+ let setAssocU xs x k eq =
691
+ match xs with
692
+ | [] -> [x,k]
693
+ | (a, _ as pair) :: l ->
694
+ if eq a x [@bs] then (x,k)::l
695
+ else
696
+ let cell = mutableCell pair [] in
697
+ let replaced = setAssocAuxWithMap l x k cell eq in
698
+ if replaced then cell
699
+ else (x,k)::xs
700
+
701
+ let setAssoc xs x k eq = setAssocU xs x k (fun [@bs] a b -> eq a b)
702
+
703
+ let sortU xs cmp =
704
+ let arr = toArray xs in
705
+ Belt_SortArray.stableSortInPlaceByU arr cmp;
706
+ fromArray arr
707
+
708
+ let sort xs cmp = sortU xs (fun [@bs] x y -> cmp x y)
709
+
710
+ let rec getByU xs p =
711
+ match xs with
712
+ | [] -> None
713
+ | x :: l ->
714
+ if p x [@bs] then Some x
715
+ else getByU l p
716
+
717
+ let getBy xs p = getByU xs (fun[@bs] a -> p a)
718
+
719
+ let rec keepU xs p =
720
+ match xs with
721
+ | [] -> []
722
+ | h::t ->
723
+ if p h [@bs] then
724
+ begin
725
+ let cell = mutableCell h [] in
726
+ copyAuxWitFilter p t cell ;
727
+ cell
728
+ end
729
+ else
730
+ keepU t p
731
+
732
+ let keep xs p = keepU xs (fun[@bs] x -> p x)
733
+
734
+ let filter = keep
735
+
736
+ let keepWithIndexU xs p =
737
+ let rec auxKeepWithIndex xs p i =
738
+ match xs with
739
+ | [] -> []
740
+ | h::t ->
741
+ if p h i [@bs] then
742
+ begin
743
+ let cell = mutableCell h [] in
744
+ copyAuxWithFilterIndex p t cell (i + 1) ;
745
+ cell
746
+ end
747
+ else
748
+ auxKeepWithIndex t p (i + 1)
749
+ in auxKeepWithIndex xs p 0
750
+
751
+ let keepWithIndex xs p = keepWithIndexU xs (fun [@bs] x i -> p x i)
752
+
753
+ let filterWithIndex = keepWithIndex
754
+
755
+ let rec keepMapU xs p =
756
+ match xs with
757
+ | [] -> []
758
+ | h::t ->
759
+ match p h [@bs] with
760
+ | Some h ->
761
+ begin
762
+ let cell = mutableCell h [] in
763
+ copyAuxWitFilterMap p t cell ;
764
+ cell
765
+ end
766
+ | None ->
767
+ keepMapU t p
768
+
769
+ let keepMap xs p = keepMapU xs (fun [@bs] x -> p x)
770
+
771
+ let partitionU l p =
772
+ match l with
773
+ | [] -> [],[]
774
+ | h::t ->
775
+ let nextX = mutableCell h [] in
776
+ let nextY = mutableCell h [] in
777
+ let b = p h [@bs] in
778
+ partitionAux p t nextX nextY;
779
+ if b then
780
+ nextX, (match nextY with _ :: tail -> tail | [] -> assert false)
781
+ else
782
+ (match nextX with _ :: tail -> tail | [] -> assert false) , nextY
783
+
784
+ let partition l p = partitionU l (fun [@bs] x -> p x)
785
+
786
+ let unzip xs =
787
+ match xs with
788
+ | [] -> ([], [])
789
+ | (x,y)::l ->
790
+ let cellX = mutableCell x [] in
791
+ let cellY = mutableCell y [] in
792
+ splitAux l cellX cellY ;
793
+ cellX, cellY
794
+
795
+
796
+ let zip l1 l2 =
797
+ match (l1, l2) with
798
+ _, [] | [], _ -> []
799
+ | (a1::l1, a2::l2) ->
800
+ let cell = mutableCell (a1,a2) [] in
801
+ zipAux l1 l2 cell;
802
+ cell
803
+