@mojir/lits 2.2.2-alpha.6 → 2.2.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 (908) hide show
  1. package/README.md +1556 -107
  2. package/dist/cli/cli/src/cli.d.ts +1 -1
  3. package/dist/cli/cli/src/cliDocumentation/getCliType.d.ts +1 -1
  4. package/dist/cli/cli/src/colorizer.d.ts +36 -36
  5. package/dist/cli/cli/src/js-interop/Cli/Fs/index.d.ts +2 -0
  6. package/dist/cli/cli/src/js-interop/Cli/Proc/index.d.ts +3 -0
  7. package/dist/cli/cli/src/js-interop/Cli/index.d.ts +3 -0
  8. package/dist/cli/cli/src/js-interop/utils.d.ts +2 -0
  9. package/dist/cli/cli.js +30531 -12755
  10. package/dist/cli/reference/api.d.ts +53 -41
  11. package/dist/cli/reference/index.d.ts +150 -23
  12. package/dist/cli/src/AutoCompleter/AutoCompleter.d.ts +24 -0
  13. package/dist/cli/src/Lits/Cache.d.ts +1 -1
  14. package/dist/cli/src/Lits/Lits.d.ts +26 -22
  15. package/dist/cli/src/allModules.d.ts +2 -0
  16. package/dist/cli/src/builtin/bindingNode.d.ts +5 -0
  17. package/dist/cli/src/builtin/{normalExpressions/categories → core}/array.d.ts +1 -1
  18. package/dist/cli/src/builtin/{normalExpressions/categories → core}/bitwise.d.ts +1 -1
  19. package/dist/{src/builtin/normalExpressions/categories → cli/src/builtin/core}/collection.d.ts +1 -1
  20. package/dist/{src/builtin/normalExpressions/categories → cli/src/builtin/core}/functional.d.ts +1 -1
  21. package/dist/{src/builtin/normalExpressions/categories → cli/src/builtin/core}/math.d.ts +1 -1
  22. package/dist/cli/src/builtin/core/meta.d.ts +3 -0
  23. package/dist/cli/src/builtin/{normalExpressions/categories → core}/misc.d.ts +1 -1
  24. package/dist/{src/builtin/normalExpressions/categories → cli/src/builtin/core}/object.d.ts +1 -1
  25. package/dist/{src/builtin/normalExpressions/categories → cli/src/builtin/core}/predicates.d.ts +1 -1
  26. package/dist/{src/builtin/normalExpressions/categories → cli/src/builtin/core}/regexp.d.ts +1 -1
  27. package/dist/cli/src/builtin/core/sequence.d.ts +2 -0
  28. package/dist/cli/src/builtin/{normalExpressions/categories → core}/string.d.ts +1 -1
  29. package/dist/cli/src/builtin/core/vector.d.ts +2 -0
  30. package/dist/cli/src/builtin/index.d.ts +10 -34
  31. package/dist/cli/src/builtin/interface.d.ts +92 -24
  32. package/dist/cli/src/builtin/modules/assert/docs.d.ts +2 -0
  33. package/dist/cli/src/builtin/modules/assert/index.d.ts +2 -0
  34. package/dist/cli/src/builtin/modules/bitwise/index.d.ts +2 -0
  35. package/dist/cli/src/builtin/modules/collection/index.d.ts +2 -0
  36. package/dist/cli/src/builtin/modules/functional/index.d.ts +2 -0
  37. package/dist/cli/src/builtin/modules/grid/docs.d.ts +2 -0
  38. package/dist/cli/src/builtin/modules/grid/fromArray.d.ts +8 -0
  39. package/dist/cli/src/builtin/modules/grid/index.d.ts +2 -0
  40. package/dist/cli/src/builtin/modules/grid/transpose.d.ts +2 -0
  41. package/dist/cli/src/builtin/modules/interface.d.ts +11 -0
  42. package/dist/cli/src/builtin/modules/linear-algebra/docs.d.ts +2 -0
  43. package/dist/cli/src/builtin/modules/linear-algebra/helpers/calcFractionalRanks.d.ts +1 -0
  44. package/dist/cli/src/builtin/modules/linear-algebra/helpers/collinear.d.ts +2 -0
  45. package/dist/cli/src/builtin/modules/linear-algebra/helpers/corrleation.d.ts +8 -0
  46. package/dist/cli/src/builtin/modules/linear-algebra/helpers/covariance.d.ts +4 -0
  47. package/dist/cli/src/builtin/modules/linear-algebra/helpers/dot.d.ts +1 -0
  48. package/dist/cli/src/builtin/modules/linear-algebra/helpers/gaussJordanElimination.d.ts +7 -0
  49. package/dist/cli/src/builtin/modules/linear-algebra/helpers/getUnit.d.ts +2 -0
  50. package/dist/cli/src/builtin/modules/linear-algebra/helpers/isZeroVector.d.ts +1 -0
  51. package/dist/cli/src/builtin/modules/linear-algebra/helpers/kendallTau.d.ts +10 -0
  52. package/dist/cli/src/builtin/modules/linear-algebra/helpers/length.d.ts +1 -0
  53. package/dist/cli/src/builtin/modules/linear-algebra/helpers/pearsonCorr.d.ts +1 -0
  54. package/dist/cli/src/builtin/modules/linear-algebra/helpers/scale.d.ts +1 -0
  55. package/dist/cli/src/builtin/modules/linear-algebra/helpers/solve.d.ts +8 -0
  56. package/dist/cli/src/builtin/modules/linear-algebra/helpers/subtract.d.ts +1 -0
  57. package/dist/cli/src/builtin/modules/linear-algebra/index.d.ts +4 -0
  58. package/dist/cli/src/builtin/modules/math/index.d.ts +2 -0
  59. package/dist/cli/src/builtin/modules/matrix/docs.d.ts +2 -0
  60. package/dist/cli/src/builtin/modules/matrix/helpers/adjugate.d.ts +1 -0
  61. package/dist/cli/src/builtin/modules/matrix/helpers/band.d.ts +9 -0
  62. package/dist/cli/src/builtin/modules/matrix/helpers/cofactor.d.ts +1 -0
  63. package/dist/cli/src/builtin/modules/matrix/helpers/determinant.d.ts +6 -0
  64. package/dist/cli/src/builtin/modules/matrix/helpers/inverse.d.ts +6 -0
  65. package/dist/cli/src/builtin/modules/matrix/helpers/isBanded.d.ts +11 -0
  66. package/dist/cli/src/builtin/modules/matrix/helpers/isDiagonal.d.ts +10 -0
  67. package/dist/cli/src/builtin/modules/matrix/helpers/isIdentity.d.ts +1 -0
  68. package/dist/cli/src/builtin/modules/matrix/helpers/isOrthogonal.d.ts +1 -0
  69. package/dist/cli/src/builtin/modules/matrix/helpers/isSquare.d.ts +1 -0
  70. package/dist/cli/src/builtin/modules/matrix/helpers/isSymetric.d.ts +8 -0
  71. package/dist/cli/src/builtin/modules/matrix/helpers/isTriangular.d.ts +13 -0
  72. package/dist/cli/src/builtin/modules/matrix/helpers/matrixMultiply.d.ts +7 -0
  73. package/dist/cli/src/builtin/modules/matrix/helpers/minor.d.ts +1 -0
  74. package/dist/cli/src/builtin/modules/matrix/helpers/norm1.d.ts +1 -0
  75. package/dist/cli/src/builtin/modules/matrix/helpers/trace.d.ts +8 -0
  76. package/dist/cli/src/builtin/modules/matrix/index.d.ts +4 -0
  77. package/dist/cli/src/builtin/modules/number-theory/binomialCefficient.d.ts +1 -0
  78. package/dist/cli/src/builtin/modules/number-theory/combinations.d.ts +2 -0
  79. package/dist/cli/src/builtin/modules/number-theory/derangements.d.ts +2 -0
  80. package/dist/cli/src/builtin/modules/number-theory/divisors.d.ts +4 -0
  81. package/dist/cli/src/builtin/modules/number-theory/docs.d.ts +2 -0
  82. package/dist/cli/src/builtin/modules/number-theory/factorial.d.ts +3 -0
  83. package/dist/cli/src/builtin/modules/number-theory/index.d.ts +4 -0
  84. package/dist/cli/src/builtin/modules/number-theory/partitions.d.ts +2 -0
  85. package/dist/cli/src/builtin/modules/number-theory/permutations.d.ts +2 -0
  86. package/dist/cli/src/builtin/modules/number-theory/powerSet.d.ts +2 -0
  87. package/dist/cli/src/builtin/modules/number-theory/primeFactors.d.ts +11 -0
  88. package/dist/cli/src/builtin/modules/number-theory/sequences/abundant.d.ts +2 -0
  89. package/dist/cli/src/builtin/modules/number-theory/sequences/arithmetic.d.ts +2 -0
  90. package/dist/cli/src/builtin/modules/number-theory/sequences/bell.d.ts +1 -0
  91. package/dist/cli/src/builtin/modules/number-theory/sequences/bernoulli.d.ts +2 -0
  92. package/dist/cli/src/builtin/modules/number-theory/sequences/catalan.d.ts +1 -0
  93. package/dist/cli/src/builtin/modules/number-theory/sequences/collatz.d.ts +2 -0
  94. package/dist/cli/src/builtin/modules/number-theory/sequences/composite.d.ts +3 -0
  95. package/dist/cli/src/builtin/modules/number-theory/sequences/deficient.d.ts +2 -0
  96. package/dist/cli/src/builtin/modules/number-theory/sequences/factorial.d.ts +1 -0
  97. package/dist/cli/src/builtin/modules/number-theory/sequences/fibonacci.d.ts +1 -0
  98. package/dist/cli/src/builtin/modules/number-theory/sequences/geometric.d.ts +2 -0
  99. package/dist/cli/src/builtin/modules/number-theory/sequences/golomb.d.ts +2 -0
  100. package/dist/cli/src/builtin/modules/number-theory/sequences/happy.d.ts +2 -0
  101. package/dist/cli/src/builtin/modules/number-theory/sequences/index.d.ts +26 -0
  102. package/dist/cli/src/builtin/modules/number-theory/sequences/juggler.d.ts +2 -0
  103. package/dist/cli/src/builtin/modules/number-theory/sequences/lookAndSay.d.ts +2 -0
  104. package/dist/cli/src/builtin/modules/number-theory/sequences/lucas.d.ts +1 -0
  105. package/dist/cli/src/builtin/modules/number-theory/sequences/lucky.d.ts +2 -0
  106. package/dist/cli/src/builtin/modules/number-theory/sequences/mersenne.d.ts +1 -0
  107. package/dist/cli/src/builtin/modules/number-theory/sequences/padovan.d.ts +2 -0
  108. package/dist/cli/src/builtin/modules/number-theory/sequences/partition.d.ts +1 -0
  109. package/dist/cli/src/builtin/modules/number-theory/sequences/pell.d.ts +1 -0
  110. package/dist/cli/src/builtin/modules/number-theory/sequences/perfect.d.ts +1 -0
  111. package/dist/cli/src/builtin/modules/number-theory/sequences/perfectCube.d.ts +2 -0
  112. package/dist/cli/src/builtin/modules/number-theory/sequences/perfectPower.d.ts +10 -0
  113. package/dist/cli/src/builtin/modules/number-theory/sequences/perfectSquare.d.ts +2 -0
  114. package/dist/cli/src/builtin/modules/number-theory/sequences/poligonal.d.ts +2 -0
  115. package/dist/cli/src/builtin/modules/number-theory/sequences/prime.d.ts +3 -0
  116. package/dist/cli/src/builtin/modules/number-theory/sequences/recaman.d.ts +9 -0
  117. package/dist/cli/src/builtin/modules/number-theory/sequences/sylvester.d.ts +1 -0
  118. package/dist/cli/src/builtin/modules/number-theory/sequences/thueMorse.d.ts +2 -0
  119. package/dist/cli/src/builtin/modules/number-theory/sequences/tribonacci.d.ts +1 -0
  120. package/dist/cli/src/builtin/modules/random/docs.d.ts +2 -0
  121. package/dist/cli/src/builtin/modules/random/index.d.ts +2 -0
  122. package/dist/cli/src/builtin/modules/sequence/index.d.ts +2 -0
  123. package/dist/cli/src/builtin/modules/string/index.d.ts +2 -0
  124. package/dist/cli/src/builtin/modules/vector/bincount.d.ts +9 -0
  125. package/dist/cli/src/builtin/modules/vector/calcMad.d.ts +1 -0
  126. package/dist/cli/src/builtin/modules/vector/calcMean.d.ts +1 -0
  127. package/dist/cli/src/builtin/modules/vector/calcMedad.d.ts +1 -0
  128. package/dist/cli/src/builtin/modules/vector/calcMedian.d.ts +1 -0
  129. package/dist/cli/src/builtin/modules/vector/calcStdDev.d.ts +2 -0
  130. package/dist/cli/src/builtin/modules/vector/calcVariance.d.ts +2 -0
  131. package/dist/cli/src/builtin/modules/vector/docs.d.ts +2 -0
  132. package/dist/cli/src/builtin/modules/vector/entropy.d.ts +8 -0
  133. package/dist/cli/src/builtin/modules/vector/histogram.d.ts +9 -0
  134. package/dist/cli/src/builtin/modules/vector/index.d.ts +2 -0
  135. package/dist/cli/src/builtin/modules/vector/mode.d.ts +6 -0
  136. package/dist/cli/src/builtin/modules/vector/outliers.d.ts +7 -0
  137. package/dist/cli/src/builtin/modules/vector/percentile.d.ts +7 -0
  138. package/dist/cli/src/builtin/modules/vector/quartiles.d.ts +1 -0
  139. package/dist/cli/src/builtin/modules/vector/reductionFunctions/entropy.d.ts +2 -0
  140. package/dist/cli/src/builtin/modules/vector/reductionFunctions/giniCoefficient.d.ts +2 -0
  141. package/dist/cli/src/builtin/modules/vector/reductionFunctions/index.d.ts +13 -0
  142. package/dist/cli/src/builtin/modules/vector/reductionFunctions/iqr.d.ts +2 -0
  143. package/dist/cli/src/builtin/modules/vector/reductionFunctions/kurtosis.d.ts +5 -0
  144. package/dist/cli/src/builtin/modules/vector/reductionFunctions/mad.d.ts +2 -0
  145. package/dist/cli/src/builtin/modules/vector/reductionFunctions/mean.d.ts +4 -0
  146. package/dist/cli/src/builtin/modules/vector/reductionFunctions/medad.d.ts +2 -0
  147. package/dist/cli/src/builtin/modules/vector/reductionFunctions/median.d.ts +2 -0
  148. package/dist/cli/src/builtin/modules/vector/reductionFunctions/prod.d.ts +2 -0
  149. package/dist/cli/src/builtin/modules/vector/reductionFunctions/rms.d.ts +2 -0
  150. package/dist/cli/src/builtin/modules/vector/reductionFunctions/skewness.d.ts +3 -0
  151. package/dist/cli/src/builtin/modules/vector/reductionFunctions/span.d.ts +2 -0
  152. package/dist/cli/src/builtin/modules/vector/reductionFunctions/standardDeviation.d.ts +3 -0
  153. package/dist/cli/src/builtin/modules/vector/reductionFunctions/sum.d.ts +2 -0
  154. package/dist/cli/src/builtin/modules/vector/reductionFunctions/variance.d.ts +3 -0
  155. package/dist/cli/src/builtin/normalExpressions/index.d.ts +7 -1
  156. package/dist/cli/src/builtin/specialExpressionTypes.d.ts +23 -0
  157. package/dist/cli/src/builtin/specialExpressions/and.d.ts +3 -3
  158. package/dist/cli/src/builtin/specialExpressions/array.d.ts +6 -0
  159. package/dist/cli/src/builtin/specialExpressions/block.d.ts +6 -0
  160. package/dist/cli/src/builtin/specialExpressions/cond.d.ts +3 -3
  161. package/dist/cli/src/builtin/specialExpressions/def.d.ts +5 -4
  162. package/dist/cli/src/builtin/specialExpressions/defined.d.ts +5 -0
  163. package/dist/cli/src/builtin/specialExpressions/functions.d.ts +5 -17
  164. package/dist/cli/src/builtin/specialExpressions/if.d.ts +3 -3
  165. package/dist/cli/src/builtin/specialExpressions/let.d.ts +3 -7
  166. package/dist/cli/src/builtin/specialExpressions/loop.d.ts +3 -4
  167. package/dist/cli/src/builtin/specialExpressions/loops.d.ts +5 -14
  168. package/dist/cli/src/builtin/specialExpressions/object.d.ts +6 -0
  169. package/dist/cli/src/builtin/specialExpressions/or.d.ts +3 -3
  170. package/dist/cli/src/builtin/specialExpressions/qq.d.ts +3 -3
  171. package/dist/cli/src/builtin/specialExpressions/recur.d.ts +3 -3
  172. package/dist/cli/src/builtin/specialExpressions/switch.d.ts +6 -0
  173. package/dist/cli/src/builtin/specialExpressions/throw.d.ts +3 -3
  174. package/dist/cli/src/builtin/specialExpressions/try.d.ts +3 -5
  175. package/dist/cli/src/builtin/specialExpressions/unless.d.ts +6 -0
  176. package/dist/cli/src/builtin/utils.d.ts +3 -15
  177. package/dist/cli/src/cli.d.ts +1 -1
  178. package/dist/cli/src/cliDocumentation/getCliType.d.ts +1 -1
  179. package/dist/cli/src/colorizer.d.ts +36 -36
  180. package/dist/cli/src/constants/constants.d.ts +18 -44
  181. package/dist/cli/src/errors.d.ts +2 -5
  182. package/dist/cli/src/evaluator/ContextStack.d.ts +16 -11
  183. package/dist/cli/src/evaluator/functionExecutors.d.ts +4 -4
  184. package/dist/cli/src/evaluator/index.d.ts +2 -2
  185. package/dist/cli/src/evaluator/interface.d.ts +5 -5
  186. package/dist/cli/src/getUndefinedSymbols/index.d.ts +7 -0
  187. package/dist/cli/src/index.d.ts +9 -12
  188. package/dist/cli/src/initReferenceData.d.ts +1 -0
  189. package/dist/cli/src/interface.d.ts +1 -2
  190. package/dist/cli/src/js-interop/Cli/Fs/index.d.ts +2 -0
  191. package/dist/cli/src/js-interop/Cli/Proc/index.d.ts +3 -0
  192. package/dist/cli/src/js-interop/Cli/index.d.ts +3 -0
  193. package/dist/cli/src/js-interop/utils.d.ts +2 -0
  194. package/dist/cli/src/parser/Parser.d.ts +58 -0
  195. package/dist/cli/src/parser/types.d.ts +133 -0
  196. package/dist/cli/src/symbolPatterns.d.ts +2 -0
  197. package/dist/cli/src/tokenizer/minifyTokenStream.d.ts +4 -0
  198. package/dist/cli/src/tokenizer/operators.d.ts +12 -0
  199. package/dist/cli/src/tokenizer/reservedNames.d.ts +66 -0
  200. package/dist/cli/src/tokenizer/token.d.ts +86 -0
  201. package/dist/cli/src/tokenizer/tokenize.d.ts +8 -0
  202. package/dist/cli/src/tokenizer/tokenizers.d.ts +14 -19
  203. package/dist/cli/src/transformer/index.d.ts +2 -2
  204. package/dist/cli/src/typeGuards/annotatedArrays.d.ts +16 -0
  205. package/dist/cli/src/typeGuards/array.d.ts +1 -1
  206. package/dist/cli/src/typeGuards/astNode.d.ts +20 -17
  207. package/dist/cli/src/typeGuards/index.d.ts +1 -10
  208. package/dist/cli/src/typeGuards/lits.d.ts +5 -2
  209. package/dist/cli/src/typeGuards/litsFunction.d.ts +3 -3
  210. package/dist/cli/src/typeGuards/number.d.ts +1 -1
  211. package/dist/cli/src/typeGuards/string.d.ts +1 -1
  212. package/dist/cli/src/untokenizer/index.d.ts +1 -1
  213. package/dist/cli/src/utils/arity.d.ts +10 -0
  214. package/dist/cli/src/utils/debug/debugTools.d.ts +0 -2
  215. package/dist/cli/src/utils/debug/getCodeMarker.d.ts +2 -0
  216. package/dist/cli/src/utils/debug/getSourceCodeInfo.d.ts +2 -2
  217. package/dist/cli/src/utils/docString/generateDocString.d.ts +2 -0
  218. package/dist/cli/src/utils/getAssertionError.d.ts +1 -1
  219. package/dist/cli/src/utils/index.d.ts +9 -6
  220. package/dist/full.esm.js +2 -0
  221. package/dist/full.esm.js.map +1 -0
  222. package/dist/full.js +2 -0
  223. package/dist/full.js.map +1 -0
  224. package/dist/index.esm.js +1 -15635
  225. package/dist/index.esm.js.map +1 -1
  226. package/dist/index.js +1 -15663
  227. package/dist/index.js.map +1 -1
  228. package/dist/lits.iife.js +1 -15668
  229. package/dist/lits.iife.js.map +1 -1
  230. package/dist/modules/assert.esm.js +2 -0
  231. package/dist/modules/assert.esm.js.map +1 -0
  232. package/dist/modules/assert.js +2 -0
  233. package/dist/modules/assert.js.map +1 -0
  234. package/dist/modules/bitwise.esm.js +2 -0
  235. package/dist/modules/bitwise.esm.js.map +1 -0
  236. package/dist/modules/bitwise.js +2 -0
  237. package/dist/modules/bitwise.js.map +1 -0
  238. package/dist/modules/cli/src/cli.d.ts +2 -0
  239. package/dist/modules/cli/src/cliDocumentation/formatCliDescription.d.ts +3 -0
  240. package/dist/modules/cli/src/cliDocumentation/getCliArgumentInfo.d.ts +3 -0
  241. package/dist/modules/cli/src/cliDocumentation/getCliDocumentation.d.ts +2 -0
  242. package/dist/modules/cli/src/cliDocumentation/getCliFunctionExamples.d.ts +3 -0
  243. package/dist/modules/cli/src/cliDocumentation/getCliFunctionSignature.d.ts +3 -0
  244. package/dist/modules/cli/src/cliDocumentation/getCliTitle.d.ts +3 -0
  245. package/dist/modules/cli/src/cliDocumentation/getCliType.d.ts +3 -0
  246. package/dist/modules/cli/src/cliFormatterRules.d.ts +13 -0
  247. package/dist/modules/cli/src/colorizer.d.ts +939 -0
  248. package/dist/modules/cli/src/createReadlineInterface.d.ts +5 -0
  249. package/dist/modules/cli/src/js-interop/Cli/Fs/index.d.ts +2 -0
  250. package/dist/modules/cli/src/js-interop/Cli/Proc/index.d.ts +3 -0
  251. package/dist/modules/cli/src/js-interop/Cli/index.d.ts +3 -0
  252. package/dist/modules/cli/src/js-interop/utils.d.ts +2 -0
  253. package/dist/modules/collection.esm.js +2 -0
  254. package/dist/modules/collection.esm.js.map +1 -0
  255. package/dist/modules/collection.js +2 -0
  256. package/dist/modules/collection.js.map +1 -0
  257. package/dist/modules/common/createFormatter.d.ts +6 -0
  258. package/dist/modules/common/utils.d.ts +2 -0
  259. package/dist/modules/functional.esm.js +2 -0
  260. package/dist/modules/functional.esm.js.map +1 -0
  261. package/dist/modules/functional.js +2 -0
  262. package/dist/modules/functional.js.map +1 -0
  263. package/dist/modules/grid.esm.js +2 -0
  264. package/dist/modules/grid.esm.js.map +1 -0
  265. package/dist/modules/grid.js +2 -0
  266. package/dist/modules/grid.js.map +1 -0
  267. package/dist/modules/linear-algebra.esm.js +2 -0
  268. package/dist/modules/linear-algebra.esm.js.map +1 -0
  269. package/dist/modules/linear-algebra.js +2 -0
  270. package/dist/modules/linear-algebra.js.map +1 -0
  271. package/dist/modules/math.esm.js +2 -0
  272. package/dist/modules/math.esm.js.map +1 -0
  273. package/dist/modules/math.js +2 -0
  274. package/dist/modules/math.js.map +1 -0
  275. package/dist/modules/matrix.esm.js +2 -0
  276. package/dist/modules/matrix.esm.js.map +1 -0
  277. package/dist/modules/matrix.js +2 -0
  278. package/dist/modules/matrix.js.map +1 -0
  279. package/dist/modules/number-theory.esm.js +2 -0
  280. package/dist/modules/number-theory.esm.js.map +1 -0
  281. package/dist/modules/number-theory.js +2 -0
  282. package/dist/modules/number-theory.js.map +1 -0
  283. package/dist/modules/random.esm.js +2 -0
  284. package/dist/modules/random.esm.js.map +1 -0
  285. package/dist/modules/random.js +2 -0
  286. package/dist/modules/random.js.map +1 -0
  287. package/dist/modules/reference/api.d.ts +71 -0
  288. package/dist/modules/reference/datatype.d.ts +3 -0
  289. package/dist/modules/reference/index.d.ts +178 -0
  290. package/dist/modules/reference/shorthand.d.ts +3 -0
  291. package/dist/modules/sequence.esm.js +2 -0
  292. package/dist/modules/sequence.esm.js.map +1 -0
  293. package/dist/modules/sequence.js +2 -0
  294. package/dist/modules/sequence.js.map +1 -0
  295. package/dist/modules/src/AutoCompleter/AutoCompleter.d.ts +24 -0
  296. package/dist/modules/src/Lits/Cache.d.ts +16 -0
  297. package/dist/modules/src/Lits/Lits.d.ts +58 -0
  298. package/dist/modules/src/allModules.d.ts +2 -0
  299. package/dist/modules/src/builtin/bindingNode.d.ts +5 -0
  300. package/dist/{src/builtin/normalExpressions/categories → modules/src/builtin/core}/array.d.ts +1 -1
  301. package/dist/{src/builtin/normalExpressions/categories → modules/src/builtin/core}/bitwise.d.ts +1 -1
  302. package/dist/{cli/src/builtin/normalExpressions/categories → modules/src/builtin/core}/collection.d.ts +1 -1
  303. package/dist/{cli/src/builtin/normalExpressions/categories → modules/src/builtin/core}/functional.d.ts +1 -1
  304. package/dist/{cli/src/builtin/normalExpressions/categories → modules/src/builtin/core}/math.d.ts +1 -1
  305. package/dist/modules/src/builtin/core/meta.d.ts +3 -0
  306. package/dist/{src/builtin/normalExpressions/categories → modules/src/builtin/core}/misc.d.ts +1 -1
  307. package/dist/{cli/src/builtin/normalExpressions/categories → modules/src/builtin/core}/object.d.ts +1 -1
  308. package/dist/{cli/src/builtin/normalExpressions/categories → modules/src/builtin/core}/predicates.d.ts +1 -1
  309. package/dist/{cli/src/builtin/normalExpressions/categories → modules/src/builtin/core}/regexp.d.ts +1 -1
  310. package/dist/modules/src/builtin/core/sequence.d.ts +2 -0
  311. package/dist/{src/builtin/normalExpressions/categories → modules/src/builtin/core}/string.d.ts +1 -1
  312. package/dist/modules/src/builtin/core/vector.d.ts +2 -0
  313. package/dist/modules/src/builtin/index.d.ts +14 -0
  314. package/dist/modules/src/builtin/interface.d.ts +110 -0
  315. package/dist/modules/src/builtin/modules/assert/docs.d.ts +2 -0
  316. package/dist/modules/src/builtin/modules/assert/index.d.ts +2 -0
  317. package/dist/modules/src/builtin/modules/bitwise/index.d.ts +2 -0
  318. package/dist/modules/src/builtin/modules/collection/index.d.ts +2 -0
  319. package/dist/modules/src/builtin/modules/functional/index.d.ts +2 -0
  320. package/dist/modules/src/builtin/modules/grid/docs.d.ts +2 -0
  321. package/dist/modules/src/builtin/modules/grid/fromArray.d.ts +8 -0
  322. package/dist/modules/src/builtin/modules/grid/index.d.ts +2 -0
  323. package/dist/modules/src/builtin/modules/grid/transpose.d.ts +2 -0
  324. package/dist/modules/src/builtin/modules/interface.d.ts +11 -0
  325. package/dist/modules/src/builtin/modules/linear-algebra/docs.d.ts +2 -0
  326. package/dist/modules/src/builtin/modules/linear-algebra/helpers/calcFractionalRanks.d.ts +1 -0
  327. package/dist/modules/src/builtin/modules/linear-algebra/helpers/collinear.d.ts +2 -0
  328. package/dist/modules/src/builtin/modules/linear-algebra/helpers/corrleation.d.ts +8 -0
  329. package/dist/modules/src/builtin/modules/linear-algebra/helpers/covariance.d.ts +4 -0
  330. package/dist/modules/src/builtin/modules/linear-algebra/helpers/dot.d.ts +1 -0
  331. package/dist/modules/src/builtin/modules/linear-algebra/helpers/gaussJordanElimination.d.ts +7 -0
  332. package/dist/modules/src/builtin/modules/linear-algebra/helpers/getUnit.d.ts +2 -0
  333. package/dist/modules/src/builtin/modules/linear-algebra/helpers/isZeroVector.d.ts +1 -0
  334. package/dist/modules/src/builtin/modules/linear-algebra/helpers/kendallTau.d.ts +10 -0
  335. package/dist/modules/src/builtin/modules/linear-algebra/helpers/length.d.ts +1 -0
  336. package/dist/modules/src/builtin/modules/linear-algebra/helpers/pearsonCorr.d.ts +1 -0
  337. package/dist/modules/src/builtin/modules/linear-algebra/helpers/scale.d.ts +1 -0
  338. package/dist/modules/src/builtin/modules/linear-algebra/helpers/solve.d.ts +8 -0
  339. package/dist/modules/src/builtin/modules/linear-algebra/helpers/subtract.d.ts +1 -0
  340. package/dist/modules/src/builtin/modules/linear-algebra/index.d.ts +4 -0
  341. package/dist/modules/src/builtin/modules/math/index.d.ts +2 -0
  342. package/dist/modules/src/builtin/modules/matrix/docs.d.ts +2 -0
  343. package/dist/modules/src/builtin/modules/matrix/helpers/adjugate.d.ts +1 -0
  344. package/dist/modules/src/builtin/modules/matrix/helpers/band.d.ts +9 -0
  345. package/dist/modules/src/builtin/modules/matrix/helpers/cofactor.d.ts +1 -0
  346. package/dist/modules/src/builtin/modules/matrix/helpers/determinant.d.ts +6 -0
  347. package/dist/modules/src/builtin/modules/matrix/helpers/diagonal.d.ts +1 -0
  348. package/dist/modules/src/builtin/modules/matrix/helpers/inverse.d.ts +6 -0
  349. package/dist/modules/src/builtin/modules/matrix/helpers/isBanded.d.ts +11 -0
  350. package/dist/modules/src/builtin/modules/matrix/helpers/isDiagonal.d.ts +10 -0
  351. package/dist/modules/src/builtin/modules/matrix/helpers/isIdentity.d.ts +1 -0
  352. package/dist/modules/src/builtin/modules/matrix/helpers/isOrthogonal.d.ts +1 -0
  353. package/dist/modules/src/builtin/modules/matrix/helpers/isSquare.d.ts +1 -0
  354. package/dist/modules/src/builtin/modules/matrix/helpers/isSymetric.d.ts +8 -0
  355. package/dist/modules/src/builtin/modules/matrix/helpers/isTriangular.d.ts +13 -0
  356. package/dist/modules/src/builtin/modules/matrix/helpers/matrixMultiply.d.ts +7 -0
  357. package/dist/modules/src/builtin/modules/matrix/helpers/minor.d.ts +1 -0
  358. package/dist/modules/src/builtin/modules/matrix/helpers/norm1.d.ts +1 -0
  359. package/dist/modules/src/builtin/modules/matrix/helpers/trace.d.ts +8 -0
  360. package/dist/modules/src/builtin/modules/matrix/index.d.ts +4 -0
  361. package/dist/modules/src/builtin/modules/number-theory/binomialCefficient.d.ts +1 -0
  362. package/dist/modules/src/builtin/modules/number-theory/combinations.d.ts +2 -0
  363. package/dist/modules/src/builtin/modules/number-theory/derangements.d.ts +2 -0
  364. package/dist/modules/src/builtin/modules/number-theory/divisors.d.ts +4 -0
  365. package/dist/modules/src/builtin/modules/number-theory/docs.d.ts +2 -0
  366. package/dist/modules/src/builtin/modules/number-theory/factorial.d.ts +3 -0
  367. package/dist/modules/src/builtin/modules/number-theory/index.d.ts +4 -0
  368. package/dist/modules/src/builtin/modules/number-theory/partitions.d.ts +2 -0
  369. package/dist/modules/src/builtin/modules/number-theory/permutations.d.ts +2 -0
  370. package/dist/modules/src/builtin/modules/number-theory/powerSet.d.ts +2 -0
  371. package/dist/modules/src/builtin/modules/number-theory/primeFactors.d.ts +11 -0
  372. package/dist/modules/src/builtin/modules/number-theory/sequences/abundant.d.ts +2 -0
  373. package/dist/modules/src/builtin/modules/number-theory/sequences/arithmetic.d.ts +2 -0
  374. package/dist/modules/src/builtin/modules/number-theory/sequences/bell.d.ts +1 -0
  375. package/dist/modules/src/builtin/modules/number-theory/sequences/bernoulli.d.ts +2 -0
  376. package/dist/modules/src/builtin/modules/number-theory/sequences/catalan.d.ts +1 -0
  377. package/dist/modules/src/builtin/modules/number-theory/sequences/collatz.d.ts +2 -0
  378. package/dist/modules/src/builtin/modules/number-theory/sequences/composite.d.ts +3 -0
  379. package/dist/modules/src/builtin/modules/number-theory/sequences/deficient.d.ts +2 -0
  380. package/dist/modules/src/builtin/modules/number-theory/sequences/factorial.d.ts +1 -0
  381. package/dist/modules/src/builtin/modules/number-theory/sequences/fibonacci.d.ts +1 -0
  382. package/dist/modules/src/builtin/modules/number-theory/sequences/geometric.d.ts +2 -0
  383. package/dist/modules/src/builtin/modules/number-theory/sequences/golomb.d.ts +2 -0
  384. package/dist/modules/src/builtin/modules/number-theory/sequences/happy.d.ts +2 -0
  385. package/dist/modules/src/builtin/modules/number-theory/sequences/index.d.ts +26 -0
  386. package/dist/modules/src/builtin/modules/number-theory/sequences/juggler.d.ts +2 -0
  387. package/dist/modules/src/builtin/modules/number-theory/sequences/lookAndSay.d.ts +2 -0
  388. package/dist/modules/src/builtin/modules/number-theory/sequences/lucas.d.ts +1 -0
  389. package/dist/modules/src/builtin/modules/number-theory/sequences/lucky.d.ts +2 -0
  390. package/dist/modules/src/builtin/modules/number-theory/sequences/mersenne.d.ts +1 -0
  391. package/dist/modules/src/builtin/modules/number-theory/sequences/padovan.d.ts +2 -0
  392. package/dist/modules/src/builtin/modules/number-theory/sequences/partition.d.ts +1 -0
  393. package/dist/modules/src/builtin/modules/number-theory/sequences/pell.d.ts +1 -0
  394. package/dist/modules/src/builtin/modules/number-theory/sequences/perfect.d.ts +1 -0
  395. package/dist/modules/src/builtin/modules/number-theory/sequences/perfectCube.d.ts +2 -0
  396. package/dist/modules/src/builtin/modules/number-theory/sequences/perfectPower.d.ts +10 -0
  397. package/dist/modules/src/builtin/modules/number-theory/sequences/perfectSquare.d.ts +2 -0
  398. package/dist/modules/src/builtin/modules/number-theory/sequences/poligonal.d.ts +2 -0
  399. package/dist/modules/src/builtin/modules/number-theory/sequences/prime.d.ts +3 -0
  400. package/dist/modules/src/builtin/modules/number-theory/sequences/recaman.d.ts +9 -0
  401. package/dist/modules/src/builtin/modules/number-theory/sequences/sylvester.d.ts +1 -0
  402. package/dist/modules/src/builtin/modules/number-theory/sequences/thueMorse.d.ts +2 -0
  403. package/dist/modules/src/builtin/modules/number-theory/sequences/tribonacci.d.ts +1 -0
  404. package/dist/modules/src/builtin/modules/random/docs.d.ts +2 -0
  405. package/dist/modules/src/builtin/modules/random/index.d.ts +2 -0
  406. package/dist/modules/src/builtin/modules/sequence/index.d.ts +2 -0
  407. package/dist/modules/src/builtin/modules/string/index.d.ts +2 -0
  408. package/dist/modules/src/builtin/modules/vector/bincount.d.ts +9 -0
  409. package/dist/modules/src/builtin/modules/vector/calcMad.d.ts +1 -0
  410. package/dist/modules/src/builtin/modules/vector/calcMean.d.ts +1 -0
  411. package/dist/modules/src/builtin/modules/vector/calcMedad.d.ts +1 -0
  412. package/dist/modules/src/builtin/modules/vector/calcMedian.d.ts +1 -0
  413. package/dist/modules/src/builtin/modules/vector/calcStdDev.d.ts +2 -0
  414. package/dist/modules/src/builtin/modules/vector/calcVariance.d.ts +2 -0
  415. package/dist/modules/src/builtin/modules/vector/docs.d.ts +2 -0
  416. package/dist/modules/src/builtin/modules/vector/entropy.d.ts +8 -0
  417. package/dist/modules/src/builtin/modules/vector/histogram.d.ts +9 -0
  418. package/dist/modules/src/builtin/modules/vector/index.d.ts +2 -0
  419. package/dist/modules/src/builtin/modules/vector/mode.d.ts +6 -0
  420. package/dist/modules/src/builtin/modules/vector/outliers.d.ts +7 -0
  421. package/dist/modules/src/builtin/modules/vector/percentile.d.ts +7 -0
  422. package/dist/modules/src/builtin/modules/vector/quartiles.d.ts +1 -0
  423. package/dist/modules/src/builtin/modules/vector/reductionFunctions/entropy.d.ts +2 -0
  424. package/dist/modules/src/builtin/modules/vector/reductionFunctions/giniCoefficient.d.ts +2 -0
  425. package/dist/modules/src/builtin/modules/vector/reductionFunctions/index.d.ts +13 -0
  426. package/dist/modules/src/builtin/modules/vector/reductionFunctions/iqr.d.ts +2 -0
  427. package/dist/modules/src/builtin/modules/vector/reductionFunctions/kurtosis.d.ts +5 -0
  428. package/dist/modules/src/builtin/modules/vector/reductionFunctions/mad.d.ts +2 -0
  429. package/dist/modules/src/builtin/modules/vector/reductionFunctions/mean.d.ts +4 -0
  430. package/dist/modules/src/builtin/modules/vector/reductionFunctions/medad.d.ts +2 -0
  431. package/dist/modules/src/builtin/modules/vector/reductionFunctions/median.d.ts +2 -0
  432. package/dist/modules/src/builtin/modules/vector/reductionFunctions/prod.d.ts +2 -0
  433. package/dist/modules/src/builtin/modules/vector/reductionFunctions/rms.d.ts +2 -0
  434. package/dist/modules/src/builtin/modules/vector/reductionFunctions/skewness.d.ts +3 -0
  435. package/dist/modules/src/builtin/modules/vector/reductionFunctions/span.d.ts +2 -0
  436. package/dist/modules/src/builtin/modules/vector/reductionFunctions/standardDeviation.d.ts +3 -0
  437. package/dist/modules/src/builtin/modules/vector/reductionFunctions/sum.d.ts +2 -0
  438. package/dist/modules/src/builtin/modules/vector/reductionFunctions/variance.d.ts +3 -0
  439. package/dist/modules/src/builtin/normalExpressions/index.d.ts +8 -0
  440. package/dist/modules/src/builtin/specialExpressionTypes.d.ts +23 -0
  441. package/dist/modules/src/builtin/specialExpressions/and.d.ts +6 -0
  442. package/dist/modules/src/builtin/specialExpressions/array.d.ts +6 -0
  443. package/dist/modules/src/builtin/specialExpressions/block.d.ts +6 -0
  444. package/dist/modules/src/builtin/specialExpressions/cond.d.ts +6 -0
  445. package/dist/modules/src/builtin/specialExpressions/def.d.ts +6 -0
  446. package/dist/modules/src/builtin/specialExpressions/defined.d.ts +5 -0
  447. package/dist/modules/src/builtin/specialExpressions/functions.d.ts +6 -0
  448. package/dist/modules/src/builtin/specialExpressions/if.d.ts +6 -0
  449. package/dist/modules/src/builtin/specialExpressions/let.d.ts +6 -0
  450. package/dist/modules/src/builtin/specialExpressions/loop.d.ts +6 -0
  451. package/dist/modules/src/builtin/specialExpressions/loops.d.ts +9 -0
  452. package/dist/modules/src/builtin/specialExpressions/object.d.ts +6 -0
  453. package/dist/modules/src/builtin/specialExpressions/or.d.ts +6 -0
  454. package/dist/modules/src/builtin/specialExpressions/qq.d.ts +6 -0
  455. package/dist/modules/src/builtin/specialExpressions/recur.d.ts +5 -0
  456. package/dist/modules/src/builtin/specialExpressions/switch.d.ts +6 -0
  457. package/dist/modules/src/builtin/specialExpressions/throw.d.ts +5 -0
  458. package/dist/modules/src/builtin/specialExpressions/try.d.ts +6 -0
  459. package/dist/modules/src/builtin/specialExpressions/unless.d.ts +6 -0
  460. package/dist/modules/src/builtin/utils.d.ts +6 -0
  461. package/dist/modules/src/constants/constants.d.ts +19 -0
  462. package/dist/modules/src/errors.d.ts +24 -0
  463. package/dist/modules/src/evaluator/ContextStack.d.ts +29 -0
  464. package/dist/modules/src/evaluator/functionExecutors.d.ts +11 -0
  465. package/dist/modules/src/evaluator/index.d.ts +5 -0
  466. package/dist/modules/src/evaluator/interface.d.ts +12 -0
  467. package/dist/modules/src/full.d.ts +17 -0
  468. package/dist/modules/src/getUndefinedSymbols/index.d.ts +7 -0
  469. package/dist/modules/src/index.d.ts +14 -0
  470. package/dist/modules/src/initReferenceData.d.ts +1 -0
  471. package/dist/modules/src/interface.d.ts +7 -0
  472. package/dist/modules/src/modules/assert.d.ts +2 -0
  473. package/dist/modules/src/modules/bitwise.d.ts +2 -0
  474. package/dist/modules/src/modules/collection.d.ts +2 -0
  475. package/dist/modules/src/modules/functional.d.ts +2 -0
  476. package/dist/modules/src/modules/grid.d.ts +2 -0
  477. package/dist/modules/src/modules/linear-algebra.d.ts +2 -0
  478. package/dist/modules/src/modules/math.d.ts +2 -0
  479. package/dist/modules/src/modules/matrix.d.ts +2 -0
  480. package/dist/modules/src/modules/number-theory.d.ts +2 -0
  481. package/dist/modules/src/modules/random.d.ts +2 -0
  482. package/dist/modules/src/modules/sequence.d.ts +2 -0
  483. package/dist/modules/src/modules/string.d.ts +2 -0
  484. package/dist/modules/src/modules/vector.d.ts +2 -0
  485. package/dist/modules/src/parser/Parser.d.ts +58 -0
  486. package/dist/modules/src/parser/types.d.ts +133 -0
  487. package/dist/modules/src/symbolPatterns.d.ts +2 -0
  488. package/dist/modules/src/testFramework/index.d.ts +14 -0
  489. package/dist/modules/src/tokenizer/minifyTokenStream.d.ts +4 -0
  490. package/dist/modules/src/tokenizer/operators.d.ts +12 -0
  491. package/dist/modules/src/tokenizer/reservedNames.d.ts +66 -0
  492. package/dist/modules/src/tokenizer/token.d.ts +86 -0
  493. package/dist/modules/src/tokenizer/tokenize.d.ts +8 -0
  494. package/dist/modules/src/tokenizer/tokenizers.d.ts +14 -0
  495. package/dist/modules/src/transformer/index.d.ts +2 -0
  496. package/dist/modules/src/typeGuards/annotatedArrays.d.ts +16 -0
  497. package/dist/modules/src/typeGuards/array.d.ts +9 -0
  498. package/dist/modules/src/typeGuards/astNode.d.ts +20 -0
  499. package/dist/modules/src/typeGuards/index.d.ts +8 -0
  500. package/dist/modules/src/typeGuards/lits.d.ts +24 -0
  501. package/dist/modules/src/typeGuards/litsFunction.d.ts +12 -0
  502. package/dist/modules/src/typeGuards/number.d.ts +66 -0
  503. package/dist/modules/src/typeGuards/string.d.ts +15 -0
  504. package/dist/modules/src/untokenizer/index.d.ts +2 -0
  505. package/dist/modules/src/utils/arity.d.ts +10 -0
  506. package/dist/modules/src/utils/debug/debugTools.d.ts +1 -0
  507. package/dist/modules/src/utils/debug/getCodeMarker.d.ts +2 -0
  508. package/dist/modules/src/utils/debug/getSourceCodeInfo.d.ts +2 -0
  509. package/dist/modules/src/utils/docString/generateDocString.d.ts +2 -0
  510. package/dist/modules/src/utils/getAssertionError.d.ts +3 -0
  511. package/dist/modules/src/utils/index.d.ts +14 -0
  512. package/dist/modules/src/utils/symbols.d.ts +2 -0
  513. package/dist/modules/string.esm.js +2 -0
  514. package/dist/modules/string.esm.js.map +1 -0
  515. package/dist/modules/string.js +2 -0
  516. package/dist/modules/string.js.map +1 -0
  517. package/dist/modules/vector.esm.js +2 -0
  518. package/dist/modules/vector.esm.js.map +1 -0
  519. package/dist/modules/vector.js +2 -0
  520. package/dist/modules/vector.js.map +1 -0
  521. package/dist/reference/api.d.ts +53 -41
  522. package/dist/reference/index.d.ts +150 -23
  523. package/dist/src/AutoCompleter/AutoCompleter.d.ts +24 -0
  524. package/dist/src/Lits/Cache.d.ts +1 -1
  525. package/dist/src/Lits/Lits.d.ts +26 -22
  526. package/dist/src/allModules.d.ts +2 -0
  527. package/dist/src/builtin/bindingNode.d.ts +5 -0
  528. package/dist/src/builtin/core/array.d.ts +2 -0
  529. package/dist/src/builtin/core/bitwise.d.ts +2 -0
  530. package/dist/src/builtin/core/collection.d.ts +2 -0
  531. package/dist/src/builtin/core/functional.d.ts +2 -0
  532. package/dist/src/builtin/core/math.d.ts +2 -0
  533. package/dist/src/builtin/core/meta.d.ts +3 -0
  534. package/dist/src/builtin/core/misc.d.ts +2 -0
  535. package/dist/src/builtin/core/object.d.ts +2 -0
  536. package/dist/src/builtin/core/predicates.d.ts +2 -0
  537. package/dist/src/builtin/core/regexp.d.ts +2 -0
  538. package/dist/src/builtin/core/sequence.d.ts +2 -0
  539. package/dist/src/builtin/core/string.d.ts +2 -0
  540. package/dist/src/builtin/core/vector.d.ts +2 -0
  541. package/dist/src/builtin/index.d.ts +10 -34
  542. package/dist/src/builtin/interface.d.ts +92 -24
  543. package/dist/src/builtin/modules/assert/docs.d.ts +2 -0
  544. package/dist/src/builtin/modules/assert/index.d.ts +2 -0
  545. package/dist/src/builtin/modules/bitwise/index.d.ts +2 -0
  546. package/dist/src/builtin/modules/collection/index.d.ts +2 -0
  547. package/dist/src/builtin/modules/functional/index.d.ts +2 -0
  548. package/dist/src/builtin/modules/grid/docs.d.ts +2 -0
  549. package/dist/src/builtin/modules/grid/fromArray.d.ts +8 -0
  550. package/dist/src/builtin/modules/grid/index.d.ts +2 -0
  551. package/dist/src/builtin/modules/grid/transpose.d.ts +2 -0
  552. package/dist/src/builtin/modules/interface.d.ts +11 -0
  553. package/dist/src/builtin/modules/linear-algebra/docs.d.ts +2 -0
  554. package/dist/src/builtin/modules/linear-algebra/helpers/calcFractionalRanks.d.ts +1 -0
  555. package/dist/src/builtin/modules/linear-algebra/helpers/collinear.d.ts +2 -0
  556. package/dist/src/builtin/modules/linear-algebra/helpers/corrleation.d.ts +8 -0
  557. package/dist/src/builtin/modules/linear-algebra/helpers/covariance.d.ts +4 -0
  558. package/dist/src/builtin/modules/linear-algebra/helpers/dot.d.ts +1 -0
  559. package/dist/src/builtin/modules/linear-algebra/helpers/gaussJordanElimination.d.ts +7 -0
  560. package/dist/src/builtin/modules/linear-algebra/helpers/getUnit.d.ts +2 -0
  561. package/dist/src/builtin/modules/linear-algebra/helpers/isZeroVector.d.ts +1 -0
  562. package/dist/src/builtin/modules/linear-algebra/helpers/kendallTau.d.ts +10 -0
  563. package/dist/src/builtin/modules/linear-algebra/helpers/length.d.ts +1 -0
  564. package/dist/src/builtin/modules/linear-algebra/helpers/pearsonCorr.d.ts +1 -0
  565. package/dist/src/builtin/modules/linear-algebra/helpers/scale.d.ts +1 -0
  566. package/dist/src/builtin/modules/linear-algebra/helpers/solve.d.ts +8 -0
  567. package/dist/src/builtin/modules/linear-algebra/helpers/subtract.d.ts +1 -0
  568. package/dist/src/builtin/modules/linear-algebra/index.d.ts +4 -0
  569. package/dist/src/builtin/modules/math/index.d.ts +2 -0
  570. package/dist/src/builtin/modules/matrix/docs.d.ts +2 -0
  571. package/dist/src/builtin/modules/matrix/helpers/adjugate.d.ts +1 -0
  572. package/dist/src/builtin/modules/matrix/helpers/band.d.ts +9 -0
  573. package/dist/src/builtin/modules/matrix/helpers/cofactor.d.ts +1 -0
  574. package/dist/src/builtin/modules/matrix/helpers/determinant.d.ts +6 -0
  575. package/dist/src/builtin/modules/matrix/helpers/diagonal.d.ts +1 -0
  576. package/dist/src/builtin/modules/matrix/helpers/inverse.d.ts +6 -0
  577. package/dist/src/builtin/modules/matrix/helpers/isBanded.d.ts +11 -0
  578. package/dist/src/builtin/modules/matrix/helpers/isDiagonal.d.ts +10 -0
  579. package/dist/src/builtin/modules/matrix/helpers/isIdentity.d.ts +1 -0
  580. package/dist/src/builtin/modules/matrix/helpers/isOrthogonal.d.ts +1 -0
  581. package/dist/src/builtin/modules/matrix/helpers/isSquare.d.ts +1 -0
  582. package/dist/src/builtin/modules/matrix/helpers/isSymetric.d.ts +8 -0
  583. package/dist/src/builtin/modules/matrix/helpers/isTriangular.d.ts +13 -0
  584. package/dist/src/builtin/modules/matrix/helpers/matrixMultiply.d.ts +7 -0
  585. package/dist/src/builtin/modules/matrix/helpers/minor.d.ts +1 -0
  586. package/dist/src/builtin/modules/matrix/helpers/norm1.d.ts +1 -0
  587. package/dist/src/builtin/modules/matrix/helpers/trace.d.ts +8 -0
  588. package/dist/src/builtin/modules/matrix/index.d.ts +4 -0
  589. package/dist/src/builtin/modules/number-theory/binomialCefficient.d.ts +1 -0
  590. package/dist/src/builtin/modules/number-theory/combinations.d.ts +2 -0
  591. package/dist/src/builtin/modules/number-theory/derangements.d.ts +2 -0
  592. package/dist/src/builtin/modules/number-theory/divisors.d.ts +4 -0
  593. package/dist/src/builtin/modules/number-theory/docs.d.ts +2 -0
  594. package/dist/src/builtin/modules/number-theory/factorial.d.ts +3 -0
  595. package/dist/src/builtin/modules/number-theory/index.d.ts +4 -0
  596. package/dist/src/builtin/modules/number-theory/partitions.d.ts +2 -0
  597. package/dist/src/builtin/modules/number-theory/permutations.d.ts +2 -0
  598. package/dist/src/builtin/modules/number-theory/powerSet.d.ts +2 -0
  599. package/dist/src/builtin/modules/number-theory/primeFactors.d.ts +11 -0
  600. package/dist/src/builtin/modules/number-theory/sequences/abundant.d.ts +2 -0
  601. package/dist/src/builtin/modules/number-theory/sequences/arithmetic.d.ts +2 -0
  602. package/dist/src/builtin/modules/number-theory/sequences/bell.d.ts +1 -0
  603. package/dist/src/builtin/modules/number-theory/sequences/bernoulli.d.ts +2 -0
  604. package/dist/src/builtin/modules/number-theory/sequences/catalan.d.ts +1 -0
  605. package/dist/src/builtin/modules/number-theory/sequences/collatz.d.ts +2 -0
  606. package/dist/src/builtin/modules/number-theory/sequences/composite.d.ts +3 -0
  607. package/dist/src/builtin/modules/number-theory/sequences/deficient.d.ts +2 -0
  608. package/dist/src/builtin/modules/number-theory/sequences/factorial.d.ts +1 -0
  609. package/dist/src/builtin/modules/number-theory/sequences/fibonacci.d.ts +1 -0
  610. package/dist/src/builtin/modules/number-theory/sequences/geometric.d.ts +2 -0
  611. package/dist/src/builtin/modules/number-theory/sequences/golomb.d.ts +2 -0
  612. package/dist/src/builtin/modules/number-theory/sequences/happy.d.ts +2 -0
  613. package/dist/src/builtin/modules/number-theory/sequences/index.d.ts +26 -0
  614. package/dist/src/builtin/modules/number-theory/sequences/juggler.d.ts +2 -0
  615. package/dist/src/builtin/modules/number-theory/sequences/lookAndSay.d.ts +2 -0
  616. package/dist/src/builtin/modules/number-theory/sequences/lucas.d.ts +1 -0
  617. package/dist/src/builtin/modules/number-theory/sequences/lucky.d.ts +2 -0
  618. package/dist/src/builtin/modules/number-theory/sequences/mersenne.d.ts +1 -0
  619. package/dist/src/builtin/modules/number-theory/sequences/padovan.d.ts +2 -0
  620. package/dist/src/builtin/modules/number-theory/sequences/partition.d.ts +1 -0
  621. package/dist/src/builtin/modules/number-theory/sequences/pell.d.ts +1 -0
  622. package/dist/src/builtin/modules/number-theory/sequences/perfect.d.ts +1 -0
  623. package/dist/src/builtin/modules/number-theory/sequences/perfectCube.d.ts +2 -0
  624. package/dist/src/builtin/modules/number-theory/sequences/perfectPower.d.ts +10 -0
  625. package/dist/src/builtin/modules/number-theory/sequences/perfectSquare.d.ts +2 -0
  626. package/dist/src/builtin/modules/number-theory/sequences/poligonal.d.ts +2 -0
  627. package/dist/src/builtin/modules/number-theory/sequences/prime.d.ts +3 -0
  628. package/dist/src/builtin/modules/number-theory/sequences/recaman.d.ts +9 -0
  629. package/dist/src/builtin/modules/number-theory/sequences/sylvester.d.ts +1 -0
  630. package/dist/src/builtin/modules/number-theory/sequences/thueMorse.d.ts +2 -0
  631. package/dist/src/builtin/modules/number-theory/sequences/tribonacci.d.ts +1 -0
  632. package/dist/src/builtin/modules/random/docs.d.ts +2 -0
  633. package/dist/src/builtin/modules/random/index.d.ts +2 -0
  634. package/dist/src/builtin/modules/sequence/index.d.ts +2 -0
  635. package/dist/src/builtin/modules/string/index.d.ts +2 -0
  636. package/dist/src/builtin/modules/vector/bincount.d.ts +9 -0
  637. package/dist/src/builtin/modules/vector/calcMad.d.ts +1 -0
  638. package/dist/src/builtin/modules/vector/calcMean.d.ts +1 -0
  639. package/dist/src/builtin/modules/vector/calcMedad.d.ts +1 -0
  640. package/dist/src/builtin/modules/vector/calcMedian.d.ts +1 -0
  641. package/dist/src/builtin/modules/vector/calcStdDev.d.ts +2 -0
  642. package/dist/src/builtin/modules/vector/calcVariance.d.ts +2 -0
  643. package/dist/src/builtin/modules/vector/docs.d.ts +2 -0
  644. package/dist/src/builtin/modules/vector/entropy.d.ts +8 -0
  645. package/dist/src/builtin/modules/vector/histogram.d.ts +9 -0
  646. package/dist/src/builtin/modules/vector/index.d.ts +2 -0
  647. package/dist/src/builtin/modules/vector/mode.d.ts +6 -0
  648. package/dist/src/builtin/modules/vector/outliers.d.ts +7 -0
  649. package/dist/src/builtin/modules/vector/percentile.d.ts +7 -0
  650. package/dist/src/builtin/modules/vector/quartiles.d.ts +1 -0
  651. package/dist/src/builtin/modules/vector/reductionFunctions/entropy.d.ts +2 -0
  652. package/dist/src/builtin/modules/vector/reductionFunctions/giniCoefficient.d.ts +2 -0
  653. package/dist/src/builtin/modules/vector/reductionFunctions/index.d.ts +13 -0
  654. package/dist/src/builtin/modules/vector/reductionFunctions/iqr.d.ts +2 -0
  655. package/dist/src/builtin/modules/vector/reductionFunctions/kurtosis.d.ts +5 -0
  656. package/dist/src/builtin/modules/vector/reductionFunctions/mad.d.ts +2 -0
  657. package/dist/src/builtin/modules/vector/reductionFunctions/mean.d.ts +4 -0
  658. package/dist/src/builtin/modules/vector/reductionFunctions/medad.d.ts +2 -0
  659. package/dist/src/builtin/modules/vector/reductionFunctions/median.d.ts +2 -0
  660. package/dist/src/builtin/modules/vector/reductionFunctions/prod.d.ts +2 -0
  661. package/dist/src/builtin/modules/vector/reductionFunctions/rms.d.ts +2 -0
  662. package/dist/src/builtin/modules/vector/reductionFunctions/skewness.d.ts +3 -0
  663. package/dist/src/builtin/modules/vector/reductionFunctions/span.d.ts +2 -0
  664. package/dist/src/builtin/modules/vector/reductionFunctions/standardDeviation.d.ts +3 -0
  665. package/dist/src/builtin/modules/vector/reductionFunctions/sum.d.ts +2 -0
  666. package/dist/src/builtin/modules/vector/reductionFunctions/variance.d.ts +3 -0
  667. package/dist/src/builtin/normalExpressions/index.d.ts +7 -1
  668. package/dist/src/builtin/specialExpressionTypes.d.ts +23 -0
  669. package/dist/src/builtin/specialExpressions/and.d.ts +3 -3
  670. package/dist/src/builtin/specialExpressions/array.d.ts +6 -0
  671. package/dist/src/builtin/specialExpressions/block.d.ts +6 -0
  672. package/dist/src/builtin/specialExpressions/cond.d.ts +3 -3
  673. package/dist/src/builtin/specialExpressions/def.d.ts +5 -4
  674. package/dist/src/builtin/specialExpressions/defined.d.ts +5 -0
  675. package/dist/src/builtin/specialExpressions/functions.d.ts +5 -17
  676. package/dist/src/builtin/specialExpressions/if.d.ts +3 -3
  677. package/dist/src/builtin/specialExpressions/let.d.ts +3 -7
  678. package/dist/src/builtin/specialExpressions/loop.d.ts +3 -4
  679. package/dist/src/builtin/specialExpressions/loops.d.ts +5 -14
  680. package/dist/src/builtin/specialExpressions/object.d.ts +6 -0
  681. package/dist/src/builtin/specialExpressions/or.d.ts +3 -3
  682. package/dist/src/builtin/specialExpressions/qq.d.ts +3 -3
  683. package/dist/src/builtin/specialExpressions/recur.d.ts +3 -3
  684. package/dist/src/builtin/specialExpressions/switch.d.ts +6 -0
  685. package/dist/src/builtin/specialExpressions/throw.d.ts +3 -3
  686. package/dist/src/builtin/specialExpressions/try.d.ts +3 -5
  687. package/dist/src/builtin/specialExpressions/unless.d.ts +6 -0
  688. package/dist/src/builtin/utils.d.ts +3 -15
  689. package/dist/src/constants/constants.d.ts +18 -44
  690. package/dist/src/errors.d.ts +2 -5
  691. package/dist/src/evaluator/ContextStack.d.ts +16 -11
  692. package/dist/src/evaluator/functionExecutors.d.ts +4 -4
  693. package/dist/src/evaluator/index.d.ts +2 -2
  694. package/dist/src/evaluator/interface.d.ts +5 -5
  695. package/dist/src/full.d.ts +17 -0
  696. package/dist/src/getUndefinedSymbols/index.d.ts +7 -0
  697. package/dist/src/index.d.ts +9 -12
  698. package/dist/src/initReferenceData.d.ts +1 -0
  699. package/dist/src/interface.d.ts +1 -2
  700. package/dist/src/modules/assert.d.ts +2 -0
  701. package/dist/src/modules/bitwise.d.ts +2 -0
  702. package/dist/src/modules/collection.d.ts +2 -0
  703. package/dist/src/modules/functional.d.ts +2 -0
  704. package/dist/src/modules/grid.d.ts +2 -0
  705. package/dist/src/modules/linear-algebra.d.ts +2 -0
  706. package/dist/src/modules/math.d.ts +2 -0
  707. package/dist/src/modules/matrix.d.ts +2 -0
  708. package/dist/src/modules/number-theory.d.ts +2 -0
  709. package/dist/src/modules/random.d.ts +2 -0
  710. package/dist/src/modules/sequence.d.ts +2 -0
  711. package/dist/src/modules/string.d.ts +2 -0
  712. package/dist/src/modules/vector.d.ts +2 -0
  713. package/dist/src/parser/Parser.d.ts +58 -0
  714. package/dist/src/parser/types.d.ts +133 -0
  715. package/dist/src/symbolPatterns.d.ts +2 -0
  716. package/dist/src/tokenizer/minifyTokenStream.d.ts +4 -0
  717. package/dist/src/tokenizer/operators.d.ts +12 -0
  718. package/dist/src/tokenizer/reservedNames.d.ts +66 -0
  719. package/dist/src/tokenizer/token.d.ts +86 -0
  720. package/dist/src/tokenizer/tokenize.d.ts +8 -0
  721. package/dist/src/tokenizer/tokenizers.d.ts +14 -19
  722. package/dist/src/transformer/index.d.ts +2 -2
  723. package/dist/src/typeGuards/annotatedArrays.d.ts +16 -0
  724. package/dist/src/typeGuards/array.d.ts +1 -1
  725. package/dist/src/typeGuards/astNode.d.ts +20 -17
  726. package/dist/src/typeGuards/index.d.ts +1 -10
  727. package/dist/src/typeGuards/lits.d.ts +5 -2
  728. package/dist/src/typeGuards/litsFunction.d.ts +3 -3
  729. package/dist/src/typeGuards/number.d.ts +1 -1
  730. package/dist/src/typeGuards/string.d.ts +1 -1
  731. package/dist/src/untokenizer/index.d.ts +1 -1
  732. package/dist/src/utils/arity.d.ts +10 -0
  733. package/dist/src/utils/debug/debugTools.d.ts +0 -2
  734. package/dist/src/utils/debug/getCodeMarker.d.ts +2 -0
  735. package/dist/src/utils/debug/getSourceCodeInfo.d.ts +2 -2
  736. package/dist/src/utils/docString/generateDocString.d.ts +2 -0
  737. package/dist/src/utils/getAssertionError.d.ts +1 -1
  738. package/dist/src/utils/index.d.ts +9 -6
  739. package/dist/testFramework.esm.js +1 -8913
  740. package/dist/testFramework.esm.js.map +1 -1
  741. package/dist/testFramework.js +1 -8916
  742. package/dist/testFramework.js.map +1 -1
  743. package/package.json +88 -8
  744. package/dist/cli/common/clojureDocs.d.ts +0 -1
  745. package/dist/cli/reference/categories/array.d.ts +0 -3
  746. package/dist/cli/reference/categories/assert.d.ts +0 -3
  747. package/dist/cli/reference/categories/bitwise.d.ts +0 -3
  748. package/dist/cli/reference/categories/collection.d.ts +0 -3
  749. package/dist/cli/reference/categories/functional.d.ts +0 -3
  750. package/dist/cli/reference/categories/math.d.ts +0 -3
  751. package/dist/cli/reference/categories/misc.d.ts +0 -3
  752. package/dist/cli/reference/categories/object.d.ts +0 -3
  753. package/dist/cli/reference/categories/predicate.d.ts +0 -3
  754. package/dist/cli/reference/categories/regularExpression.d.ts +0 -3
  755. package/dist/cli/reference/categories/sequence.d.ts +0 -3
  756. package/dist/cli/reference/categories/specialExpressions.d.ts +0 -3
  757. package/dist/cli/reference/categories/string.d.ts +0 -3
  758. package/dist/cli/src/analyze/calculateOutcomes/calculateAndOutcomes.d.ts +0 -3
  759. package/dist/cli/src/analyze/calculateOutcomes/calculateCommentOutcomes.d.ts +0 -3
  760. package/dist/cli/src/analyze/calculateOutcomes/calculateCondOutcomes.d.ts +0 -3
  761. package/dist/cli/src/analyze/calculateOutcomes/calculateDeclaredOutcomes.d.ts +0 -3
  762. package/dist/cli/src/analyze/calculateOutcomes/calculateDefOutcomes.d.ts +0 -3
  763. package/dist/cli/src/analyze/calculateOutcomes/calculateDefsOutcomes.d.ts +0 -3
  764. package/dist/cli/src/analyze/calculateOutcomes/calculateDoOutcomes.d.ts +0 -3
  765. package/dist/cli/src/analyze/calculateOutcomes/calculateFunctionOutcomes.d.ts +0 -5
  766. package/dist/cli/src/analyze/calculateOutcomes/calculateIfLetOutcomes.d.ts +0 -3
  767. package/dist/cli/src/analyze/calculateOutcomes/calculateIfNotOutcomes.d.ts +0 -3
  768. package/dist/cli/src/analyze/calculateOutcomes/calculateIfOutcomes.d.ts +0 -3
  769. package/dist/cli/src/analyze/calculateOutcomes/calculateLetOutcomes.d.ts +0 -3
  770. package/dist/cli/src/analyze/calculateOutcomes/calculateLoopOutcomes.d.ts +0 -3
  771. package/dist/cli/src/analyze/calculateOutcomes/calculateLoopsOutcomes.d.ts +0 -4
  772. package/dist/cli/src/analyze/calculateOutcomes/calculateOrOutcomes.d.ts +0 -3
  773. package/dist/cli/src/analyze/calculateOutcomes/calculateQqOutcomes.d.ts +0 -3
  774. package/dist/cli/src/analyze/calculateOutcomes/calculateRecurOutcomes.d.ts +0 -3
  775. package/dist/cli/src/analyze/calculateOutcomes/calculateThrowOutcomes.d.ts +0 -3
  776. package/dist/cli/src/analyze/calculateOutcomes/calculateTimeOutcomes.d.ts +0 -3
  777. package/dist/cli/src/analyze/calculateOutcomes/calculateTryOutcomes.d.ts +0 -3
  778. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.d.ts +0 -3
  779. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenLetOutcomes.d.ts +0 -3
  780. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenNotOutcomes.d.ts +0 -3
  781. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenOutcomes.d.ts +0 -3
  782. package/dist/cli/src/analyze/calculateOutcomes/index.d.ts +0 -18
  783. package/dist/cli/src/analyze/calculateOutcomes/specialExpressionCalculators.d.ts +0 -55
  784. package/dist/cli/src/analyze/findUnresolvedIdentifiers.d.ts +0 -2
  785. package/dist/cli/src/analyze/index.d.ts +0 -17
  786. package/dist/cli/src/analyze/utils.d.ts +0 -4
  787. package/dist/cli/src/builtin/normalExpressions/categories/assert.d.ts +0 -2
  788. package/dist/cli/src/builtin/normalExpressions/categories/sequence.d.ts +0 -4
  789. package/dist/cli/src/builtin/specialExpressions/comment.d.ts +0 -5
  790. package/dist/cli/src/builtin/specialExpressions/declared.d.ts +0 -5
  791. package/dist/cli/src/builtin/specialExpressions/defs.d.ts +0 -5
  792. package/dist/cli/src/builtin/specialExpressions/do.d.ts +0 -6
  793. package/dist/cli/src/builtin/specialExpressions/if-let.d.ts +0 -10
  794. package/dist/cli/src/builtin/specialExpressions/if-not.d.ts +0 -6
  795. package/dist/cli/src/builtin/specialExpressions/time.d.ts +0 -6
  796. package/dist/cli/src/builtin/specialExpressions/when-first.d.ts +0 -7
  797. package/dist/cli/src/builtin/specialExpressions/when-let.d.ts +0 -7
  798. package/dist/cli/src/builtin/specialExpressions/when-not.d.ts +0 -6
  799. package/dist/cli/src/builtin/specialExpressions/when.d.ts +0 -6
  800. package/dist/cli/src/identifier.d.ts +0 -8
  801. package/dist/cli/src/parser/index.d.ts +0 -3
  802. package/dist/cli/src/parser/interface.d.ts +0 -155
  803. package/dist/cli/src/parser/parsers.d.ts +0 -4
  804. package/dist/cli/src/removeCommentNodes/index.d.ts +0 -11
  805. package/dist/cli/src/removeCommentNodes/removeCommentNodesFromSpecialExpression.d.ts +0 -3
  806. package/dist/cli/src/reservedNames.d.ts +0 -7
  807. package/dist/cli/src/tokenizer/index.d.ts +0 -9
  808. package/dist/cli/src/tokenizer/interface.d.ts +0 -35
  809. package/dist/cli/src/tokenizer/sugar/applyCollectionAccessor.d.ts +0 -2
  810. package/dist/cli/src/tokenizer/sugar/index.d.ts +0 -3
  811. package/dist/cli/src/typeGuards/token.d.ts +0 -13
  812. package/dist/cli/src/unparser/UnparseOptions.d.ts +0 -15
  813. package/dist/cli/src/unparser/unparse.d.ts +0 -5
  814. package/dist/cli/src/unparser/unparseArrayLiteral.d.ts +0 -3
  815. package/dist/cli/src/unparser/unparseBindings.d.ts +0 -3
  816. package/dist/cli/src/unparser/unparseNormalExpression.d.ts +0 -3
  817. package/dist/cli/src/unparser/unparseObjectLiteral.d.ts +0 -3
  818. package/dist/cli/src/unparser/unparseParams.d.ts +0 -17
  819. package/dist/cli/src/unparser/unparseSpecialExpression/index.d.ts +0 -3
  820. package/dist/cli/src/unparser/unparseSpecialExpression/unparseCond.d.ts +0 -3
  821. package/dist/cli/src/unparser/unparseSpecialExpression/unparseDo.d.ts +0 -3
  822. package/dist/cli/src/unparser/unparseSpecialExpression/unparseIfLet.d.ts +0 -3
  823. package/dist/cli/src/unparser/unparseSpecialExpression/unparseIfOrWhenLike.d.ts +0 -6
  824. package/dist/cli/src/unparser/unparseSpecialExpression/unparseLet.d.ts +0 -3
  825. package/dist/cli/src/unparser/utils.d.ts +0 -5
  826. package/dist/common/clojureDocs.d.ts +0 -1
  827. package/dist/reference/categories/array.d.ts +0 -3
  828. package/dist/reference/categories/assert.d.ts +0 -3
  829. package/dist/reference/categories/bitwise.d.ts +0 -3
  830. package/dist/reference/categories/collection.d.ts +0 -3
  831. package/dist/reference/categories/functional.d.ts +0 -3
  832. package/dist/reference/categories/math.d.ts +0 -3
  833. package/dist/reference/categories/misc.d.ts +0 -3
  834. package/dist/reference/categories/object.d.ts +0 -3
  835. package/dist/reference/categories/predicate.d.ts +0 -3
  836. package/dist/reference/categories/regularExpression.d.ts +0 -3
  837. package/dist/reference/categories/sequence.d.ts +0 -3
  838. package/dist/reference/categories/specialExpressions.d.ts +0 -3
  839. package/dist/reference/categories/string.d.ts +0 -3
  840. package/dist/src/analyze/calculateOutcomes/calculateAndOutcomes.d.ts +0 -3
  841. package/dist/src/analyze/calculateOutcomes/calculateCommentOutcomes.d.ts +0 -3
  842. package/dist/src/analyze/calculateOutcomes/calculateCondOutcomes.d.ts +0 -3
  843. package/dist/src/analyze/calculateOutcomes/calculateDeclaredOutcomes.d.ts +0 -3
  844. package/dist/src/analyze/calculateOutcomes/calculateDefOutcomes.d.ts +0 -3
  845. package/dist/src/analyze/calculateOutcomes/calculateDefsOutcomes.d.ts +0 -3
  846. package/dist/src/analyze/calculateOutcomes/calculateDoOutcomes.d.ts +0 -3
  847. package/dist/src/analyze/calculateOutcomes/calculateFunctionOutcomes.d.ts +0 -5
  848. package/dist/src/analyze/calculateOutcomes/calculateIfLetOutcomes.d.ts +0 -3
  849. package/dist/src/analyze/calculateOutcomes/calculateIfNotOutcomes.d.ts +0 -3
  850. package/dist/src/analyze/calculateOutcomes/calculateIfOutcomes.d.ts +0 -3
  851. package/dist/src/analyze/calculateOutcomes/calculateLetOutcomes.d.ts +0 -3
  852. package/dist/src/analyze/calculateOutcomes/calculateLoopOutcomes.d.ts +0 -3
  853. package/dist/src/analyze/calculateOutcomes/calculateLoopsOutcomes.d.ts +0 -4
  854. package/dist/src/analyze/calculateOutcomes/calculateOrOutcomes.d.ts +0 -3
  855. package/dist/src/analyze/calculateOutcomes/calculateQqOutcomes.d.ts +0 -3
  856. package/dist/src/analyze/calculateOutcomes/calculateRecurOutcomes.d.ts +0 -3
  857. package/dist/src/analyze/calculateOutcomes/calculateThrowOutcomes.d.ts +0 -3
  858. package/dist/src/analyze/calculateOutcomes/calculateTimeOutcomes.d.ts +0 -3
  859. package/dist/src/analyze/calculateOutcomes/calculateTryOutcomes.d.ts +0 -3
  860. package/dist/src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.d.ts +0 -3
  861. package/dist/src/analyze/calculateOutcomes/calculateWhenLetOutcomes.d.ts +0 -3
  862. package/dist/src/analyze/calculateOutcomes/calculateWhenNotOutcomes.d.ts +0 -3
  863. package/dist/src/analyze/calculateOutcomes/calculateWhenOutcomes.d.ts +0 -3
  864. package/dist/src/analyze/calculateOutcomes/index.d.ts +0 -18
  865. package/dist/src/analyze/calculateOutcomes/specialExpressionCalculators.d.ts +0 -55
  866. package/dist/src/analyze/findUnresolvedIdentifiers.d.ts +0 -2
  867. package/dist/src/analyze/index.d.ts +0 -17
  868. package/dist/src/analyze/utils.d.ts +0 -4
  869. package/dist/src/builtin/normalExpressions/categories/assert.d.ts +0 -2
  870. package/dist/src/builtin/normalExpressions/categories/sequence.d.ts +0 -4
  871. package/dist/src/builtin/specialExpressions/comment.d.ts +0 -5
  872. package/dist/src/builtin/specialExpressions/declared.d.ts +0 -5
  873. package/dist/src/builtin/specialExpressions/defs.d.ts +0 -5
  874. package/dist/src/builtin/specialExpressions/do.d.ts +0 -6
  875. package/dist/src/builtin/specialExpressions/if-let.d.ts +0 -10
  876. package/dist/src/builtin/specialExpressions/if-not.d.ts +0 -6
  877. package/dist/src/builtin/specialExpressions/time.d.ts +0 -6
  878. package/dist/src/builtin/specialExpressions/when-first.d.ts +0 -7
  879. package/dist/src/builtin/specialExpressions/when-let.d.ts +0 -7
  880. package/dist/src/builtin/specialExpressions/when-not.d.ts +0 -6
  881. package/dist/src/builtin/specialExpressions/when.d.ts +0 -6
  882. package/dist/src/identifier.d.ts +0 -8
  883. package/dist/src/parser/index.d.ts +0 -3
  884. package/dist/src/parser/interface.d.ts +0 -155
  885. package/dist/src/parser/parsers.d.ts +0 -4
  886. package/dist/src/removeCommentNodes/index.d.ts +0 -11
  887. package/dist/src/removeCommentNodes/removeCommentNodesFromSpecialExpression.d.ts +0 -3
  888. package/dist/src/reservedNames.d.ts +0 -7
  889. package/dist/src/tokenizer/index.d.ts +0 -9
  890. package/dist/src/tokenizer/interface.d.ts +0 -35
  891. package/dist/src/tokenizer/sugar/applyCollectionAccessor.d.ts +0 -2
  892. package/dist/src/tokenizer/sugar/index.d.ts +0 -3
  893. package/dist/src/typeGuards/token.d.ts +0 -13
  894. package/dist/src/unparser/UnparseOptions.d.ts +0 -15
  895. package/dist/src/unparser/__tests__/testFormatter.d.ts +0 -1
  896. package/dist/src/unparser/unparse.d.ts +0 -5
  897. package/dist/src/unparser/unparseArrayLiteral.d.ts +0 -3
  898. package/dist/src/unparser/unparseBindings.d.ts +0 -3
  899. package/dist/src/unparser/unparseNormalExpression.d.ts +0 -3
  900. package/dist/src/unparser/unparseObjectLiteral.d.ts +0 -3
  901. package/dist/src/unparser/unparseParams.d.ts +0 -17
  902. package/dist/src/unparser/unparseSpecialExpression/index.d.ts +0 -3
  903. package/dist/src/unparser/unparseSpecialExpression/unparseCond.d.ts +0 -3
  904. package/dist/src/unparser/unparseSpecialExpression/unparseDo.d.ts +0 -3
  905. package/dist/src/unparser/unparseSpecialExpression/unparseIfLet.d.ts +0 -3
  906. package/dist/src/unparser/unparseSpecialExpression/unparseIfOrWhenLike.d.ts +0 -6
  907. package/dist/src/unparser/unparseSpecialExpression/unparseLet.d.ts +0 -3
  908. package/dist/src/unparser/utils.d.ts +0 -5
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/constants/constants.ts","../node_modules/tslib/tslib.es6.js","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/errors.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/removeCommentNodes/removeCommentNodesFromSpecialExpression.ts","../src/removeCommentNodes/index.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/index.ts","../src/typeGuards/token.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/comment.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/declared.ts","../src/reservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/defs.ts","../src/builtin/specialExpressions/do.ts","../src/analyze/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/if-let.ts","../src/builtin/specialExpressions/if-not.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/time.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/when.ts","../src/builtin/specialExpressions/when-first.ts","../src/builtin/specialExpressions/when-let.ts","../src/builtin/specialExpressions/when-not.ts","../src/builtin/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/analyze/findUnresolvedIdentifiers.ts","../src/analyze/calculateOutcomes/calculateAndOutcomes.ts","../src/analyze/calculateOutcomes/calculateCondOutcomes.ts","../src/analyze/calculateOutcomes/calculateDeclaredOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefsOutcomes.ts","../src/analyze/calculateOutcomes/calculateDoOutcomes.ts","../src/analyze/calculateOutcomes/calculateFunctionOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfOutcomes.ts","../src/analyze/calculateOutcomes/calculateLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopsOutcomes.ts","../src/analyze/calculateOutcomes/calculateOrOutcomes.ts","../src/analyze/calculateOutcomes/calculateQqOutcomes.ts","../src/analyze/calculateOutcomes/calculateThrowOutcomes.ts","../src/analyze/calculateOutcomes/calculateTimeOutcomes.ts","../src/analyze/calculateOutcomes/calculateTryOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenOutcomes.ts","../src/analyze/calculateOutcomes/calculateRecurOutcomes.ts","../src/analyze/calculateOutcomes/calculateCommentOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopOutcomes.ts","../src/analyze/calculateOutcomes/specialExpressionCalculators.ts","../src/analyze/calculateOutcomes/index.ts","../src/analyze/index.ts","../src/parser/parsers.ts","../src/parser/index.ts","../src/tokenizer/sugar/applyCollectionAccessor.ts","../src/tokenizer/sugar/index.ts","../src/identifier.ts","../src/tokenizer/tokenizers.ts","../src/tokenizer/index.ts","../src/transformer/index.ts","../src/unparser/UnparseOptions.ts","../src/unparser/utils.ts","../src/unparser/unparseParams.ts","../src/unparser/unparseArrayLiteral.ts","../src/unparser/unparseObjectLiteral.ts","../src/unparser/unparseNormalExpression.ts","../src/unparser/unparseSpecialExpression/unparseCond.ts","../src/unparser/unparseSpecialExpression/unparseDo.ts","../src/unparser/unparseBindings.ts","../src/unparser/unparseSpecialExpression/unparseIfLet.ts","../src/unparser/unparseSpecialExpression/unparseLet.ts","../src/unparser/unparseSpecialExpression/unparseIfOrWhenLike.ts","../src/unparser/unparseSpecialExpression/index.ts","../src/unparser/unparse.ts","../src/untokenizer/index.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../reference/categories/collection.ts","../reference/categories/functional.ts","../reference/categories/array.ts","../reference/categories/sequence.ts","../reference/categories/math.ts","../reference/categories/misc.ts","../reference/categories/assert.ts","../reference/categories/object.ts","../reference/categories/predicate.ts","../reference/categories/regularExpression.ts","../reference/categories/specialExpressions.ts","../reference/categories/string.ts","../reference/categories/bitwise.ts","../reference/shorthand.ts","../reference/datatype.ts","../reference/index.ts","../reference/api.ts"],"sourcesContent":["export enum AstNodeType {\n Number = 201,\n String = 202,\n NormalExpression = 203,\n SpecialExpression = 204,\n Name = 205,\n Modifier = 206,\n ReservedName = 207,\n Binding = 208,\n Argument = 209,\n Partial = 210,\n Comment = 211,\n}\n\nexport const astNodeTypeName = new Map([\n [AstNodeType.Number, 'Number'],\n [AstNodeType.String, 'String'],\n [AstNodeType.NormalExpression, 'NormalExpression'],\n [AstNodeType.SpecialExpression, 'SpecialExpression'],\n [AstNodeType.Name, 'Name'],\n [AstNodeType.Modifier, 'Modifier'],\n [AstNodeType.ReservedName, 'ReservedName'],\n [AstNodeType.Binding, 'Binding'],\n [AstNodeType.Argument, 'Argument'],\n [AstNodeType.Partial, 'Partial'],\n])\n\nexport function isAstNodeType(type: unknown): type is AstNodeType {\n return typeof type === 'number' && astNodeTypeName.has(type)\n}\n\nexport enum TokenType {\n Bracket = 101,\n Number = 102,\n Name = 103,\n String = 104,\n ReservedName = 105,\n Modifier = 106,\n RegexpShorthand = 107,\n FnShorthand = 108,\n CollectionAccessor = 109,\n Comment = 110,\n NewLine = 111,\n}\n\nexport const tokenTypeName = new Map([\n [TokenType.Bracket, 'Bracket'],\n [TokenType.Number, 'Number'],\n [TokenType.Name, 'Name'],\n [TokenType.String, 'String'],\n [TokenType.ReservedName, 'ReservedName'],\n [TokenType.Modifier, 'Modifier'],\n [TokenType.RegexpShorthand, 'RegexpShorthand'],\n [TokenType.FnShorthand, 'FnShorthand'],\n [TokenType.CollectionAccessor, 'CollectionAccessor'],\n [TokenType.Comment, 'Comment'],\n [TokenType.NewLine, 'NewLine'],\n])\n\nexport function isTokenType(type: unknown): type is TokenType {\n return typeof type === 'number' && tokenTypeName.has(type)\n}\n\nexport enum FunctionType {\n UserDefined = 301,\n Partial = 302,\n Comp = 303,\n Constantly = 304,\n Juxt = 305,\n Complement = 306,\n EveryPred = 307,\n SomePred = 308,\n Fnil = 309,\n Builtin = 310,\n NativeJsFunction = 399,\n}\n\nexport const functionTypeName = new Map([\n [FunctionType.UserDefined, 'UserDefined'],\n [FunctionType.Partial, 'Partial'],\n [FunctionType.Comp, 'Comp'],\n [FunctionType.Constantly, 'Constantly'],\n [FunctionType.Juxt, 'Juxt'],\n [FunctionType.Complement, 'Complement'],\n [FunctionType.EveryPred, 'EveryPred'],\n [FunctionType.SomePred, 'SomePred'],\n [FunctionType.Fnil, 'Fnil'],\n [FunctionType.Builtin, 'Builtin'],\n])\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'number' && functionTypeName.has(type)\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { astNodeTypeName, isAstNodeType, isFunctionType, isTokenType, tokenTypeName } from '../../constants/constants'\nimport type { AstNode, LitsFunction } from '../../parser/interface'\nimport type { SourceCodeInfo, Token } from '../../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (!isUnknownRecord(func))\n return false\n\n return !!func[FUNCTION_SYMBOL] && isFunctionType(func.t)\n}\n\nfunction isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isToken(value: unknown): value is Token {\n return isUnknownRecord(value) && isTokenType(value.t) && typeof value.v === 'string'\n}\n\nfunction isAstNode(value: unknown): value is AstNode {\n return isUnknownRecord(value) && isAstNodeType(value.t)\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isToken(value))\n return `${tokenTypeName.get(value.t)}-token \"${value.v}\"`\n\n if (isAstNode(value))\n return `${astNodeTypeName.get(value.t)}-node`\n\n if (value === null)\n return 'nil'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/interface'\nimport { getCodeMarker, valueToString } from './utils/debug/debugTools'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n const filePathLine = sourceCodeInfo?.filePath ? `\\n${sourceCodeInfo.filePath}` : ''\n const codeLine = sourceCodeInfo?.code ? `\\n${sourceCodeInfo.code}` : ''\n const codeMarker = sourceCodeInfo && codeLine ? `\\n${getCodeMarker(sourceCodeInfo)}` : ''\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${valueToString(fn)}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo?: SourceCodeInfo): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { AstNodeType, isAstNodeType } from '../constants/constants'\nimport type {\n AstNode,\n ExpressionNode,\n NameNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isAstNode(value: unknown): value is AstNode {\n if (value === null || typeof value !== 'object')\n return false\n\n if (!isAstNodeType((value as AstNode).t))\n return false\n\n return true\n}\nexport function asAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): AstNode {\n assertAstNode(value, sourceCodeInfo)\n return value\n}\nexport function assertAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is AstNode {\n if (!isAstNode(value))\n throw getAssertionError('AstNode', value, sourceCodeInfo)\n}\n\nexport function isNameNode(value: unknown): value is NameNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.Name\n}\nexport function asNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NameNode {\n assertNameNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is NameNode {\n if (!isNameNode(value))\n throw getAssertionError('NameNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNode(value: unknown): value is NormalExpressionNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression\n}\nexport function asNormalExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNode(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNode {\n if (!isNormalExpressionNode(value))\n throw getAssertionError('NormalExpressionNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(value: unknown): value is NormalExpressionNodeWithName {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression && typeof value.n === 'string'\n}\nexport function asNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(value))\n throw getAssertionError('NormalExpressionNodeWithName', value, sourceCodeInfo)\n}\n\nexport function isExpressionNode(value: unknown): value is ExpressionNode {\n if (!isAstNode(value))\n return false\n\n return (\n value.t === AstNodeType.NormalExpression\n || value.t === AstNodeType.SpecialExpression\n || value.t === AstNodeType.Number\n || value.t === AstNodeType.String\n )\n}\nexport function asExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is ExpressionNode {\n if (!isExpressionNode(value))\n throw getAssertionError('ExpressionNode', value, sourceCodeInfo)\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../builtin/specialExpressions/declared'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { IfLetNode } from '../builtin/specialExpressions/if-let'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../builtin/specialExpressions/loops'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../builtin/specialExpressions/time'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { WhenNode } from '../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../builtin/specialExpressions/when-not'\nimport type { RemoveOptions } from '.'\n\nconst specialExpressionCommentRemovers = {\n 'and': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'comment': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'cond': (node: CondNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'declared?': (node: DeclaredNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defn': (_node: DefnNode, _removeOptions: RemoveOptions) => {},\n 'def': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defns': (_node: DefnsNode, _removeOptions: RemoveOptions) => {},\n 'defs': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'do': (node: DoNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'doseq': (_node: DoSeqNode, _removeOptions: RemoveOptions) => {},\n 'fn': (_node: FnNode, _removeOptions: RemoveOptions) => {},\n 'for': (_node: ForNode, _removeOptions: RemoveOptions) => {},\n 'if-let': (_node: IfLetNode, _removeOptions: RemoveOptions) => {},\n 'if': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'if-not': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'let': (node: LetNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n node.bs.forEach((bindingNode) => {\n removeOptions.recursivelyRemoveCommentNodes(bindingNode.v)\n })\n },\n 'loop': (_node: LoopNode, _removeOptions: RemoveOptions) => {},\n 'or': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n '??': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'recur': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'time!': (node: TimeNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'throw': (node: ThrowNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'try': (_node: TryNode, _removeOptions: RemoveOptions) => {},\n 'when-first': (_node: WhenFirstNode, _removeOptions: RemoveOptions) => {},\n 'when-let': (_node: WhenLetNode, _removeOptions: RemoveOptions) => {},\n 'when': (_node: WhenNode, _removeOptions: RemoveOptions) => {},\n 'when-not': (_node: WhenNotNode, _removeOptions: RemoveOptions) => {},\n\n} satisfies Record<SpecialExpressionName, (astNode: any, removeOptions: RemoveOptions) => void>\n\nexport function removeCommentNodesFromSpecialExpression(\n node: SpecialExpressionNode,\n removeOptions: RemoveOptions,\n) {\n const uncommenter = specialExpressionCommentRemovers[node.n as 'and']\n return uncommenter?.(node as AndNode, removeOptions)\n}\n","import { AstNodeType } from '../constants/constants'\nimport type { Ast, AstNode } from '../parser/interface'\nimport { isNormalExpressionNode } from '../typeGuards/astNode'\nimport { removeCommentNodesFromSpecialExpression } from './removeCommentNodesFromSpecialExpression'\n\nconst removeOptions = {\n recursivelyRemoveCommentNodes,\n removeCommenNodesFromArray,\n} as const\n\nexport type RemoveOptions = typeof removeOptions\n\nexport function removeCommenNodes(ast: Ast): void {\n removeCommenNodesFromArray(ast.b)\n ast.b.forEach(recursivelyRemoveCommentNodes)\n}\n\nfunction recursivelyRemoveCommentNodes(astNode: AstNode) {\n if (isNormalExpressionNode(astNode)) {\n removeCommenNodesFromArray(astNode.p)\n astNode.p.forEach(recursivelyRemoveCommentNodes)\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n removeCommentNodesFromSpecialExpression(astNode, removeOptions)\n }\n}\n\nfunction removeCommenNodesFromArray(astNodes: AstNode[]): void {\n let i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n while (i >= 0) {\n astNodes.splice(i, 1)\n i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n }\n}\n\nexport function withoutCommentNodes(astNodes: AstNode[]) {\n return astNodes.filter(n => n.t !== AstNodeType.Comment)\n}\n","import { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { GenericNode } from '../parser/interface'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype Count = number | { min?: number, max?: number }\n\nexport function assertEvenNumberOfParams(node: GenericNode): void {\n const length = withoutCommentNodes(node.p).length\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments, expected an even number, got ${valueToString(length)}.`,\n node.debugData?.token.debugData?.sourceCodeInfo,\n )\n }\n}\n\nexport function assertNumberOfParams(count: Count, node: GenericNode): void {\n assertCount({\n count,\n length: withoutCommentNodes(node.p).length,\n name: node.n ?? 'expression',\n sourceCodeInfo: node.debugData?.token.debugData?.sourceCodeInfo,\n })\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\n/* v8 ignore next 3 */\nexport function assertUnreachable(_: never): never {\n throw new Error('This should not be reached')\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nfunction assertCount({ count, length, name, sourceCodeInfo }: { name: string | undefined, count: Count, length: number, sourceCodeInfo?: SourceCodeInfo }): void {\n if (typeof count === 'number') {\n if (length !== count) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n else {\n const { min, max } = count\n if (min === undefined && max === undefined)\n throw new LitsError('Min or max must be specified.', sourceCodeInfo)\n\n if (typeof min === 'number' && length < min) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at least ${min}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n\n if (typeof max === 'number' && length > max) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { BuiltinFunction, LitsFunction, NativeJsFunction, UserDefinedFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.t === FunctionType.UserDefined\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.t === FunctionType.NativeJsFunction\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is BuiltinFunction {\n return isUnknownRecord(value) && value.t === FunctionType.Builtin\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n 'bit-shift-left': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-shift-right': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-not': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'bit-and': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-and-not': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-or': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-xor': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw new LitsError(\n getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n ),\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Arr, Coll, Obj } from '../interface'\nimport type { NativeJsFunction, RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { FunctionType } from '../constants/constants'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\ntype Type = 'null' | 'boolean' | 'number' | 'string' | 'object' | 'array' | 'regexp' | 'unknown'\n\nconst sortOrderByType: Record<Type, number> = {\n boolean: 0,\n number: 1,\n string: 2,\n array: 3,\n object: 4,\n regexp: 5,\n unknown: 6,\n null: 7,\n}\n\nfunction getType(value: unknown): Type {\n if (value === null)\n return 'null'\n else if (typeof value === 'boolean')\n return 'boolean'\n else if (typeof value === 'number')\n return 'number'\n else if (typeof value === 'string')\n return 'string'\n else if (Array.isArray(value))\n return 'array'\n else if (isObj(value))\n return 'object'\n else if (isRegularExpression(value))\n return 'regexp'\n else\n return 'unknown'\n}\n\nexport function compare(a: unknown, b: unknown): number {\n const aType = getType(a)\n const bType = getType(b)\n if (aType !== bType)\n return Math.sign(sortOrderByType[aType] - sortOrderByType[bType])\n\n switch (aType) {\n case 'null':\n return 0\n case 'boolean':\n if (a === b)\n return 0\n\n return a === false ? -1 : 1\n case 'number':\n return Math.sign((a as number) - (b as number))\n case 'string': {\n const aString = a as string\n const bString = b as string\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'array': {\n const aArray = a as Arr\n const bArray = b as Arr\n if (aArray.length < bArray.length)\n return -1\n else if (aArray.length > bArray.length)\n return 1\n\n for (let i = 0; i < aArray.length; i += 1) {\n const innerComp = compare(aArray[i], bArray[i])\n if (innerComp !== 0)\n return innerComp\n }\n return 0\n }\n case 'object': {\n const aObj = a as Obj\n const bObj = b as Obj\n return Math.sign(Object.keys(aObj).length - Object.keys(bObj).length)\n }\n case 'regexp': {\n const aString = (a as RegularExpression).s\n const bString = (b as RegularExpression).s\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'unknown':\n return 0\n }\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n f: {\n fn,\n },\n n: name,\n t: FunctionType.NativeJsFunction,\n }\n}\n\nexport function arrayToPairs<T>(arr: T[]): T[][] {\n const pairs: T[][] = []\n for (let i = 0; i < arr.length; i += 2)\n pairs.push([arr[i]!, arr[i + 1]!])\n\n return pairs\n}\n","import type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { LitsFunction } from '../../..'\nimport type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { cloneColl, collHasKey, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asColl, assertAny, assertColl, assertObj, assertSeq, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // nil behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isSeq(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n assertNumber(key, sourceCodeInfo, { integer: true })\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has?': {\n evaluate: ([coll, value], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.includes(value)\n\n if (typeof coll === 'string')\n return typeof value === 'string' ? coll.split('').includes(value) : false\n\n return Object.values(coll).includes(value)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has-some?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null || seq === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (coll.includes(value))\n return true\n }\n return false\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (isString(value, { char: true }) ? coll.split('').includes(value) : false)\n return true\n }\n return false\n }\n for (const value of seq) {\n if (Object.values(coll).includes(value))\n return true\n }\n return false\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has-every?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (seq === null)\n return true\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (!coll.includes(value))\n return false\n }\n return true\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (!isString(value, { char: true }) || !coll.split('').includes(value))\n return false\n }\n return true\n }\n for (const value of seq) {\n if (!Object.values(coll).includes(value))\n return false\n }\n return true\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams(3, node),\n },\n 'assoc-in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n validate: node => assertNumberOfParams(3, node),\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 3 }, node),\n },\n 'update-in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n validate: node => assertNumberOfParams({ min: 3 }, node),\n },\n 'concat': {\n evaluate: (params, sourceCodeInfo): Any => {\n assertColl(params[0], sourceCodeInfo)\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isString(params[0])) {\n return params.reduce((result: string, s) => {\n assertString(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'not-empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'every?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'any?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'not-any?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'not-every?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { collHasKey, compare, toAny, toNonNegativeInteger } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport type { BuiltinNormalExpressions, NormalExpressionEvaluator } from '../../interface'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nexport const evaluateMap: NormalExpressionEvaluator<Arr | string> = (\n params: Arr,\n sourceCodeInfo,\n contextStack,\n { executeFunction },\n) => {\n const [fn, firstList] = params\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(firstList, sourceCodeInfo)\n const isStringSeq = typeof firstList === 'string'\n\n const length = firstList.length\n if (params.length === 2) {\n if (Array.isArray(firstList)) {\n return firstList.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return firstList\n .split('')\n .map((elem) => {\n const newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo, { char: true })\n return newVal\n })\n .join('')\n }\n }\n else {\n params.slice(2).forEach((collParam) => {\n if (isStringSeq)\n assertString(collParam, sourceCodeInfo)\n else\n assertArray(collParam, sourceCodeInfo)\n\n if (length !== collParam.length)\n throw new LitsError('All arguments to \"map\" must have the same length.', sourceCodeInfo)\n })\n\n if (isStringSeq) {\n let result = ''\n for (let i = 0; i < length; i += 1) {\n const fnParams = params.slice(1).map(l => (l as string)[i]) as string[]\n const newValue = executeFunction(fn, fnParams, contextStack, sourceCodeInfo)\n assertString(newValue, sourceCodeInfo, { char: true })\n result += newValue\n }\n return result\n }\n else {\n const result: Arr = []\n for (let i = 0; i < length; i += 1) {\n const fnParams = params.slice(1).map(l => toAny((l as Arr)[i]))\n result.push(executeFunction(fn, fnParams, contextStack, sourceCodeInfo))\n }\n return result\n }\n }\n}\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'cons': {\n evaluate: ([elem, seq], sourceCodeInfo): Any => {\n assertAny(elem, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [elem, ...seq]\n\n assertString(elem, sourceCodeInfo, { char: true })\n return `${elem}${seq}`\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'filter': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'map': {\n evaluate: evaluateMap,\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(0, seq.length - 1)\n\n const copy = [...seq]\n copy.pop()\n return copy\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'position': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, arr] = params\n assertSeq(arr, sourceCodeInfo)\n if (arr.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (arr.length === 1)\n return [toAny(arr[0])]\n\n if (typeof arr === 'string') {\n const chars = arr.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(arr[0])]\n arr.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(arr[0]))\n return resultArray\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, arr] = params\n assertSeq(arr, sourceCodeInfo)\n if (arr.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (arr.length === 1)\n return toAny(arr[0])\n\n if (typeof arr === 'string') {\n const chars = arr.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return arr.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(arr[0]))\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, seq] = params\n assertSeq(seq, sourceCodeInfo)\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'rest': {\n evaluate: ([first], sourceCodeInfo): Arr | string => {\n assertSeq(first, sourceCodeInfo)\n if (Array.isArray(first)) {\n if (first.length <= 1)\n return []\n\n return first.slice(1)\n }\n return first.substring(1)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'nthrest': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substring(integerCount)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'next': {\n evaluate: ([first], sourceCodeInfo): Arr | string | null => {\n assertSeq(first, sourceCodeInfo)\n if (Array.isArray(first)) {\n if (first.length <= 1)\n return null\n\n return first.slice(1)\n }\n if (first.length <= 1)\n return null\n\n return first.substring(1)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'nthnext': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (seq.length <= count)\n return null\n\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substring(integerCount)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'second': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[1])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n\n if (params.length === 1)\n return seq\n\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\n },\n 'some': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const defaultComparer = params.length === 1\n const seq = defaultComparer ? params[0] : params[1]\n const comparer = defaultComparer ? null : params[0]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const defaultComparer = params.length === 2\n\n const keyfn = asAny(params[0], sourceCodeInfo)\n const comparer = defaultComparer ? null : params[1]\n const seq = asSeq(defaultComparer ? params[1] : params[2], sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'take': {\n evaluate: ([n, input], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'take-last': {\n evaluate: ([n, array], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'take-while': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'drop': {\n evaluate: ([n, input], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'drop-last': {\n evaluate: ([n, array], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'drop-while': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'random-sample!': {\n evaluate: ([prob, seq], sourceCodeInfo): Seq => {\n assertNumber(prob, sourceCodeInfo, { finite: true })\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n return seq\n .split('')\n .filter(() => Math.random() < prob)\n .join('')\n }\n else {\n return seq.filter(() => Math.random() < prob)\n }\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'rand-nth!': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (seq.length === 0)\n return null\n\n const index = Math.floor(Math.random() * seq.length)\n\n if (typeof seq === 'string')\n return toAny(seq.split('')[index])\n\n return toAny(seq[index])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'shuffle!': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n const array: Arr = typeof input === 'string' ? [...input.split('')] : [...input]\n let remainingLength = array.length\n let arrayElement: Any\n let pickedIndex: number\n\n // Fisher–Yates Shuffle\n while (remainingLength) {\n remainingLength -= 1\n\n // Pick a remaining element\n pickedIndex = Math.floor(Math.random() * remainingLength)\n\n // And swap it with the current element.\n arrayElement = toAny(array[remainingLength])\n array[remainingLength] = toAny(array[pickedIndex])\n array[pickedIndex] = arrayElement\n }\n\n return typeof input === 'string' ? array.join('') : array\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return Array.from(new Set(input))\n\n return Array.from(new Set(input.split(''))).join('')\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'remove': {\n evaluate: ([fn, input], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'remove-at': {\n evaluate: ([index, input], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n\n const intIndex = Math.ceil(index)\n if (intIndex < 0 || intIndex >= input.length)\n return input\n\n if (Array.isArray(input)) {\n const copy = [...input]\n copy.splice(index, 1)\n return copy\n }\n return `${input.substring(0, index)}${input.substring(index + 1)}`\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'split-at': {\n evaluate: ([pos, seq], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { finite: true })\n const intPos = toNonNegativeInteger(pos)\n assertSeq(seq, sourceCodeInfo)\n return [seq.slice(0, intPos), seq.slice(intPos)]\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'split-with': {\n evaluate: ([fn, seq], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'group-by': {\n evaluate: ([fn, seq], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq\n = len === 2\n ? asSeq(params[1], sourceCodeInfo)\n : len === 3\n ? asSeq(params[2], sourceCodeInfo)\n : asSeq(params[3], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n const pad = len === 4 ? (params[2] === null ? [] : asArray(params[2], sourceCodeInfo)) : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 4 }, node),\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq = len === 2 ? asSeq(params[1], sourceCodeInfo) : asSeq(params[2], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'partition-by': {\n evaluate: ([fn, seq], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { evaluateMap } from './sequence'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n array: {\n evaluate: (params): Arr => params,\n },\n\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\n },\n\n repeat: {\n evaluate: ([count, value], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n mapcat: {\n evaluate: (params, sourceCodeInfo, contextStack, helpers): Arr | string => {\n const mapResult = evaluateMap(params, sourceCodeInfo, contextStack, helpers)\n assertArray(mapResult, sourceCodeInfo)\n return mapResult.flat(1)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'rem': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'sqrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cbrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pow': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'rand!': {\n evaluate: (parameters, sourceCodeInfo): number => {\n const num = asNumber(parameters.length === 1 ? parameters[0] : 1, sourceCodeInfo)\n return Math.random() * num\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 0, max: 1 }, node),\n },\n\n 'rand-int!': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(Math.random() * Math.abs(first)) * Math.sign(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'max-safe-integer': {\n evaluate: (): number => {\n return Number.MAX_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min-safe-integer': {\n evaluate: (): number => {\n return Number.MIN_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'max-value': {\n evaluate: (): number => {\n return Number.MAX_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min-value': {\n evaluate: (): number => {\n return Number.MIN_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'epsilon': {\n evaluate: (): number => {\n return Number.EPSILON\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'positive-infinity': {\n evaluate: (): number => {\n return Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'negative-infinity': {\n evaluate: (): number => {\n return Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'nan': {\n evaluate: (): number => {\n return Number.NaN\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'e': {\n evaluate: (): number => {\n return Math.E\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'pi': {\n evaluate: (): number => {\n return Math.PI\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'exp': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.exp(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { version } from '../../../../package.json'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nconst uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\nconst xyRegexp = /[xy]/g\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n 'not=': {\n evaluate: (params): boolean => {\n for (let i = 0; i < params.length - 1; i += 1) {\n for (let j = i + 1; j < params.length; j += 1) {\n if (params[i] === params[j])\n return false\n }\n }\n\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n '=': {\n evaluate: ([first, ...rest]): boolean => {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'equal?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n return deepEqual(asAny(a, sourceCodeInfo), asAny(b, sourceCodeInfo), sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n '>': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) <= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '<': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) >= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '>=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) < 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '<=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) > 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'not': {\n evaluate: ([first]): boolean => !first,\n validate: node => assertNumberOfParams(1, node),\n },\n 'inst-ms!': {\n evaluate: (): number => {\n return Date.now()\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'inst-ms->iso-date-time': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'iso-date-time->inst-ms': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'compare': {\n evaluate: ([a, b]): number => {\n return compare(a, b)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'uuid!': {\n evaluate: (): string => {\n return uuidTemplate.replace(xyRegexp, (character) => {\n const randomNbr = Math.floor(Math.random() * 16)\n const newValue = character === 'x' ? randomNbr : (randomNbr & 0x3) | 0x8\n return newValue.toString(16)\n })\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'lits-version!': {\n evaluate: (): Any => {\n return version\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== second)\n throw new AssertionError(`Expected ${first} to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first === second)\n throw new AssertionError(`Expected ${first} not to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected\\n${JSON.stringify(first, null, 2)}\\nto deep equal\\n${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not-equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert>': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert>=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert<': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert<=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-nil': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be nil.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertEvenNumberOfParams, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'object': {\n evaluate: (params, sourceCodeInfo): Obj => {\n const result: Obj = {}\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value\n }\n return result\n },\n validate: node => assertEvenNumberOfParams(node),\n },\n\n 'keys': {\n evaluate: ([first], sourceCodeInfo): string[] => {\n assertObj(first, sourceCodeInfo)\n return Object.keys(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'vals': {\n evaluate: ([first], sourceCodeInfo): Arr => {\n assertObj(first, sourceCodeInfo)\n return Object.values(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'entries': {\n evaluate: ([first], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(first, sourceCodeInfo)\n return Object.entries(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n validate: node => assertNumberOfParams({ min: 0 }, node),\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [fn, first, ...rest] = params\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 1)\n return null\n\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nil?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n validate: node => assertNumberOfParams(1, node),\n },\n}\n","import type { RegularExpression } from '../../../parser/interface'\nimport { assertRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n regexp: {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n match: {\n evaluate: ([regexp, text], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n validate: node => assertNumberOfParams(2, node),\n },\n replace: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const regExp = new RegExp(regexp.s, regexp.f)\n return str.replace(regExp, value)\n },\n validate: node => assertNumberOfParams(3, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr } from '../../../interface'\nimport type { NormalExpressionNode } from '../../../parser/interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'subs': {\n evaluate: ([first, second, third], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo, { integer: true, nonNegative: true })\n\n if (third === undefined)\n return (first).substring(second)\n\n assertNumber(third, sourceCodeInfo, { gte: second })\n return (first).substring(second, third)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number-to-string': {\n evaluate: (params, sourceCodeInfo): string => {\n const [num, base] = params\n assertNumber(num, sourceCodeInfo, { finite: true })\n if (params.length === 1) {\n return `${num}`\n }\n else {\n assertNumber(base, sourceCodeInfo, { finite: true })\n if (base !== 2 && base !== 8 && base !== 10 && base !== 16) {\n throw new LitsError(\n `Expected \"number-to-string\" base argument to be 2, 8, 10 or 16, got: ${base}`,\n sourceCodeInfo,\n )\n }\n if (base === 10)\n return `${num}`\n\n assertNumber(num, sourceCodeInfo, { integer: true, nonNegative: true })\n return Number(num).toString(base)\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertString(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 10 }, node),\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import { FunctionType } from '../../../constants/constants'\nimport type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/interface'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Partial,\n f: toAny(fn),\n p: params,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'comp': {\n evaluate: (fns, sourceCodeInfo): CompFunction => {\n if (fns.length > 1) {\n const last = fns[fns.length - 1]\n if (Array.isArray(last))\n // eslint-disable-next-line ts/no-unsafe-assignment\n fns = [...fns.slice(0, -1), ...last]\n }\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Comp,\n f: fns,\n }\n },\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Constantly,\n v: toAny(value),\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'juxt': {\n evaluate: (fns, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Juxt,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Complement,\n f: toAny(fn),\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'every-pred': {\n evaluate: (fns, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.EveryPred,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'some-pred': {\n evaluate: (fns, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.SomePred,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'fnil': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNilFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Fnil,\n f: toAny(fn),\n p: params,\n }\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n}\n","import type { BuiltinNormalExpressions } from '../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n","import { TokenType, isTokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { SourceCodeInfo, Token } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype TokenAssertionOptions =\n | {\n type: TokenType\n value?: string\n }\n | {\n type?: never\n value?: never\n }\n\nexport function isToken(value: unknown, options: TokenAssertionOptions = {}): value is Token {\n if (typeof value !== 'object' || value === null)\n return false\n\n const tkn = value as Token\n if (typeof tkn.v !== 'string')\n return false\n\n if (!isTokenType(tkn.t))\n return false\n\n if ((options.type != null) && tkn.t !== options.type)\n return false\n\n if (options.value && tkn.v !== options.value)\n return false\n\n return true\n}\n\nexport function assertToken(\n value: unknown,\n filePath: string | undefined,\n options: TokenAssertionOptions = {},\n): asserts value is Token {\n if (!isToken(value, options)) {\n const sourceCodeInfo: SourceCodeInfo | undefined = isToken(value) && value.debugData?.sourceCodeInfo\n ? value.debugData.sourceCodeInfo\n : typeof filePath === 'string'\n ? { filePath }\n : undefined\n\n throw new LitsError(\n `Expected ${(options.type != null) ? `${TokenType[options.type]}-` : ''}token${\n typeof options.value === 'string' ? ` value='${options.value}'` : ''\n }, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asToken(value: unknown, filePath: string | undefined, options: TokenAssertionOptions = {}): Token {\n assertToken(value, filePath, options)\n return value\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface AndNode extends CommonSpecialExpressionNode<'and'> {}\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: AndNode = {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n newPosition + 1,\n node,\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = true\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface CommentExpressionNode extends CommonSpecialExpressionNode<'comment'> {}\n\nexport const commentSpecialExpression: BuiltinSpecialExpression<null, CommentExpressionNode> = {\n parse: (tokenStream, position, firstToken, { parseToken }) => {\n const node: CommentExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'comment',\n p: [],\n debugData: undefined,\n } satisfies CommentExpressionNode\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n node.p.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n node.debugData = firstToken.debugData\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : undefined\n\n return [position + 1, node]\n },\n evaluate: () => null,\n findUnresolvedIdentifiers: () => new Set(),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertEvenNumberOfParams } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport { arrayToPairs } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface CondNode extends CommonSpecialExpressionNode<'cond'> {}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: CondNode = {\n t: AstNodeType.SpecialExpression,\n n: 'cond',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertEvenNumberOfParams(node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const [test, form] of arrayToPairs(node.p)) {\n const value = evaluateAstNode(test!, contextStack)\n if (!value)\n continue\n\n return evaluateAstNode(form!, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, NameNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface DeclaredNode extends CommonSpecialExpressionNode<'declared?'> {}\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DeclaredNode = {\n t: AstNodeType.SpecialExpression,\n n: 'declared?',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack) => {\n const lookUpResult = contextStack.lookUp(node.p[0] as NameNode)\n return lookUpResult !== null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from './interface'\n\nexport type ReservedName = 'true' | 'false' | 'nil' | 'null' | 'undefined' | '===' | '!==' | '&&' | '||'\nexport const reservedNamesRecord: Record<ReservedName, { value: Any, forbidden?: true }> = {\n 'true': { value: true },\n 'false': { value: false },\n 'nil': { value: null },\n 'null': { value: null, forbidden: true },\n 'undefined': { value: null, forbidden: true },\n '===': { value: null, forbidden: true },\n '!==': { value: null, forbidden: true },\n '&&': { value: null, forbidden: true },\n '||': { value: null, forbidden: true },\n}\n\nexport const reservedNames: ReservedName[] = Object.keys(reservedNamesRecord) as ReservedName[]\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode, BindingNode } from '../parser/interface'\nimport { reservedNamesRecord } from '../reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport type { Builtin } from './interface'\nimport type { SpecialExpressionName } from '.'\n\nexport type Arity = number | { min: number }\n\nexport interface FunctionOverload {\n as: FunctionArguments\n a: Arity\n b: AstNode[]\n}\n\nexport interface FunctionArguments {\n m: string[]\n r?: string\n b: BindingNode[]\n}\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n if (builtin.specialExpressions[name as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-member-access\n if ((reservedNamesRecord as any)[name])\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, NameNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode, asNameNode, assertNameNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefNode extends CommonSpecialExpressionNode<'def'> {}\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefNode = {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNameNode(node.p[0], node.debugData?.token.debugData?.sourceCodeInfo)\n assertNumberOfParams(2, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const name = (node.p[0] as NameNode).v\n\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const subNode = asAstNode(node.p[1])\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = asNameNode(node.p[0]).v\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertString } from '../../typeGuards/string'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefsNode extends CommonSpecialExpressionNode<'defs'> {}\n\nexport const defsSpecialExpression: BuiltinSpecialExpression<null, DefsNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defs',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(2, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n\n assertNameNotDefined(name, contextStack, builtin, node.debugData?.token.debugData?.sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const subNode = node.p[1]!\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface DoNode extends CommonSpecialExpressionNode<'do'> {}\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n parse: (tokenStream, position, firstToken, { parseToken }) => {\n const node: DoNode = {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: [],\n debugData: undefined,\n }\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n node.p.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n node.debugData = firstToken.debugData\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : undefined\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport function joinAnalyzeResults(...results: UnresolvedIdentifiers[]): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n for (const identifier of results)\n identifier.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addAnalyzeResults(target: UnresolvedIdentifiers, source: UnresolvedIdentifiers): void {\n source.forEach(symbol => target.add(symbol))\n}\n\nexport function combinate<T>(arrays: T[][]): T[][] {\n return arrays.reduce((acc: T[][], curr) => {\n return acc.flatMap(a => curr.map(c => [...a, c]))\n }, [[]])\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { addAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, FunctionType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type {\n AstNode,\n BindingNode,\n CommonSpecialExpressionNode,\n EvaluatedFunctionOverload,\n LitsFunction,\n NameNode,\n} from '../../parser/interface'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { asAstNode, assertNameNode } from '../../typeGuards/astNode'\nimport { asString, assertString } from '../../typeGuards/string'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport type { Arity, FunctionArguments, FunctionOverload } from '../utils'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefnNode extends CommonSpecialExpressionNode<'defn'> {\n f: NameNode\n o: FunctionOverload[]\n}\n\nexport interface DefnsNode extends CommonSpecialExpressionNode<'defns'> {\n f: AstNode\n o: FunctionOverload[]\n}\n\nexport interface FnNode extends CommonSpecialExpressionNode<'fn'> {\n p: AstNode[]\n o: FunctionOverload[]\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n const { parseToken } = parsers\n let functionName\n ;[position, functionName] = parseToken(tokenStream, position)\n assertNameNode(functionName, functionName.debugData?.token.debugData?.sourceCodeInfo)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: functionName,\n p: [],\n o: functionOverloades,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n position + 1,\n node,\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defn', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.debugData?.token.debugData?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.debugData?.token.debugData?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n contextStack.globalContext[node.f.v] = { value: true }\n const newContext: Context = { [node.f.v]: { value: true } }\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const defnsSpecialExpression: BuiltinSpecialExpression<null, DefnsNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n const { parseToken } = parsers\n let functionName: AstNode\n ;[position, functionName] = parseToken(tokenStream, position)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefnsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defns',\n p: [],\n f: functionName,\n o: functionOverloades,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n position + 1,\n node,\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defns', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.debugData?.token.debugData?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.debugData?.token.debugData?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const name = evaluateAstNode(asAstNode(node.f, sourceCodeInfo), contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n const newContext = { [name]: { value: true } }\n\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: functionOverloades,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n position + 1,\n node,\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.debugData?.token.debugData?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: undefined,\n o: evaluatedFunctionOverloades,\n }\n\n return litsFunction\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) =>\n addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nfunction getFunctionName(\n expressionName: 'defn' | 'defns',\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): string {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n if (expressionName === 'defn')\n return ((node as DefnNode).f).v\n\n const name = evaluateAstNode((node as DefnsNode).f, contextStack)\n return asString(name, sourceCodeInfo)\n}\n\nfunction evaluateFunctionOverloades(\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): EvaluatedFunctionOverload[] {\n const evaluatedFunctionOverloades: EvaluatedFunctionOverload[] = []\n for (const functionOverload of (node as DefnNode | DefnsNode | FnNode).o) {\n const functionContext: Context = {}\n for (const binding of functionOverload.as.b) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, contextStack)\n functionContext[binding.n] = { value: bindingValue }\n }\n\n const evaluatedFunctionOverload: EvaluatedFunctionOverload = {\n as: {\n mandatoryArguments: functionOverload.as.m,\n restArgument: functionOverload.as.r,\n },\n a: functionOverload.a,\n b: functionOverload.b,\n f: functionContext,\n }\n\n evaluatedFunctionOverloades.push(evaluatedFunctionOverload)\n }\n return evaluatedFunctionOverloades\n}\n\nfunction addOverloadsUnresolvedIdentifiers(\n overloads: FunctionOverload[],\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n functionNameContext?: Context,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n for (const overload of overloads) {\n const newContext: Context = {}\n overload.as.b.forEach((binding) => {\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n addAnalyzeResults(result, bindingResult)\n newContext[binding.n] = { value: true }\n })\n overload.as.m.forEach((arg) => {\n newContext[arg] = { value: true }\n })\n if (typeof overload.as.r === 'string')\n newContext[overload.as.r] = { value: true }\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = findUnresolvedIdentifiers(overload.b, newContextStack, builtin)\n addAnalyzeResults(result, overloadResult)\n }\n return result\n}\n\nfunction arityOk(overloadedFunctions: FunctionOverload[], arity: Arity) {\n if (typeof arity === 'number') {\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a !== arity\n\n return fun.a.min > arity\n })\n }\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a < arity.min\n\n return false\n })\n}\n\nfunction parseFunctionBody(\n tokenStream: TokenStream,\n position: number,\n { parseToken }: ParserHelpers,\n): [number, AstNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const body: AstNode[] = []\n while (!(tkn.t === TokenType.Bracket && tkn.v === ')')) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n body.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n if (body.length === 0)\n throw new LitsError('Missing body in function', tkn.debugData?.sourceCodeInfo)\n\n return [position, body]\n}\n\nfunction parseFunctionOverloades(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, FunctionOverload[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket })\n if (tkn.v === '(') {\n const functionOverloades: FunctionOverload[] = []\n while (!(tkn.t === TokenType.Bracket && tkn.v === ')')) {\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let functionArguments: FunctionArguments\n ;[position, functionArguments] = parseFunctionArguments(tokenStream, position, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n\n if (!arityOk(functionOverloades, arity))\n throw new LitsError('All overloaded functions must have different arity', tkn.debugData?.sourceCodeInfo)\n\n let functionBody: AstNode[]\n ;[position, functionBody] = parseFunctionBody(tokenStream, position, parsers)\n functionOverloades.push({\n as: functionArguments,\n b: functionBody,\n a: arity,\n })\n\n tkn = asToken(tokenStream.tokens[position + 1], tokenStream.filePath, { type: TokenType.Bracket })\n if (tkn.v !== ')' && tkn.v !== '(')\n throw new LitsError(`Expected ( or ) token, got ${valueToString(tkn)}.`, tkn.debugData?.sourceCodeInfo)\n position += 1\n }\n\n return [position, functionOverloades]\n }\n else if (tkn.v === '[') {\n let functionArguments: FunctionArguments\n ;[position, functionArguments] = parseFunctionArguments(tokenStream, position, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n let functionBody: AstNode[]\n ;[position, functionBody] = parseFunctionBody(tokenStream, position, parsers)\n return [\n position,\n [\n {\n as: functionArguments,\n b: functionBody,\n a: arity,\n },\n ],\n ]\n }\n else {\n throw new LitsError(`Expected [ or ( token, got ${valueToString(tkn)}`, tkn.debugData?.sourceCodeInfo)\n }\n}\n\nfunction parseFunctionArguments(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, FunctionArguments] {\n const { parseArgument, parseBindings } = parsers\n\n let bindings: BindingNode[] = []\n let restArgument: string | undefined\n const mandatoryArguments: string[] = []\n let state: 'mandatory' | 'rest' | 'let' = 'mandatory'\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n if (state === 'let') {\n ;[position, bindings] = parseBindings(tokenStream, position)\n break\n }\n else {\n const [newPosition, node] = parseArgument(tokenStream, position)\n position = newPosition\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n if (node.t === AstNodeType.Modifier) {\n switch (node.v) {\n case '&':\n if (state === 'rest')\n throw new LitsError('& can only appear once', tkn.debugData?.sourceCodeInfo)\n\n state = 'rest'\n break\n case '&let':\n if (state === 'rest' && !restArgument)\n throw new LitsError('No rest argument was specified', tkn.debugData?.sourceCodeInfo)\n\n state = 'let'\n break\n default:\n throw new LitsError(`Illegal modifier: ${node.v}`, tkn.debugData?.sourceCodeInfo)\n }\n }\n else {\n switch (state) {\n case 'mandatory':\n mandatoryArguments.push(node.n)\n break\n case 'rest':\n if (restArgument !== undefined)\n throw new LitsError('Can only specify one rest argument', tkn.debugData?.sourceCodeInfo)\n\n restArgument = node.n\n break\n }\n }\n }\n }\n\n if (state === 'rest' && restArgument === undefined)\n throw new LitsError('Missing rest argument name', tkn.debugData?.sourceCodeInfo)\n\n position += 1\n\n const args: FunctionArguments = {\n m: mandatoryArguments,\n r: restArgument,\n b: bindings,\n }\n\n return [position, args]\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfNode extends CommonSpecialExpressionNode<'if'> {}\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: IfNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 2, max: 3 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode, NormalExpressionNode } from '../../parser/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode, asNormalExpressionNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfLetNode extends CommonSpecialExpressionNode<'if-let'> {\n b: BindingNode\n debugData: CommonSpecialExpressionNode<'let'>['debugData'] & ({\n bindingArray: NormalExpressionNode\n } | undefined)\n}\n\nexport const ifLetSpecialExpression: BuiltinSpecialExpression<Any, IfLetNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket, parseToken }) => {\n const bindingArray = firstToken.debugData?.sourceCodeInfo ? asNormalExpressionNode(parseToken(tokenStream, position)[1]) : undefined\n\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.debugData?.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: IfLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-let',\n b: asNonUndefined(bindings[0], firstToken.debugData?.sourceCodeInfo),\n p: params,\n debugData: firstToken.debugData?.sourceCodeInfo && bindingArray && {\n token: firstToken,\n lastToken,\n bindingArray,\n },\n }\n\n assertNumberOfParams({ min: 1, max: 2 }, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const locals: Context = {}\n const bindingValue = evaluateAstNode(node.b.v, contextStack)\n if (bindingValue) {\n locals[node.b.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n const thenForm = asAstNode(node.p[0], sourceCodeInfo)\n return evaluateAstNode(thenForm, newContextStack)\n }\n if (node.p.length === 2) {\n const elseForm = asAstNode(node.p[1], sourceCodeInfo)\n return evaluateAstNode(elseForm, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext: Context = { [node.b.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([node.b.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfNotNode extends CommonSpecialExpressionNode<'if-not'> {}\n\nexport const ifNotSpecialExpression: BuiltinSpecialExpression<Any, IfNotNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: IfNotNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-not',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 2, max: 3 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (!evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode, NormalExpressionNode } from '../../parser/interface'\nimport { asNormalExpressionNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LetNode extends CommonSpecialExpressionNode<'let'> {\n bs: BindingNode[]\n debugData: CommonSpecialExpressionNode<'let'>['debugData'] & ({\n bindingArray: NormalExpressionNode\n } | undefined)\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket, parseToken }) => {\n const bindingArray = firstToken.debugData?.sourceCodeInfo && asNormalExpressionNode(parseToken(tokenStream, position)[1])\n\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: params,\n bs: bindings,\n debugData: firstToken.debugData?.sourceCodeInfo && bindingArray && {\n token: firstToken,\n lastToken,\n bindingArray,\n },\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const newContextStack = contextStack.create(locals)\n for (const binding of node.bs) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, newContextStack)\n locals[binding.n] = { value: bindingValue }\n }\n\n let result: Any = null\n for (const astNode of node.p)\n result = evaluateAstNode(astNode, newContextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n const bindingContext: Context = {}\n const bindingResults = node.bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = findUnresolvedIdentifiers([valueNode], contextStack.create(bindingContext), builtin)\n bindingContext[bindingNode.n] = { value: true }\n return bindingsResult\n })\n\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(...bindingResults, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny } from '../../typeGuards/lits'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LoopNode extends CommonSpecialExpressionNode<'loop'> {\n bs: BindingNode[]\n}\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket, parseBindings }) => {\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LoopNode = {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindings,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const bindingContext: Context = node.bs.reduce((result: Context, binding) => {\n result[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n for (;;) {\n let result: Any = null\n try {\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== node.bs.length) {\n throw new LitsError(\n `recur expected ${node.bs.length} parameters, got ${valueToString(params.length)}`,\n sourceCodeInfo,\n )\n }\n ;node.bs.forEach((binding, index) => {\n asNonUndefined(bindingContext[binding.n], sourceCodeInfo).value = asAny(params[index], sourceCodeInfo)\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n\n const bindingValueNodes = node.bs.map(binding => binding.v)\n const bindingsResult = findUnresolvedIdentifiers(bindingValueNodes, contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingsResult, paramsResult)\n },\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { SourceCodeInfo, TokenStream } from '../../tokenizer/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport { asToken, assertToken, isToken } from '../../typeGuards/token'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\n\nexport interface ForNode extends CommonSpecialExpressionNode<'for'> {\n l: LoopBindingNode[]\n}\n\nexport interface DoSeqNode extends CommonSpecialExpressionNode<'doseq'> {\n l: LoopBindingNode[]\n}\n\ntype LoopNode = ForNode | DoSeqNode\n\nexport interface LoopBindingNode {\n b: BindingNode // Binding\n m: Array<'&let' | '&when' | '&while'> // Modifiers\n l?: BindingNode[] // Let-Bindings\n wn?: AstNode // When Node\n we?: AstNode // While Node\n}\n\nfunction parseLoopBinding(\n tokenStream: TokenStream,\n position: number,\n { parseBinding, parseBindings, parseToken }: ParserHelpers,\n): [number, LoopBindingNode] {\n let bindingNode: BindingNode\n ;[position, bindingNode] = parseBinding(tokenStream, position)\n\n const loopBinding: LoopBindingNode = {\n b: bindingNode,\n m: [],\n }\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (tkn.t === TokenType.Modifier) {\n switch (tkn.v) {\n case '&let':\n if (loopBinding.l) {\n throw new LitsError('Only one &let modifier allowed', tkn.debugData?.sourceCodeInfo)\n }\n ;[position, loopBinding.l] = parseBindings(tokenStream, position + 1)\n loopBinding.m.push('&let')\n break\n case '&when':\n if (loopBinding.wn) {\n throw new LitsError('Only one &when modifier allowed', tkn.debugData?.sourceCodeInfo)\n }\n ;[position, loopBinding.wn] = parseToken(tokenStream, position + 1)\n loopBinding.m.push('&when')\n break\n case '&while':\n if (loopBinding.we) {\n throw new LitsError('Only one &while modifier allowed', tkn.debugData?.sourceCodeInfo)\n }\n ;[position, loopBinding.we] = parseToken(tokenStream, position + 1)\n loopBinding.m.push('&while')\n break\n default:\n throw new LitsError(`Illegal modifier: ${tkn.v}`, tkn.debugData?.sourceCodeInfo)\n }\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, loopBinding]\n}\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n for (const binding of bindings) {\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n }\n}\n\nfunction parseLoopBindings(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, LoopBindingNode[]] {\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '[' })\n position += 1\n\n const loopBindings: LoopBindingNode[] = []\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!isToken(tkn, { type: TokenType.Bracket, value: ']' })) {\n let loopBinding: LoopBindingNode\n ;[position, loopBinding] = parseLoopBinding(tokenStream, position, parsers)\n loopBindings.push(loopBinding)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position + 1, loopBindings]\n}\nfunction evaluateLoop(\n returnResult: boolean,\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n) {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const { l: loopBindings, p: params } = node as LoopNode\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const {\n b: binding,\n l: letBindings,\n wn: whenNode,\n we: whileNode,\n m: modifiers,\n } = asNonUndefined(loopBindings[bindingIndex], sourceCodeInfo)\n const coll = asColl(evaluateAstNode(binding.v, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = {\n value: asAny(seq[index], sourceCodeInfo),\n }\n for (const modifier of modifiers) {\n switch (modifier) {\n case '&let':\n addToContext(\n asNonUndefined(letBindings, sourceCodeInfo),\n context,\n newContextStack,\n evaluateAstNode,\n sourceCodeInfo,\n )\n break\n case '&when':\n if (!evaluateAstNode(asAstNode(whenNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n break\n case '&while':\n if (!evaluateAstNode(asAstNode(whileNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n break\n }\n }\n }\n if (!skip) {\n const value = evaluateAstNode(params[0]!, newContextStack)\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n return returnResult ? result : null\n}\n\nfunction analyze(\n node: LoopNode,\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const newContext: Context = {}\n const { l: loopBindings } = node\n loopBindings.forEach((loopBinding) => {\n const { b: binding, l: letBindings, wn: whenNode, we: whileNode } = loopBinding\n findUnresolvedIdentifiers([binding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[binding.n] = { value: true }\n if (letBindings) {\n letBindings.forEach((letBinding) => {\n findUnresolvedIdentifiers([letBinding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[letBinding.n] = { value: true }\n })\n }\n if (whenNode) {\n findUnresolvedIdentifiers([whenNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n findUnresolvedIdentifiers([whileNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: ForNode = {\n n: 'for',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateAstNode),\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DoSeqNode = {\n n: 'doseq',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateAstNode)\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface OrNode extends CommonSpecialExpressionNode<'or'> {}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: OrNode = {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = false\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { isNameNode } from '../../typeGuards/astNode'\nimport { assertAny } from '../../typeGuards/lits'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface QqNode extends CommonSpecialExpressionNode<'??'> {}\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: QqNode = {\n t: AstNodeType.SpecialExpression,\n n: '??',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 1, max: 2 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [firstNode, secondNode] = node.p\n\n if (isNameNode(firstNode)) {\n if (contextStack.lookUp(firstNode) === null)\n return secondNode ? evaluateAstNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, node.debugData?.token.debugData?.sourceCodeInfo)\n const firstResult = evaluateAstNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateAstNode(secondNode, contextStack) : null)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport { RecurSignal } from '../../errors'\nimport type { AstNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface RecurNode extends CommonSpecialExpressionNode<'recur'> {}\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: RecurNode = {\n t: AstNodeType.SpecialExpression,\n n: 'recur',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n throw new RecurSignal(params)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport { UserDefinedError } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asString } from '../../typeGuards/string'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface ThrowNode extends CommonSpecialExpressionNode<'throw'> {}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n position = newPosition\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: ThrowNode = {\n t: AstNodeType.SpecialExpression,\n n: 'throw',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const message = asString(evaluateAstNode(node.p[0]!, contextStack), node.debugData?.token.debugData?.sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node.debugData?.token.debugData?.sourceCodeInfo)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TimeNode extends CommonSpecialExpressionNode<'time!'> {}\n\nexport const timeSpecialExpression: BuiltinSpecialExpression<Any, TimeNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: TimeNode = {\n t: AstNodeType.SpecialExpression,\n n: 'time!',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const param = node.p[0]!\n const startTime = Date.now()\n const result = evaluateAstNode(param, contextStack)\n const totalTime = Date.now() - startTime\n // eslint-disable-next-line no-console\n console.log(`Elapsed time: ${totalTime} ms`)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, CommonSpecialExpressionNode, NameNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport { getSourceCodeInfo } from '../../utils/debug/getSourceCodeInfo'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TryNode extends CommonSpecialExpressionNode<'try'> {\n e: NameNode\n ce: AstNode\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n parse: (tokenStream, position, firstToken, { parseToken }) => {\n let tryExpression: AstNode\n ;[position, tryExpression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '(' })\n position += 1\n\n let catchNode: AstNode\n ;[position, catchNode] = parseToken(tokenStream, position)\n assertNameNode(catchNode, catchNode.debugData?.token.debugData?.sourceCodeInfo)\n if (catchNode.v !== 'catch') {\n throw new LitsError(\n `Expected 'catch', got '${catchNode.v}'.`,\n getSourceCodeInfo(catchNode, catchNode.debugData?.token.debugData?.sourceCodeInfo),\n )\n }\n\n let error: AstNode\n ;[position, error] = parseToken(tokenStream, position)\n assertNameNode(error, error.debugData?.token.debugData?.sourceCodeInfo)\n\n let catchExpression: AstNode\n ;[position, catchExpression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: TryNode = {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [tryExpression],\n ce: catchExpression,\n e: error,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n try {\n return evaluateAstNode(tryExpressions[0]!, contextStack)\n }\n catch (error) {\n const newContext: Context = {\n [errorNode.v]: { value: asAny(error, node.debugData?.token.debugData?.sourceCodeInfo) },\n }\n return evaluateAstNode(catchExpression, contextStack.create(newContext))\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n const tryResult = findUnresolvedIdentifiers(tryExpressions, contextStack, builtin)\n const newContext: Context = {\n [errorNode.v]: { value: true },\n }\n const catchResult = findUnresolvedIdentifiers([catchExpression], contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenNode extends CommonSpecialExpressionNode<'when'> {}\n\nexport const whenSpecialExpression: BuiltinSpecialExpression<Any, WhenNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 1 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.debugData?.token.debugData?.sourceCodeInfo)\n\n if (!evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { isSeq } from '../../typeGuards/lits'\nimport { asToken } from '../../typeGuards/token'\nimport { toAny } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenFirstNode extends CommonSpecialExpressionNode<'when-first'> {\n b: BindingNode\n}\n\nexport const whenFirstSpecialExpression: BuiltinSpecialExpression<Any, WhenFirstNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.debugData?.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenFirstNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-first',\n b: asNonUndefined(bindings[0], firstToken.debugData?.sourceCodeInfo),\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const { b: binding } = node\n const evaluatedBindingForm = evaluateAstNode(binding.v, contextStack)\n if (!isSeq(evaluatedBindingForm)) {\n throw new LitsError(\n `Expected undefined or a sequence, got ${valueToString(evaluatedBindingForm)}`,\n node.debugData?.token.debugData?.sourceCodeInfo,\n )\n }\n\n if (evaluatedBindingForm.length === 0)\n return null\n\n const bindingValue = toAny(evaluatedBindingForm[0])\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenLetNode extends CommonSpecialExpressionNode<'when-let'> {\n b: BindingNode\n}\n\nexport const whenLetSpecialExpression: BuiltinSpecialExpression<Any, WhenLetNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.debugData?.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-let',\n b: asNonUndefined(bindings[0], firstToken.debugData?.sourceCodeInfo),\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { b: binding } = node\n const locals: Context = {}\n const bindingValue = evaluateAstNode(binding.v, contextStack)\n if (!bindingValue)\n return null\n\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenNotNode extends CommonSpecialExpressionNode<'when-not'> {}\n\nexport const whenNotSpecialExpression: BuiltinSpecialExpression<Any, WhenNotNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenNotNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-not',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 1 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.debugData?.token.debugData?.sourceCodeInfo)\n\n if (evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Builtin } from './interface'\nimport { normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { commentSpecialExpression } from './specialExpressions/comment'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { declaredSpecialExpression } from './specialExpressions/declared'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { defsSpecialExpression } from './specialExpressions/defs'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, defnsSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { ifLetSpecialExpression } from './specialExpressions/if-let'\nimport { ifNotSpecialExpression } from './specialExpressions/if-not'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { timeSpecialExpression } from './specialExpressions/time'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { whenSpecialExpression } from './specialExpressions/when'\nimport { whenFirstSpecialExpression } from './specialExpressions/when-first'\nimport { whenLetSpecialExpression } from './specialExpressions/when-let'\nimport { whenNotSpecialExpression } from './specialExpressions/when-not'\n\nconst specialExpressions = {\n 'and': andSpecialExpression,\n 'comment': commentSpecialExpression,\n 'cond': condSpecialExpression,\n 'def': defSpecialExpression,\n 'defn': defnSpecialExpression,\n 'defns': defnsSpecialExpression,\n 'defs': defsSpecialExpression,\n 'do': doSpecialExpression,\n 'doseq': doseqSpecialExpression,\n 'for': forSpecialExpression,\n 'fn': fnSpecialExpression,\n 'if': ifSpecialExpression,\n 'if-let': ifLetSpecialExpression,\n 'if-not': ifNotSpecialExpression,\n 'let': letSpecialExpression,\n 'loop': loopSpecialExpression,\n 'or': orSpecialExpression,\n 'recur': recurSpecialExpression,\n 'throw': throwSpecialExpression,\n 'time!': timeSpecialExpression,\n 'try': trySpecialExpression,\n 'when': whenSpecialExpression,\n 'when-first': whenFirstSpecialExpression,\n 'when-let': whenLetSpecialExpression,\n 'when-not': whenNotSpecialExpression,\n 'declared?': declaredSpecialExpression,\n '??': qqSpecialExpression,\n} as const\n\nexport type SpecialExpressionName = keyof typeof specialExpressions\nexport type BuiltinSpecialExpressions = typeof specialExpressions\nexport type BuiltinSpecialExpression = typeof specialExpressions[SpecialExpressionName]\nexport type SpecialExpressionNode = ReturnType<typeof specialExpressions[SpecialExpressionName]['parse']>[1]\n\nObject.keys(specialExpressions).forEach((key) => {\n /* v8 ignore next 2 */\n if (normalExpressions[key])\n throw new Error(`Expression ${key} is defined as both a normal expression and a special expression`)\n})\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressions)\n","import type { Any, Arr } from '../interface'\nimport type { AstNode, BuiltinFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateAstNode = (node: AstNode, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | BuiltinFunction | 'specialExpression' | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import type { BuiltinFunction, ExtraData, NameNode, NativeJsFunction } from '../parser/interface'\nimport type { SpecialExpressionName } from '../builtin'\nimport { builtin, normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { toAny } from '../utils'\nimport type { Any } from '../interface'\nimport { UndefinedSymbolError } from '../errors'\nimport type { LazyValue, LitsParams } from '../Lits/Lits'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { asNonUndefined } from '../typeGuards'\nimport { isBuiltinFunction } from '../typeGuards/litsFunction'\nimport { isContextEntry } from './interface'\nimport type { Context, LookUpResult } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.contexts = contexts\n this.globalContext = asNonUndefined(contexts[0])\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context, extraData?: ExtraData): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStackImpl({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: extraData ? { ...this.lazyValues, ...extraData } : this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public clone(): ContextStack {\n // eslint-disable-next-line ts/no-unsafe-argument\n return new ContextStackImpl(JSON.parse(JSON.stringify({\n contexts: this.contexts,\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })))\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: NameNode): LookUpResult {\n const value = node.v\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n if (builtin.normalExpressions[value]) {\n const builtinFunction: BuiltinFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Builtin,\n n: value,\n }\n return builtinFunction\n }\n\n if (builtin.specialExpressions[value as SpecialExpressionName])\n return 'specialExpression'\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateName(node: NameNode): Any {\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n else if (isBuiltinFunction(lookUpResult))\n return lookUpResult\n\n throw new UndefinedSymbolError(node.v, node.debugData?.token.debugData?.sourceCodeInfo)\n }\n}\n\nexport function createContextStack(params: LitsParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n t: FunctionType.NativeJsFunction,\n f: jsFunction,\n n: name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack\n}\n","import { normalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n BuiltinFunction,\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunctionOverload,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n PartialFunction,\n SomePredFunction,\n UserDefinedFunction,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { FunctionType } from '../constants/constants'\nimport { asString } from '../typeGuards/string'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport type { Context, EvaluateAstNode, ExecuteFunction } from './interface'\nimport type { ContextStack } from './ContextStack'\n\ntype FunctionExecutors = Record<\n LitsFunctionType,\n (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateAstNode: EvaluateAstNode, executeFunction: ExecuteFunction },\n ) => Any\n>\n\nfunction findOverloadFunction(\n overloads: EvaluatedFunctionOverload[],\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n): EvaluatedFunctionOverload {\n const overloadFunction = overloads.find((overload) => {\n const arity = overload.a\n if (typeof arity === 'number')\n return arity === nbrOfParams\n else\n return arity.min <= nbrOfParams\n })\n if (!overloadFunction)\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n\n return overloadFunction\n}\n\nexport const functionExecutors: FunctionExecutors = {\n [FunctionType.NativeJsFunction]: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.f.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n [FunctionType.UserDefined]: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateAstNode }) => {\n for (;;) {\n const overloadFunction = findOverloadFunction(fn.o, params.length, sourceCodeInfo)\n const args = overloadFunction.as\n const nbrOfMandatoryArgs: number = args.mandatoryArguments.length\n\n const newContext: Context = { ...overloadFunction.f }\n\n const length = Math.max(params.length, args.mandatoryArguments.length)\n const rest: Arr = []\n for (let i = 0; i < length; i += 1) {\n if (i < nbrOfMandatoryArgs) {\n const param = toAny(params[i])\n const key = asString(args.mandatoryArguments[i], sourceCodeInfo)\n newContext[key] = { value: param }\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n if (args.restArgument)\n newContext[args.restArgument] = { value: rest }\n\n try {\n let result: Any = null\n const newContextStack = contextStack.create(newContext, fn.x)\n for (const node of overloadFunction.b)\n result = evaluateAstNode(node, newContextStack)\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n [FunctionType.Partial]: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.f, [...fn.p, ...params], contextStack, sourceCodeInfo)\n },\n [FunctionType.Comp]: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(toAny(fun), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n [FunctionType.Constantly]: (fn: ConstantlyFunction) => {\n return fn.v\n },\n [FunctionType.Juxt]: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.f.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n [FunctionType.Complement]: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.f, params, contextStack, sourceCodeInfo)\n },\n [FunctionType.EveryPred]: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n [FunctionType.SomePred]: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n [FunctionType.Fnil]: (fn: FNilFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fniledParams = params.map((param, index) => (param === null ? toAny(fn.p[index]) : param))\n return executeFunction(toAny(fn.f), fniledParams, contextStack, sourceCodeInfo)\n },\n [FunctionType.Builtin]: (fn: BuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(normalExpressions[fn.n], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n}\n","import type {\n Ast,\n AstNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ReservedNameNode,\n StringNode,\n} from '../parser/interface'\nimport type { SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport { reservedNamesRecord } from '../reservedNames'\nimport { toAny } from '../utils'\nimport type { Any, Arr, Obj } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { isNormalExpressionNodeWithName } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { asNonUndefined } from '../typeGuards'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { assertString } from '../typeGuards/string'\nimport { removeCommenNodes } from '../removeCommentNodes'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n const safeAstNode = ast.hasDebugData ? JSON.parse(JSON.stringify(ast)) as Ast : ast\n if (safeAstNode.hasDebugData)\n removeCommenNodes(safeAstNode)\n for (const node of safeAstNode.b)\n result = evaluateAstNode(node, contextStack)\n\n return result\n}\n\nexport function evaluateAstNode(node: AstNode, contextStack: ContextStack): Any {\n switch (node.t) {\n case AstNodeType.Number:\n return evaluateNumber(node)\n case AstNodeType.String:\n return evaluateString(node)\n case AstNodeType.Name:\n return contextStack.evaluateName(node)\n case AstNodeType.ReservedName:\n return evaluateReservedName(node)\n case AstNodeType.NormalExpression:\n return evaluateNormalExpression(node, contextStack)\n case AstNodeType.SpecialExpression:\n return evaluateSpecialExpression(node, contextStack)\n default:\n throw new LitsError(`${node.t}-node cannot be evaluated`, node.debugData?.token.debugData?.sourceCodeInfo)\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node.v\n}\n\nfunction evaluateString(node: StringNode): string {\n return node.v\n}\n\nfunction evaluateReservedName(node: ReservedNameNode): Any {\n return asNonUndefined(reservedNamesRecord[node.v], node.debugData?.token.debugData?.sourceCodeInfo).value\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n if (isNormalExpressionNodeWithName(node)) {\n const value = contextStack.getValue(node.n)\n if (value !== undefined)\n return executeFunction(asAny(value), params, contextStack, sourceCodeInfo)\n\n return evaluateBuiltinNormalExpression(node, params, contextStack)\n }\n else {\n const fn = params[0]!\n return executeFunction(fn, params.slice(1), contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.t](fn, params, sourceCodeInfo, contextStack, { evaluateAstNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn))\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n\n throw new NotAFunctionError(fn, sourceCodeInfo)\n}\n\nfunction evaluateBuiltinNormalExpression(\n node: NormalExpressionNodeWithName,\n params: Arr,\n contextStack: ContextStack,\n): Any {\n const normalExpression = builtin.normalExpressions[node.n]\n if (!normalExpression)\n throw new UndefinedSymbolError(node.n, node.debugData?.token.debugData?.sourceCodeInfo)\n\n return normalExpression.evaluate(params, node.debugData?.token.debugData?.sourceCodeInfo, contextStack, { executeFunction })\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpression = asNonUndefined(builtin.specialExpressions[node.n], node.debugData?.token.debugData?.sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpression.evaluate(node as any, contextStack, { evaluateAstNode, builtin })\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Builtin } from '../builtin/interface'\nimport { AstNodeType } from '../constants/constants'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode } from '../parser/interface'\nimport { asNonUndefined } from '../typeGuards'\nimport { evaluateAstNode } from '../evaluator'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport const findUnresolvedIdentifiers: FindUnresolvedIdentifiers = (ast, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(ast) ? ast : ast.b\n\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n\n for (const subNode of astNodes) {\n findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n .forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n\n return unresolvedIdentifiers\n}\n\nfunction findUnresolvedIdentifiersInAstNode(astNode: AstNode, contextStack: ContextStack, builtin: Builtin): UnresolvedIdentifiers {\n const emptySet = new Set<UnresolvedIdentifier>()\n switch (astNode.t) {\n case AstNodeType.Name: {\n const lookUpResult = contextStack.lookUp(astNode)\n if (lookUpResult === null)\n return new Set([{ symbol: astNode.v, token: astNode.debugData?.token }])\n\n return emptySet\n }\n case AstNodeType.String:\n case AstNodeType.Number:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedName:\n case AstNodeType.Comment:\n return emptySet\n case AstNodeType.NormalExpression: {\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n const { n: name, debugData: debug } = astNode\n if (typeof name === 'string') {\n const lookUpResult = contextStack.lookUp({ t: AstNodeType.Name, v: name, debugData: debug, p: [], n: undefined })\n if (lookUpResult === null)\n unresolvedIdentifiers.add({ symbol: name, token: astNode.debugData?.token })\n }\n for (const subNode of astNode.p) {\n const innerUnresolvedIdentifiers = findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n innerUnresolvedIdentifiers.forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n return unresolvedIdentifiers\n }\n case AstNodeType.SpecialExpression: {\n const specialExpression = asNonUndefined(builtin.specialExpressions[astNode.n], astNode.debugData?.token.debugData?.sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-argument\n const unresolvedIdentifiers = specialExpression.findUnresolvedIdentifiers(astNode as any, contextStack, {\n findUnresolvedIdentifiers,\n builtin,\n evaluateAstNode,\n })\n return unresolvedIdentifiers\n }\n }\n}\n","import type { AndNode } from '../../builtin/specialExpressions/and'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateAndOutcomes: CalculatePossibleAstNodesHelper<AndNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<AndNode>(p => ({\n n: 'and',\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }))\n}\n","import type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { AstNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport { arrayToPairs } from '../../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCondOutcomes: CalculatePossibleAstNodesHelper<CondNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n isAstComputable,\n}) => {\n const testNodes = arrayToPairs(astNode.p).map(([t]) => t!)\n if (isAstComputable(testNodes)) {\n return combinate(arrayToPairs(astNode.p)\n // Create a list of ast nodes from the test and form of each condition\n .reduce((acc: AstNode[][], [test, form]) => {\n acc.push(calculatePossibleAstNodes(test!), calculatePossibleAstNodes(form!))\n return acc\n }, []),\n )\n // Create a new CondNode for each combination of test and form outcomes\n .map<CondNode>(conditionAsts => ({\n ...astNode,\n c: arrayToPairs(conditionAsts).map(([t, f]) => ({ t: t!, f: f! })),\n }))\n }\n\n return [\n ...arrayToPairs(astNode.p).flatMap(([_, form]) => calculatePossibleAstNodes(form!)),\n nilNode,\n ]\n}\n","import type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { AstNode } from '../../parser/interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nconst trueNode: AstNode = { t: AstNodeType.ReservedName, v: 'true', debugData: undefined, p: [], n: undefined }\nconst falseNode: AstNode = { t: AstNodeType.ReservedName, v: 'false', debugData: undefined, p: [], n: undefined }\n\nexport const calculateDeclaredOutcomes: CalculatePossibleAstNodesHelper<DeclaredNode> = (\n {\n astNode,\n isAstComputable,\n },\n) => {\n if (isAstComputable(astNode.p))\n return [trueNode]\n\n return [trueNode, falseNode]\n}\n","import type { DefNode } from '../../builtin/specialExpressions/def'\nimport { asNameNode } from '../../typeGuards/astNode'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefOutcomes: CalculatePossibleAstNodesHelper<DefNode> = ({\n astNode,\n calculatePossibleAstNodes,\n addGlobalIdentifier,\n}) => {\n const nameNode = asNameNode(astNode.p[0])\n const valueNode = astNode.p[1]!\n addGlobalIdentifier(nameNode.v)\n return calculatePossibleAstNodes(valueNode)\n .map<DefNode>(node => ({\n ...astNode,\n p: [nameNode, node],\n }))\n}\n","import type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefsOutcomes: CalculatePossibleAstNodesHelper<DefsNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<DefsNode>(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDoOutcomes: CalculatePossibleAstNodesHelper<DoNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p).map<DoNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { FunctionOverload } from '../../builtin/utils'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper, CombinateAstNodes } from '.'\n\nfunction calculateFunctionOverloadOutcomes(combinateAstNodes: CombinateAstNodes, functionOverloads: FunctionOverload[]) {\n return combinate(functionOverloads\n // For each overload, calculate the possible outcomes for each parameter\n .map<FunctionOverload[]>(functionOverload =>\n combinateAstNodes(functionOverload.b, [\n functionOverload.as.m,\n functionOverload.as.b.map(bindingNode => bindingNode.n),\n functionOverload.as.r ?? [],\n ].flat())\n\n // For each combination of parameter outcomes, create a new overload\n .map<FunctionOverload>(body => ({\n ...functionOverload,\n b: body,\n })),\n ),\n // For each combination of overloads, create a new DefnNode\n )\n}\n\nexport const calculateDefnOutcomes: CalculatePossibleAstNodesHelper<DefnNode> = ({\n astNode,\n combinateAstNodes,\n addGlobalIdentifier,\n}) => {\n addGlobalIdentifier(astNode.f.v)\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n\nexport const calculateDefnsOutcomes: CalculatePossibleAstNodesHelper<DefnsNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculatePossibleAstNodes(astNode.f).flatMap(functionName =>\n calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnsNode>(functionOverloads => ({\n ...astNode,\n f: functionName,\n o: functionOverloads,\n })),\n )\n}\n\nexport const calculateFnOutcomes: CalculatePossibleAstNodesHelper<FnNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<FnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n","import type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfLetOutcomes: CalculatePossibleAstNodesHelper<IfLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n const thenBranch = astNode.p[0]!\n const elseBranch = astNode.p[1] ?? nilNode\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap<IfLetNode>(b => combinateAstNodes(astNode.p, [newIdentifier])\n .map<IfLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfNotOutcomes: CalculatePossibleAstNodesHelper<IfNotNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if-not',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfOutcomes: CalculatePossibleAstNodesHelper<IfNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { BindingNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLetOutcomes: CalculatePossibleAstNodesHelper<LetNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n try {\n // check bindings, if any binding value cannot be calculated, convert the whole let to a do-expression\n if (!isAstComputable(astNode.bs.map(b => calculatePossibleAstNodes(b.v))))\n throw new Error('Could not calculate binding value')\n }\n catch {\n const doNodes: DoNode[] = combinateAstNodes(astNode.p)\n .map((p) => {\n return {\n n: 'do',\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }\n })\n return doNodes\n }\n\n const newIdentifiers = astNode.bs.map(bindingNode => bindingNode.n)\n const letNodes: LetNode[] = combinate(\n astNode.bs.map<BindingNode[]>(bindingNode =>\n calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValues => ({ ...bindingNode, v: bindingValues })),\n ),\n )\n .flatMap(bindingNodes => combinate(astNode.p.map(p => calculatePossibleAstNodes(p, newIdentifiers)))\n .map((p) => {\n return {\n n: 'let',\n bs: bindingNodes,\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }\n }))\n\n return letNodes\n}\n","import type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodes, CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateForOutcomes: CalculatePossibleAstNodesHelper<ForNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate for loop, not deterministic')\n\n return [astNode]\n}\n\nexport const calculateDoSeqOutcomes: CalculatePossibleAstNodesHelper<DoSeqNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate doSeq node, not deterministic')\n\n return [astNode]\n}\n\nfunction isDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: ForNode | DoSeqNode): boolean {\n for (const { b, l, wn, we } of astNode.l) {\n if (l && l.some(({ v }) => !astIsDeterministic(calculatePossibleAstNodes, v)))\n return false\n\n if (!astIsDeterministic(calculatePossibleAstNodes, b.v))\n return false\n\n if (wn && !astIsDeterministic(calculatePossibleAstNodes, wn))\n return false\n\n if (we && !astIsDeterministic(calculatePossibleAstNodes, we))\n return false\n }\n\n if (!astIsDeterministic(calculatePossibleAstNodes, astNode.p[0]!))\n return false\n\n return true\n}\n\nfunction astIsDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: AstNode) {\n return calculatePossibleAstNodes(astNode).length === 1\n}\n","import type { OrNode } from '../../builtin/specialExpressions/or'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateOrOutcomes: CalculatePossibleAstNodesHelper<OrNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<OrNode>(p => ({\n n: 'or',\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }))\n}\n","import type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateQqOutcomes: CalculatePossibleAstNodesHelper<QqNode> = ({\n astNode,\n combinateAstNodes,\n isAstComputable,\n}) => {\n if (!isAstComputable(astNode.p[0]!))\n throw new Error('First argument of ?? not computable')\n\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateThrowOutcomes: CalculatePossibleAstNodesHelper<ThrowNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!).map<ThrowNode>(m => ({\n ...astNode,\n p: [m],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTimeOutcomes: CalculatePossibleAstNodesHelper<TimeNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!)\n .map<DoNode>(p => ({\n ...astNode,\n n: 'do',\n p: [p],\n }))\n}\n","import type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { AstNode } from '../../parser/interface'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTryOutcomes: CalculatePossibleAstNodesHelper<TryNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n const { vals, throws } = calculatePossibleAstNodes(astNode.p[0]!).reduce((acc: { vals: AstNode[], throws: AstNode[] }, node) => {\n if (node.n === 'throw') {\n acc.throws.push((node as ThrowNode).p[0]!)\n }\n else {\n acc.vals.push(node)\n }\n return acc\n }, { vals: [], throws: [] })\n\n const catches = throws.flatMap<AstNode>((throwNode) => {\n const letNode: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n bs: [{\n t: AstNodeType.Binding,\n n: astNode.e.v,\n v: throwNode,\n debugData: undefined,\n p: [],\n }],\n p: [astNode.ce],\n debugData: undefined,\n }\n return calculatePossibleAstNodes(letNode)\n })\n\n return [\n ...vals,\n ...catches,\n ]\n}\n","import type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenFirstOutcomes: CalculatePossibleAstNodesHelper<WhenFirstNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v))\n throw new Error('Could not calculate binding value')\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenFirstNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenLetOutcomes: CalculatePossibleAstNodesHelper<WhenLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...combinateAstNodes(astNode.p)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n })),\n nilNode,\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenNotOutcomes: CalculatePossibleAstNodesHelper<WhenNotNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map<WhenNotNode>(p => ({\n n: 'when-not',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n })),\n nilNode,\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenOutcomes: CalculatePossibleAstNodesHelper<WhenNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'when',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n })),\n nilNode,\n ]\n}\n","import type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateRecurOutcomes: CalculatePossibleAstNodesHelper<RecurNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCommentOutcomes: CalculatePossibleAstNodesHelper<CommentExpressionNode> = ({\n nilNode,\n}) => {\n return [nilNode]\n}\n","import type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLoopOutcomes: CalculatePossibleAstNodesHelper<LoopNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p, astNode.bs.map(bindingNode => bindingNode.n))\n .map<LoopNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { SpecialExpressionName } from '../../builtin'\nimport type { AndNode } from '../../builtin/specialExpressions/and'\nimport type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { DefNode } from '../../builtin/specialExpressions/def'\nimport type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { OrNode } from '../../builtin/specialExpressions/or'\nimport type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { AstNode } from '../../parser/interface'\nimport { calculateAndOutcomes } from './calculateAndOutcomes'\nimport { calculateCondOutcomes } from './calculateCondOutcomes'\nimport { calculateDeclaredOutcomes } from './calculateDeclaredOutcomes'\nimport { calculateDefOutcomes } from './calculateDefOutcomes'\nimport { calculateDefsOutcomes } from './calculateDefsOutcomes'\nimport { calculateDoOutcomes } from './calculateDoOutcomes'\nimport { calculateDefnOutcomes, calculateDefnsOutcomes, calculateFnOutcomes } from './calculateFunctionOutcomes'\nimport { calculateIfLetOutcomes } from './calculateIfLetOutcomes'\nimport { calculateIfNotOutcomes } from './calculateIfNotOutcomes'\nimport { calculateIfOutcomes } from './calculateIfOutcomes'\nimport { calculateLetOutcomes } from './calculateLetOutcomes'\nimport { calculateDoSeqOutcomes, calculateForOutcomes } from './calculateLoopsOutcomes'\nimport { calculateOrOutcomes } from './calculateOrOutcomes'\nimport { calculateQqOutcomes } from './calculateQqOutcomes'\nimport { calculateThrowOutcomes } from './calculateThrowOutcomes'\nimport { calculateTimeOutcomes } from './calculateTimeOutcomes'\nimport { calculateTryOutcomes } from './calculateTryOutcomes'\nimport { calculateWhenFirstOutcomes } from './calculateWhenFirstOutcomes'\nimport { calculateWhenLetOutcomes } from './calculateWhenLetOutcomes'\nimport { calculateWhenNotOutcomes } from './calculateWhenNotOutcomes'\nimport { calculateWhenOutcomes } from './calculateWhenOutcomes'\nimport { calculateRecurOutcomes } from './calculateRecurOutcomes'\nimport { calculateCommentOutcomes } from './calculateCommentOutcomes'\nimport { calculateLoopOutcomes } from './calculateLoopOutcomes'\nimport type { CalculatePossibleAstNodesHelperOptions } from '.'\n\nexport const specialExpressionCalculator = {\n 'and': (astNode: AndNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateAndOutcomes({ astNode, ...helperOptions }),\n 'comment': (astNode: CommentExpressionNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCommentOutcomes({ astNode, ...helperOptions }),\n 'cond': (astNode: CondNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCondOutcomes({ astNode, ...helperOptions }),\n 'declared?': (astNode: DeclaredNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDeclaredOutcomes({ astNode, ...helperOptions }),\n 'defn': (astNode: DefnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnOutcomes({ astNode, ...helperOptions }),\n 'def': (astNode: DefNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefOutcomes({ astNode, ...helperOptions }),\n 'defns': (astNode: DefnsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnsOutcomes({ astNode, ...helperOptions }),\n 'defs': (astNode: DefsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefsOutcomes({ astNode, ...helperOptions }),\n 'do': (astNode: DoNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoOutcomes({ astNode, ...helperOptions }),\n 'doseq': (astNode: DoSeqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoSeqOutcomes({ astNode, ...helperOptions }),\n 'fn': (astNode: FnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateFnOutcomes({ astNode, ...helperOptions }),\n 'for': (astNode: ForNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateForOutcomes({ astNode, ...helperOptions }),\n 'if-let': (astNode: IfLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfLetOutcomes({ astNode, ...helperOptions }),\n 'if': (astNode: IfNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfOutcomes({ astNode, ...helperOptions }),\n 'if-not': (astNode: IfNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfNotOutcomes({ astNode, ...helperOptions }),\n 'let': (astNode: LetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLetOutcomes({ astNode, ...helperOptions }),\n 'loop': (astNode: LoopNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLoopOutcomes({ astNode, ...helperOptions }),\n 'or': (astNode: OrNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateOrOutcomes({ astNode, ...helperOptions }),\n '??': (astNode: QqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateQqOutcomes({ astNode, ...helperOptions }),\n 'recur': (astNode: RecurNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateRecurOutcomes({ astNode, ...helperOptions }),\n 'time!': (astNode: TimeNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTimeOutcomes({ astNode, ...helperOptions }),\n 'throw': (astNode: ThrowNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateThrowOutcomes({ astNode, ...helperOptions }),\n 'try': (astNode: TryNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTryOutcomes({ astNode, ...helperOptions }),\n 'when-first': (astNode: WhenFirstNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenFirstOutcomes({ astNode, ...helperOptions }),\n 'when-let': (astNode: WhenLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenLetOutcomes({ astNode, ...helperOptions }),\n 'when': (astNode: WhenNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenOutcomes({ astNode, ...helperOptions }),\n 'when-not': (astNode: WhenNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenNotOutcomes({ astNode, ...helperOptions }),\n\n} satisfies Record<SpecialExpressionName, unknown>\n","import type { Outcomes } from '..'\nimport { builtin } from '../../builtin'\nimport { AstNodeType } from '../../constants/constants'\nimport { evaluate } from '../../evaluator'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context } from '../../evaluator/interface'\nimport type { Ast, AstNode } from '../../parser/interface'\nimport { findUnresolvedIdentifiers } from '../findUnresolvedIdentifiers'\nimport { combinate } from '../utils'\nimport { specialExpressionCalculator } from './specialExpressionCalculators'\n\nexport type CalculatePossibleAstNodes = (astNode: AstNode, indentifiers?: string[]) => AstNode[]\nexport type CombinateAstNodes = (astNodes: AstNode[], indentifiers?: string[]) => AstNode[][]\nexport type IsAstComputable = (node: AstNode | AstNode[] | AstNode[][]) => boolean\nexport type AddGlobaleIdentifier = (name: string) => void\n\nexport interface CalculatePossibleAstNodesHelperOptions<T extends AstNode> {\n astNode: T\n nilNode: AstNode\n calculatePossibleAstNodes: CalculatePossibleAstNodes\n combinateAstNodes: CombinateAstNodes\n isAstComputable: IsAstComputable\n addGlobalIdentifier: AddGlobaleIdentifier\n}\n\nexport type CalculatePossibleAstNodesHelper<T extends AstNode> = (\n options: CalculatePossibleAstNodesHelperOptions<T>,\n) => AstNode[]\n\nfunction isIdempotent(normalExpressionName: string): boolean {\n return !normalExpressionName.endsWith('!')\n || normalExpressionName === 'write!'\n}\n\nexport function calculateOutcomes(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n // First, we try to calculate outcomes for the whole astNodes array.\n // If that fails, we try to calculate outcomes for the array without the first element.\n // If that fails, we try to calculate outcomes for the array without the first two elements.\n // And so on.\n\n // This makes it possible to calculate outcomes for e.g.\n // (write! x) x\n\n // Problems occur for e.g.\n // (def x 1) (write! x) x\n // This should output [1], but since (write! x) fails to calculate outcomes, we get null.\n\n // Ok, but not optimal\n // The contract is that when an array is returned, it must be correct.\n // But returning null (indicating that the calculation failed) is always a way out.\n for (let i = 0; i < astNodes.length; i++) {\n const usingAstNode = astNodes.slice(i)\n const outcomes = calculateOutcomesInner(contextStack, usingAstNode)\n if (outcomes !== null)\n return outcomes\n }\n return null\n}\n\nexport function calculateOutcomesInner(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n const possibleAsts = calculatePossibleAsts(contextStack.clone(), astNodes)\n\n if (possibleAsts === null)\n return null\n\n const outcomes: Outcomes = []\n\n for (const possibleAst of possibleAsts) {\n const unresolvedIdentifiers = findUnresolvedIdentifiers(possibleAst, contextStack.clone(), builtin)\n if (unresolvedIdentifiers.size !== 0)\n return null\n\n const ast: Ast = {\n b: possibleAst,\n hasDebugData: true,\n }\n try {\n outcomes.push(evaluate(ast, contextStack.clone()))\n }\n catch (e) {\n outcomes.push(e)\n }\n }\n\n return outcomes\n}\n\nfunction calculatePossibleAsts(contextStack: ContextStack, astNodes: AstNode[]): AstNode[][] | null {\n let possibleAsts: AstNode[][]\n\n try {\n possibleAsts = combinate(\n astNodes.map(\n astNode => calculatePossibleAstNodes(contextStack, astNode),\n ),\n )\n }\n catch (e) {\n return null\n }\n return possibleAsts\n}\n\nconst nilNode: AstNode = { t: AstNodeType.ReservedName, v: 'nil', debugData: undefined, p: [], n: undefined }\n\nfunction calculatePossibleAstNodes(contextStack: ContextStack, astNode: AstNode, newIndentifiers?: string[]): AstNode[] {\n const newContext = newIndentifiers\n ? newIndentifiers.reduce((acc: Context, identity) => {\n acc[identity] = { value: null }\n return acc\n }, {})\n : undefined\n const newContextStack = newContext ? contextStack.create(newContext) : contextStack\n\n if (astNode.t === AstNodeType.NormalExpression) {\n if (astNode.n && !isIdempotent(astNode.n))\n throw new Error(`NormalExpressionNode with name ${astNode.n} is not idempotent. Cannot calculate possible ASTs.`)\n\n return combinate(astNode.p.map(n => calculatePossibleAstNodes(newContextStack, n)))\n .map(p => ({ ...astNode, p }))\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n const helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'> = {\n nilNode,\n calculatePossibleAstNodes: (node: AstNode, identifiers?: string[]) => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers),\n combinateAstNodes: (nodes: AstNode[], identifiers?: string[]) =>\n combinate(nodes.map(node => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers))),\n isAstComputable: (node: AstNode | AstNode[] | AstNode[][]) =>\n calculateOutcomesInner(newContextStack, Array.isArray(node) ? node.flat() : [node]) !== null,\n addGlobalIdentifier: (name: string) => newContextStack.globalContext[name] = { value: null },\n }\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpressionCalculator[astNode.n](astNode as any, helperOptions)\n }\n return [astNode]\n}\n","import type { LitsParams } from '../Lits/Lits'\nimport { builtin } from '../builtin'\nimport type { Builtin } from '../builtin/interface'\nimport { type ContextStack, createContextStack } from '../evaluator/ContextStack'\nimport type { Ast, AstNode } from '../parser/interface'\nimport type { Token } from '../tokenizer/interface'\nimport { calculateOutcomes } from './calculateOutcomes'\nimport { findUnresolvedIdentifiers } from './findUnresolvedIdentifiers'\n\nexport interface UnresolvedIdentifier {\n symbol: string\n token: Token | undefined\n}\n\n// A set of unresolved identifiers\nexport type UnresolvedIdentifiers = Set<UnresolvedIdentifier>\n\n// A set of potential outcomes from evaluating the AST\nexport type Outcomes = unknown[]\n\n// The result of analyzing an AST\nexport interface Analysis {\n unresolvedIdentifiers: UnresolvedIdentifiers\n outcomes: Outcomes | null\n}\n\n// A function that finds unresolved identifiers in an AST node or array of AST nodes\nexport type FindUnresolvedIdentifiers = (ast: Ast | AstNode[], contextStack: ContextStack, builtin: Builtin) => UnresolvedIdentifiers\n\nexport function analyze(ast: Ast, params: LitsParams): Analysis {\n return {\n unresolvedIdentifiers: findUnresolvedIdentifiers(ast, createContextStack(params), builtin),\n outcomes: calculateOutcomes(createContextStack(params), ast.b),\n }\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport type { FnNode } from '../builtin/specialExpressions/functions'\nimport type { FunctionArguments } from '../builtin/utils'\nimport { AstNodeType, TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { ReservedName } from '../reservedNames'\nimport type { Token, TokenStream } from '../tokenizer/interface'\nimport { asNonUndefined, assertEvenNumberOfParams, assertNonUndefined, assertUnreachable } from '../typeGuards'\nimport { assertNameNode, isExpressionNode } from '../typeGuards/astNode'\nimport { asToken } from '../typeGuards/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type {\n AstNode,\n BindingNode,\n CommentNode,\n ModifierName,\n NameNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ParseArgument,\n ParseExpression,\n ReservedNameNode,\n StringNode,\n} from './interface'\n\nexport function parseNumber(tokenStream: TokenStream, position: number): [number, NumberNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.Number,\n v: Number(tkn.v),\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseString(tokenStream: TokenStream, position: number): [number, StringNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.String,\n v: tkn.v,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseName(tokenStream: TokenStream, position: number): [number, NameNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.Name,\n v: tkn.v,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseReservedName(tokenStream: TokenStream, position: number): [number, ReservedNameNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.ReservedName,\n v: tkn.v as ReservedName,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseComment(tokenStream: TokenStream, position: number): [number, CommentNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.Comment,\n v: tkn.v as ReservedName,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseTokensUntilClosingBracket(tokenStream: TokenStream, position: number): [number, AstNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const astNodes: AstNode[] = []\n let astNode: AstNode\n while (!(tkn.t === TokenType.Bracket && (tkn.v === ')' || tkn.v === ']'))) {\n ;[position, astNode] = parseToken(tokenStream, position)\n astNodes.push(astNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, astNodes]\n}\n\nconst parseExpression: ParseExpression = (tokenStream, position) => {\n const tkn = asToken(tokenStream.tokens[position + 1], tokenStream.filePath)\n if (tkn.t === TokenType.Name && builtin.specialExpressions[tkn.v as SpecialExpressionName])\n return parseSpecialExpression(tokenStream, position)\n\n return parseNormalExpression(tokenStream, position)\n}\n\nfunction parseArrayLitteral(tokenStream: TokenStream, position: number): [number, AstNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n position = position + 1\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const params: AstNode[] = []\n let param: AstNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n ;[position, param] = parseToken(tokenStream, position)\n params.push(param)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n position = position + 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : undefined,\n }\n\n return [position, node]\n}\n\nfunction parseObjectLitteral(tokenStream: TokenStream, position: number): [number, NormalExpressionNodeWithName] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n position = position + 1\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const params: AstNode[] = []\n let param: AstNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === '}')) {\n ;[position, param] = parseToken(tokenStream, position)\n params.push(param)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n position = position + 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : undefined,\n }\n\n assertEvenNumberOfParams(node)\n\n return [position, node]\n}\n\nfunction parseRegexpShorthand(tokenStream: TokenStream, position: number): [number, NormalExpressionNodeWithName] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: tkn.v,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n }\n\n assertNonUndefined(tkn.o, tkn.debugData?.sourceCodeInfo)\n\n const optionsNode: StringNode = {\n t: AstNodeType.String,\n v: `${tkn.o.g ? 'g' : ''}${tkn.o.i ? 'i' : ''}`,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n }\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'regexp',\n p: [stringNode, optionsNode],\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n }\n\n return [\n position + 1,\n node,\n ]\n}\n\nconst placeholderRegexp = /^%([1-9]\\d?)?$/\ntype ParseFnShorthand = (tokenStream: TokenStream, position: number) => [number, FnNode]\nconst parseFnShorthand: ParseFnShorthand = (tokenStream, position) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n position += 1\n const [newPosition, exprNode] = parseExpression(tokenStream, position)\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET'\n for (let pos = position + 1; pos < newPosition - 1; pos += 1) {\n const tkn = asToken(tokenStream.tokens[pos], tokenStream.filePath)\n if (tkn.t === TokenType.Name) {\n const match = placeholderRegexp.exec(tkn.v)\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use % or %1', firstToken.debugData?.sourceCodeInfo)\n\n percent1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', firstToken.debugData?.sourceCodeInfo)\n }\n }\n if (tkn.t === TokenType.FnShorthand)\n throw new LitsError('Nested shortcut functions are not allowed', firstToken.debugData?.sourceCodeInfo)\n }\n\n const mandatoryArguments: string[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && percent1 === 'NAKED')\n mandatoryArguments.push('%')\n else\n mandatoryArguments.push(`%${i}`)\n }\n\n const args: FunctionArguments = {\n b: [],\n m: mandatoryArguments,\n }\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [\n {\n as: args,\n b: [exprNode],\n a: args.m.length,\n },\n ],\n debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: exprNode.debugData!.lastToken,\n }\n : undefined,\n }\n\n return [newPosition, node]\n}\n\nconst parseArgument: ParseArgument = (tokenStream, position) => {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n if (tkn.t === TokenType.Name) {\n return [\n position + 1,\n {\n t: AstNodeType.Argument,\n n: tkn.v,\n p: [],\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n },\n ]\n }\n else if (tkn.t === TokenType.Modifier) {\n const value = tkn.v as ModifierName\n return [\n position + 1,\n {\n t: AstNodeType.Modifier,\n v: value,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n },\n ]\n }\n else {\n throw new LitsError(`Expected name or modifier token, got ${valueToString(tkn)}.`, tkn.debugData?.sourceCodeInfo)\n }\n}\n\nfunction parseBindings(tokenStream: TokenStream, position: number): [number, BindingNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '[' })\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const bindings: BindingNode[] = []\n let binding: BindingNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n ;[position, binding] = parseBinding(tokenStream, position)\n bindings.push(binding)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n position += 1\n\n return [position, bindings]\n}\n\nfunction parseBinding(tokenStream: TokenStream, position: number): [number, BindingNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Name })\n const name = firstToken.v\n\n position += 1\n let value: AstNode\n ;[position, value] = parseToken(tokenStream, position)\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name,\n v: value,\n p: [],\n debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: value.debugData!.lastToken,\n }\n : undefined,\n }\n return [position, node]\n}\n\nfunction parseNormalExpression(tokenStream: TokenStream, position: number): [number, NormalExpressionNode] {\n const startBracketToken = tokenStream.hasDebugData ? asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '(' }) : undefined\n position += 1\n const [newPosition, fnNode] = parseToken(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, newPosition)\n\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n if (isExpressionNode(fnNode)) {\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n p: [fnNode, ...params],\n n: undefined,\n debugData: startBracketToken\n ? {\n token: startBracketToken,\n lastToken,\n }\n : undefined,\n }\n\n return [position, node]\n }\n\n assertNameNode(fnNode, fnNode.debugData?.token.debugData?.sourceCodeInfo)\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: fnNode.v,\n p: params,\n debugData: startBracketToken\n ? {\n token: startBracketToken,\n nameToken: fnNode.debugData?.token,\n lastToken,\n }\n : undefined,\n }\n\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression) {\n builtinExpression.validate?.({\n ...node,\n p: withoutCommentNodes(node.p),\n })\n }\n\n return [position, node]\n}\n\nfunction parseSpecialExpression(tokenStream: TokenStream, position: number): [number, SpecialExpressionNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '(' })\n position += 1\n const nameToken = asToken(\n tokenStream.tokens[position],\n tokenStream.filePath,\n { type: TokenType.Name },\n )\n const { v: expressionName, debugData } = nameToken\n position += 1\n\n const { parse } = asNonUndefined(builtin.specialExpressions[expressionName as SpecialExpressionName], debugData?.sourceCodeInfo)\n\n const [positionAfterParse, node] = parse(tokenStream, position, firstToken, {\n parseExpression,\n parseTokensUntilClosingBracket,\n parseToken,\n parseBinding,\n parseBindings,\n parseArgument,\n })\n\n if (node.debugData)\n node.debugData.nameToken = nameToken\n\n return [positionAfterParse, node]\n}\n\nexport function parseToken(tokenStream: TokenStream, position: number): [number, AstNode] {\n const tkn = getNextParsableToken(tokenStream, position)\n switch (tkn.t) {\n case TokenType.Number:\n return parseNumber(tokenStream, position)\n case TokenType.String:\n return parseString(tokenStream, position)\n case TokenType.Name:\n return parseName(tokenStream, position)\n case TokenType.ReservedName:\n return parseReservedName(tokenStream, position)\n case TokenType.Bracket:\n if (tkn.v === '(')\n return parseExpression(tokenStream, position)\n else if (tkn.v === '[')\n return parseArrayLitteral(tokenStream, position)\n else if (tkn.v === '{')\n return parseObjectLitteral(tokenStream, position)\n\n break\n case TokenType.RegexpShorthand:\n return parseRegexpShorthand(tokenStream, position)\n case TokenType.FnShorthand:\n return parseFnShorthand(tokenStream, position)\n case TokenType.Comment:\n return parseComment(tokenStream, position)\n case TokenType.CollectionAccessor:\n case TokenType.Modifier:\n case TokenType.NewLine:\n break\n /* v8 ignore next 2 */\n default:\n assertUnreachable(tkn.t)\n }\n throw new LitsError(`Unrecognized token: ${tkn.t} value=${tkn.v}`, tkn.debugData?.sourceCodeInfo)\n}\n\nfunction getNextParsableToken(tokenStream: TokenStream, position: number): Token {\n let token = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (token.t === TokenType.NewLine) {\n position += 1\n token = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return token\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport type { Ast, AstNode } from './interface'\nimport { parseToken } from './parsers'\n\nexport function parse(tokenStream: TokenStream): Ast {\n const ast: Ast = {\n b: [],\n hasDebugData: tokenStream.hasDebugData,\n }\n\n let position = 0\n let node: AstNode\n while (position < tokenStream.tokens.length) {\n ;[position, node] = parseToken(tokenStream, position)\n ast.b.push(node)\n }\n\n return ast\n}\n","import { TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport { asNonUndefined } from '../../typeGuards'\nimport { assertNumber } from '../../typeGuards/number'\nimport type { SourceCodeInfo, Token, TokenStream } from '../interface'\nimport type { SugarFunction } from '.'\n\nexport const applyCollectionAccessors: SugarFunction = (tokenStream) => {\n let dotTokenIndex = tokenStream.tokens.findIndex(tkn => tkn.t === TokenType.CollectionAccessor)\n while (dotTokenIndex >= 0) {\n applyCollectionAccessor(tokenStream, dotTokenIndex)\n dotTokenIndex = tokenStream.tokens.findIndex(tkn => tkn.t === TokenType.CollectionAccessor)\n }\n return tokenStream\n}\n\nfunction applyCollectionAccessor(tokenStream: TokenStream, position: number) {\n const dotTkn = asNonUndefined(tokenStream.tokens[position])\n const debugData = dotTkn.debugData\n const backPosition = getPositionBackwards(tokenStream, position, debugData?.sourceCodeInfo)\n checkForward(tokenStream, position, dotTkn, debugData?.sourceCodeInfo)\n\n tokenStream.tokens.splice(position, 1)\n tokenStream.tokens.splice(backPosition, 0, {\n t: TokenType.Bracket,\n v: '(',\n debugData,\n })\n const nextTkn = asNonUndefined(tokenStream.tokens[position + 1])\n if (dotTkn.v === '.') {\n tokenStream.tokens[position + 1] = {\n t: TokenType.String,\n v: nextTkn.v,\n debugData: nextTkn.debugData,\n }\n }\n else {\n assertNumber(Number(nextTkn.v), debugData?.sourceCodeInfo, { integer: true, nonNegative: true })\n tokenStream.tokens[position + 1] = {\n t: TokenType.Number,\n v: nextTkn.v,\n debugData: nextTkn.debugData,\n }\n }\n tokenStream.tokens.splice(position + 2, 0, {\n t: TokenType.Bracket,\n v: ')',\n debugData,\n })\n}\n\nfunction getPositionBackwards(tokenStream: TokenStream, position: number, sourceCodeInfo: SourceCodeInfo | undefined) {\n let bracketCount: number | null = null\n if (position <= 0)\n throw new LitsError('Array accessor # must come after a sequence', sourceCodeInfo)\n\n const prevToken = asNonUndefined(tokenStream.tokens[position - 1])\n let openBracket: null | '(' | '[' | '{' = null\n let closeBracket: null | ')' | ']' | '}' = null\n\n if (prevToken.t === TokenType.Bracket) {\n switch (prevToken.v) {\n case ')':\n openBracket = '('\n closeBracket = ')'\n break\n case ']':\n openBracket = '['\n closeBracket = ']'\n break\n case '}':\n openBracket = '{'\n closeBracket = '}'\n break\n default:\n throw new LitsError('# or . must be preceeded by a collection', sourceCodeInfo)\n }\n }\n\n while (bracketCount !== 0) {\n bracketCount = bracketCount === null ? 0 : bracketCount\n position -= 1\n const tkn = asNonUndefined(tokenStream.tokens[position], sourceCodeInfo)\n if (tkn.t === TokenType.Bracket) {\n if (tkn.v === openBracket)\n bracketCount += 1\n\n if (tkn.v === closeBracket)\n bracketCount -= 1\n }\n }\n if (openBracket === '(' && position > 0) {\n const tokenBeforeBracket = asNonUndefined(tokenStream.tokens[position - 1])\n if (tokenBeforeBracket.t === TokenType.FnShorthand)\n throw new LitsError('# or . must NOT be preceeded by shorthand lambda function', sourceCodeInfo)\n }\n return position\n}\n\nfunction checkForward(\n tokenStream: TokenStream,\n position: number,\n dotTkn: Token,\n sourceCodeInfo: SourceCodeInfo | undefined,\n) {\n const tkn = asNonUndefined(tokenStream.tokens[position + 1], sourceCodeInfo)\n\n if (dotTkn.v === '.' && tkn.t !== TokenType.Name)\n throw new LitsError('# as a collection accessor must be followed by an name', sourceCodeInfo)\n\n if (dotTkn.v === '#' && tkn.t !== TokenType.Number)\n throw new LitsError('# as a collection accessor must be followed by an integer', sourceCodeInfo)\n}\n","import type { TokenStream } from '../interface'\nimport { applyCollectionAccessors } from './applyCollectionAccessor'\n\nexport type SugarFunction = (tokenStream: TokenStream) => TokenStream\n\nexport function getSugar(): SugarFunction[] {\n return [applyCollectionAccessors]\n}\n","export type Identifier = string & { __brand: 'Identifier' }\n\nexport const identifierCharacterClass = '[\\\\w@%^?=!$<>+*/:-]'\nexport const identifierFirstCharacterClass = '[a-zA-Z_@%^?=!$<>+*/-]'\n\n// eslint-disable-next-line regexp/use-ignore-case\nexport const identifierRegExp = new RegExp(`^${identifierFirstCharacterClass}${identifierCharacterClass}*$`)\n\nexport function isIdentifier(value: string): value is Identifier {\n return identifierRegExp.test(value)\n}\n\nexport function assertIdentifier(value: string): asserts value is Identifier {\n if (!isIdentifier(value)) {\n throw new Error(`Expected '${value}' to be an identifier`)\n }\n}\n","import { TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { identifierCharacterClass } from '../identifier'\nimport type { ModifierName } from '../parser/interface'\nimport { reservedNamesRecord } from '../reservedNames'\nimport { asString } from '../typeGuards/string'\nimport type { Token, TokenDebugData, TokenDescriptor, Tokenizer } from './interface'\n\nconst NO_MATCH: TokenDescriptor = [0, undefined]\n\nconst nameRegExp = new RegExp(identifierCharacterClass)\nconst whitespaceRegExp = /\\s|,/\nconst newLineRegExp = /\\n/\n\nexport const tokenizeNewLine: Tokenizer = (input, current, debugData) =>\n newLineRegExp.test(input[current] as string)\n ? [1, { t: TokenType.NewLine, v: '\\n', debugData }]\n : NO_MATCH\n\nexport const tokenizeComment: Tokenizer = (input, current, debugData) => {\n if (input[current] === ';') {\n let length = 0\n let value = ''\n while (input[current + length] !== '\\n' && current + length < input.length) {\n value += input[current + length]\n length += 1\n }\n\n if (input[current + length] === '\\n' && current + length < input.length)\n length += 1\n\n return [length, { t: TokenType.Comment, v: value.trim(), debugData }]\n }\n return NO_MATCH\n}\n\nexport const skipWhiteSpace: Tokenizer = (input, current) =>\n whitespaceRegExp.test(input[current] as string) ? [1, undefined] : NO_MATCH\n\nexport const tokenizeLeftParen: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '(', input, position, debugData)\nexport const tokenizeRightParen: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, ')', input, position, debugData)\nexport const tokenizeLeftBracket: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '[', input, position, debugData)\nexport const tokenizeRightBracket: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, ']', input, position, debugData)\nexport const tokenizeLeftCurly: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '{', input, position, debugData)\nexport const tokenizeRightCurly: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '}', input, position, debugData)\n\nexport const tokenizeString: Tokenizer = (input, position, debugData) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = ''\n let length = 1\n let char = input[position + length]\n let escape = false\n while (char !== '\"' || escape) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, debugData?.sourceCodeInfo)\n\n length += 1\n if (escape) {\n escape = false\n if (char === '\"' || char === '\\\\') {\n value += char\n }\n else {\n value += '\\\\'\n value += char\n }\n }\n else {\n if (char === '\\\\')\n escape = true\n else\n value += char\n }\n char = input[position + length]\n }\n return [length + 1, { t: TokenType.String, v: value, debugData }]\n}\n\nexport const tokenizeCollectionAccessor: Tokenizer = (input, position, debugData) => {\n const char = input[position]\n if (char !== '.' && char !== '#')\n return NO_MATCH\n\n return [\n 1,\n {\n t: TokenType.CollectionAccessor,\n v: char,\n debugData,\n },\n ]\n}\n\nexport const tokenizeSymbolString: Tokenizer = (input, position, debugData) => {\n if (input[position] !== ':')\n return NO_MATCH\n\n let value = ''\n let length = 1\n let char = input[position + length]\n while (char && nameRegExp.test(char)) {\n length += 1\n value += char\n char = input[position + length]\n }\n if (length === 1)\n return NO_MATCH\n\n return [length, { t: TokenType.String, v: value, debugData, o: { s: true } } satisfies Token]\n}\n\nexport const tokenizeRegexpShorthand: Tokenizer = (input, position, debugData) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1, debugData)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n const options: Record<string, boolean> = {}\n while (input[position] === 'g' || input[position] === 'i') {\n if (input[position] === 'g') {\n if (options.g)\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, debugData?.sourceCodeInfo)\n\n length += 1\n options.g = true\n }\n else {\n if (options.i)\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, debugData?.sourceCodeInfo)\n\n length += 1\n options.i = true\n }\n position += 1\n }\n\n if (nameRegExp.test(input[position] ?? ''))\n throw new LitsError(`Unexpected regexp option \"${input[position]}\" at position ${position}.`, debugData?.sourceCodeInfo)\n\n return [\n length,\n {\n t: TokenType.RegexpShorthand,\n v: token.v,\n o: options,\n debugData,\n },\n ]\n}\n\nexport const tokenizeFnShorthand: Tokenizer = (input, position, debugData) => {\n if (input.slice(position, position + 2) !== '#(')\n return NO_MATCH\n\n return [\n 1,\n {\n t: TokenType.FnShorthand,\n v: '#',\n debugData,\n },\n ]\n}\n\nconst endOfNumberRegExp = /[\\s)\\]},#]/\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst firstCharRegExp = /[0-9.-]/\nexport const tokenizeNumber: Tokenizer = (input, position, debugData) => {\n let type: 'decimal' | 'octal' | 'hex' | 'binary' = 'decimal'\n const firstChar = input[position] as string\n if (!firstCharRegExp.test(firstChar))\n return NO_MATCH\n\n let hasDecimals = firstChar === '.'\n\n let i: number\n for (i = position + 1; i < input.length; i += 1) {\n const char = asString(input[i], debugData?.sourceCodeInfo, { char: true })\n if (endOfNumberRegExp.test(char))\n break\n\n if (char === '.') {\n const nextChar = input[i + 1]\n if (typeof nextChar === 'string' && !decimalNumberRegExp.test(nextChar))\n break\n }\n if (i === position + 1 && firstChar === '0') {\n if (char === 'b' || char === 'B') {\n type = 'binary'\n continue\n }\n if (char === 'o' || char === 'O') {\n type = 'octal'\n continue\n }\n if (char === 'x' || char === 'X') {\n type = 'hex'\n continue\n }\n }\n if (type === 'decimal' && hasDecimals) {\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'binary') {\n if (!binaryNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'octal') {\n if (!octalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'hex') {\n if (!hexNumberRegExp.test(char))\n return NO_MATCH\n }\n else {\n if (char === '.') {\n hasDecimals = true\n continue\n }\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n }\n\n const length = i - position\n const value = input.substring(position, i)\n if ((type !== 'decimal' && length <= 2) || value === '.' || value === '-')\n return NO_MATCH\n\n return [length, { t: TokenType.Number, v: value, debugData }]\n}\n\nexport const tokenizeReservedName: Tokenizer = (input, position, debugData) => {\n for (const [reservedName, { forbidden }] of Object.entries(reservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && nameRegExp.test(nextChar))\n continue\n\n const name = input.substring(position, position + length)\n if (name === reservedName) {\n if (forbidden)\n throw new LitsError(`${name} is forbidden!`, debugData?.sourceCodeInfo)\n\n return [length, { t: TokenType.ReservedName, v: reservedName, debugData }]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeName: Tokenizer = (input, position, debugData) =>\n tokenizePattern(TokenType.Name, nameRegExp, input, position, debugData)\n\nexport const tokenizeModifier: Tokenizer = (input, position, debugData) => {\n const modifiers: ModifierName[] = ['&', '&let', '&when', '&while']\n for (const modifier of modifiers) {\n const length = modifier.length\n const charAfterModifier = input[position + length]\n if (input.substring(position, position + length) === modifier && (!charAfterModifier || !nameRegExp.test(charAfterModifier))) {\n const value: ModifierName = modifier\n return [length, { t: TokenType.Modifier, v: value, debugData }]\n }\n }\n return NO_MATCH\n}\n\nfunction tokenizeCharacter(\n type: TokenType,\n value: string,\n input: string,\n position: number,\n debugData?: TokenDebugData,\n): TokenDescriptor {\n if (value === input[position])\n return [1, { t: type, v: value, debugData }]\n else\n return NO_MATCH\n}\n\nfunction tokenizePattern(\n type: TokenType,\n pattern: RegExp,\n input: string,\n position: number,\n debugData?: TokenDebugData,\n): TokenDescriptor {\n let char = input[position]\n let length = 0\n let value = ''\n\n if (!char || !pattern.test(char))\n return NO_MATCH\n\n while (char && pattern.test(char)) {\n value += char\n length += 1\n char = input[position + length]\n }\n\n return [length, { t: type, v: value, debugData }]\n}\n","import { TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { MetaToken, SourceCodeInfo, Token, TokenDebugData, TokenStream, TokenizeParams, Tokenizer } from './interface'\nimport { getSugar } from './sugar'\nimport {\n skipWhiteSpace,\n tokenizeCollectionAccessor,\n tokenizeComment,\n tokenizeFnShorthand,\n tokenizeLeftBracket,\n tokenizeLeftCurly,\n tokenizeLeftParen,\n tokenizeModifier,\n tokenizeName,\n tokenizeNewLine,\n tokenizeNumber,\n tokenizeRegexpShorthand,\n tokenizeReservedName,\n tokenizeRightBracket,\n tokenizeRightCurly,\n tokenizeRightParen,\n tokenizeString,\n tokenizeSymbolString,\n} from './tokenizers'\n\n// All tokenizers, order matters!\nconst tokenizers: Tokenizer[] = [\n skipWhiteSpace,\n tokenizeComment,\n tokenizeLeftParen,\n tokenizeRightParen,\n tokenizeLeftBracket,\n tokenizeRightBracket,\n tokenizeLeftCurly,\n tokenizeRightCurly,\n tokenizeString,\n tokenizeSymbolString,\n tokenizeNumber,\n tokenizeReservedName,\n tokenizeName,\n tokenizeModifier,\n tokenizeRegexpShorthand,\n tokenizeFnShorthand,\n tokenizeCollectionAccessor,\n]\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nexport function tokenize(input: string, params: TokenizeParams): TokenStream {\n const debug = !!params.debug\n const tokens: Token[] = []\n let position = 0\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n let leadingNewLineTokens: MetaToken[]\n [position, leadingNewLineTokens] = readLeadingNewLineTokens(input, position, params)\n if (position >= input.length)\n break\n\n let leadingCommentTokens: MetaToken[]\n [position, leadingCommentTokens] = readLeadingCommentTokens(input, position, params)\n if (position >= input.length)\n break\n\n const leadingMetaTokens: MetaToken[] = [...leadingNewLineTokens, ...leadingCommentTokens]\n\n // Loop through all tokenizer until one matches\n const debugData: TokenDebugData | undefined = debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens },\n }\n : undefined\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n let inlineCommentToken: Token<TokenType.Comment> | null = null\n if (!isCommentToken(token))\n [position, inlineCommentToken] = readInlineCommentToken(input, position, params)\n\n if (token.debugData)\n token.debugData.metaTokens.inlineCommentToken = inlineCommentToken\n\n if (!isCommentToken(token) || debug)\n tokens.push(token)\n }\n\n break\n }\n }\n if (!tokenized)\n throw new LitsError(`Unrecognized character '${input[position]}'.`, debugData?.sourceCodeInfo)\n }\n\n const tokenStream: TokenStream = {\n tokens,\n filePath: params.filePath,\n hasDebugData: debug,\n }\n\n applySugar(tokenStream)\n\n return tokenStream\n}\n\nfunction applySugar(tokenStream: TokenStream) {\n const sugar = getSugar()\n sugar.forEach(sugarFn => sugarFn(tokenStream))\n}\n\nconst newLineTokenizers = [\n tokenizeNewLine,\n skipWhiteSpace,\n]\n\nfunction readLeadingNewLineTokens(input: string, position: number, params: TokenizeParams): [number, MetaToken[]] {\n const newLineTokens: Token<TokenType.NewLine>[] = []\n\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n const debugData: TokenDebugData | undefined = params.debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens: [] },\n }\n : undefined\n\n // Loop through all tokenizer until one matches\n for (const tokenizer of newLineTokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n assertNewLineToken(token)\n\n if (newLineTokens.length < 2)\n newLineTokens.push(token)\n }\n break\n }\n }\n if (!tokenized)\n // All newline tokens read!\n return [position, newLineTokens]\n }\n // Ending up here means that no non newline token was found. I.e. this cannot be leading newline tokens\n return [position, []]\n}\n\nconst metaTokenizers = [\n tokenizeNewLine,\n skipWhiteSpace,\n tokenizeComment,\n]\n\nfunction readLeadingCommentTokens(input: string, position: number, params: TokenizeParams): [number, MetaToken[]] {\n const commentTokens: Token<TokenType.Comment>[] = []\n\n const rollbackPosition = position\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n const debugData: TokenDebugData | undefined = params.debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens: [] },\n }\n : undefined\n\n // Loop through all tokenizer until one matches\n for (const tokenizer of metaTokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n assertMetaToken(token)\n\n // If a newline token is found, then this is not a leading comment\n if (isNewLineToken(token))\n return [rollbackPosition, []]\n\n commentTokens.push(token)\n }\n break\n }\n }\n if (!tokenized)\n // All metatokens read!\n return [position, commentTokens]\n }\n // Ending up here means that no non meta token was found. I.e. this cannot be leading meta tokens\n return [rollbackPosition, []]\n}\n\nconst commentTokenizers = [\n tokenizeNewLine,\n skipWhiteSpace,\n tokenizeComment,\n]\n\nfunction readInlineCommentToken(input: string, position: number, params: TokenizeParams): [number, Token<TokenType.Comment> | null] {\n const rollbackPosition = position\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n const debugData: TokenDebugData | undefined = params.debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens: [] },\n }\n : undefined\n\n // Loop through all tokenizer until one matches\n for (const tokenizer of commentTokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n if (isNewLineToken(token))\n return [rollbackPosition, null]\n assertCommentToken(token)\n return [position, token]\n }\n break\n }\n }\n if (!tokenized)\n // All metatokens read! Return undefined if not debug mode\n return [rollbackPosition, null]\n }\n // Ending up here means that no comment token was found and end of tokens reached\n return [position, null]\n}\n\nexport function isMetaToken(token?: Token): token is MetaToken {\n return !!token && (token.t === TokenType.NewLine || token.t === TokenType.Comment)\n}\n\nexport function assertMetaToken(token?: Token): asserts token is MetaToken {\n if (!isMetaToken(token))\n throw new LitsError(`Expected meta token, got ${token?.t}.`)\n}\n\nexport function isCommentToken(token?: Token): token is Token<TokenType.Comment> {\n return !!token && token.t === TokenType.Comment\n}\n\nexport function assertCommentToken(token?: Token): asserts token is Token<TokenType.Comment> {\n if (!isCommentToken(token))\n throw new LitsError(`Expected comment token, got ${token?.t}.`)\n}\n\nexport function isNewLineToken(token?: Token): token is Token<TokenType.NewLine> {\n return !!token && token.t === TokenType.NewLine\n}\n\nexport function assertNewLineToken(token?: Token): asserts token is Token<TokenType.NewLine> {\n if (!isNewLineToken(token))\n throw new LitsError(`Expected newline token, got ${token?.t}.`)\n}\n","import type { TokenStream } from '../tokenizer/interface'\n\nexport function transformTokens(tokenStram: TokenStream, transformer: (name: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map((token) => {\n return {\n ...token,\n v: transformer(token.v),\n }\n }),\n \n }\n}\n","import type { Unparse } from './unparse'\n\nexport class UnparseOptions {\n public readonly indent: string\n constructor(\n public readonly unparse: Unparse,\n public readonly lineLength: number,\n public readonly col = 0,\n public readonly inlined = false,\n public readonly locked = false,\n ) {\n this.indent = ' '.repeat(col)\n }\n\n public inc(count = 1) {\n return new UnparseOptions(this.unparse, this.lineLength, this.col + count, this.inlined, this.locked)\n }\n\n public inline() {\n return new UnparseOptions(this.unparse, this.lineLength, this.col, true, this.locked)\n }\n\n public noInline() {\n return new UnparseOptions(this.unparse, this.lineLength, this.col, false, this.locked)\n }\n\n public lock() {\n return new UnparseOptions(this.unparse, this.lineLength, this.col, this.inlined, true)\n }\n\n public assertNotOverflown(value: string): string {\n value.split('\\n').forEach((line, index) => {\n const fullLine = (index === 0 && this.inlined) ? this.indent + line : line\n const length = fullLine.length\n if (length > this.lineLength)\n throw new Error(`Line length exceeded ${this.lineLength} chars, value: \"${fullLine}\" (${fullLine.length} chars)`)\n })\n\n return value\n }\n}\n","import { isNewLineToken } from '../tokenizer'\nimport type { MetaToken, MetaTokens } from '../tokenizer/interface'\nimport type { UnparseOptions } from './UnparseOptions'\n\nexport function ensureNewlineSeparator(a: string, b: string): string {\n return !a || !b || a.endsWith('\\n') || b.startsWith('\\n') ? `${a}${b}` : `${a}\\n${b}`\n}\n\nexport function ensureSpaceSeparator(a: string, b: string): string {\n return !a || !b || a.endsWith(' ') || b.startsWith(' ') || b.startsWith('\\n')\n ? `${a}${b}`\n : `${a} ${b}`\n}\n\nexport function applyMetaTokens(\n value: string | number,\n metaTokens: MetaTokens | undefined,\n options: UnparseOptions,\n): string {\n if (!metaTokens) {\n return `${options.inlined ? '' : options.indent}${value}`\n }\n else {\n const result = `${\n metaTokensToString(metaTokens.leadingMetaTokens, value)\n }${\n value\n }${\n metaTokens?.inlineCommentToken ? ` ${metaTokens.inlineCommentToken.v}\\n` : ''\n }`\n return result.split('\\n').map((line, index) =>\n `${line && (!options.inlined || index > 0) ? options.indent : ''}${line}`,\n ).join('\\n')\n }\n}\n\nfunction metaTokensToString(metaTokens: MetaToken[], tokenValue: string | number): string {\n const isEndBracket = tokenValue === ')' || tokenValue === ']' || tokenValue === '}'\n const isOnlyNewLine = metaTokens.length === 1 && isNewLineToken(metaTokens[0])\n if (isEndBracket && isOnlyNewLine)\n return ''\n\n return metaTokens.map(metaToken =>\n isNewLineToken(metaToken) ? metaToken.v : `${metaToken.v}\\n`,\n ).join('')\n}\n","import type { AstNode } from '../parser/interface'\nimport type { UnparseOptions } from './UnparseOptions'\nimport { ensureNewlineSeparator, ensureSpaceSeparator } from './utils'\n\nexport function unparseParams({\n params,\n options,\n prefix,\n inline,\n endBracket,\n body = false,\n name = '',\n noMultilineInline = false,\n pairs = false,\n}: {\n params: AstNode[]\n prefix: string\n inline: boolean\n endBracket: string\n options: UnparseOptions\n body?: boolean\n name?: string\n noMultilineInline?: boolean\n pairs?: boolean\n}): string {\n // If no parameters, return the expression with brackets\n if (params.length === 0)\n return `${prefix}${endBracket}`\n\n // 1. Try to unparse the parameters as a single line\n try {\n const unparsedParams = pairs\n ? unparseSingleLinePairs(params, options.inline().lock())\n : unparseSingleLineParams(params, options.inline().lock())\n if (!unparsedParams.includes('\\n'))\n return options.assertNotOverflown(`${prefix} ${unparsedParams}${endBracket}`)\n }\n catch (error) {\n // If locked, we do not try anything else\n if (options.locked)\n throw error\n }\n\n if (pairs) {\n if (name && !name.includes('\\n')) {\n try {\n const unparsedParams = unparseMultilinePairwise(params, options.inline().inc(name.length + 2).lock())\n const result = options.assertNotOverflown(`${prefix} ${unparsedParams}${endBracket}`)\n return result\n }\n catch {\n }\n }\n try {\n const unparsedParams = unparseMultilinePairwise(params, options.noInline().inc(body ? 2 : 1))\n return options.assertNotOverflown(ensureNewlineSeparator(prefix, `${unparsedParams}${endBracket}`))\n }\n catch {\n }\n }\n\n // 2. Try to unparse the parameters in multiple lines, first parameter on the same line\n // e.g. (round 1 2 3 4 5)\n // ==> (round 1\n // 2\n // 3\n // 4\n // 5)\n else if (inline) {\n const newOptions = options.inc(name.length + 2).lock()\n try {\n const firstParam = options.unparse(params[0]!, noMultilineInline ? newOptions.noInline() : newOptions.inline())\n // If the first parameter is multiline, fallback to option 3\n if (!firstParam.startsWith('\\n')) {\n const indentedParams = unparseMultilineParams(params.slice(1), newOptions.noInline())\n return noMultilineInline\n ? options.assertNotOverflown(\n `${ensureNewlineSeparator(prefix, ensureNewlineSeparator(firstParam, indentedParams))}${endBracket}`,\n )\n : options.assertNotOverflown(\n `${prefix} ${ensureNewlineSeparator(firstParam, indentedParams)}${endBracket}`,\n )\n }\n }\n catch {\n // Try option 3\n }\n }\n\n // 3. Try to unparse the parameters in multiple lines\n // e.g. (round 1 2 3 4 5)\n // ==> (round\n // 1\n // 2\n // 3\n // 4\n // 5)\n return `${ensureNewlineSeparator(\n prefix,\n unparseMultilineParams(params, options.noInline().inc(body ? 2 : 1)),\n )}${endBracket}`\n}\n\nexport function unparseSingleLineParams(params: AstNode[], options: UnparseOptions): string {\n return params.reduce<string>((acc, param) =>\n ensureSpaceSeparator(acc, options.unparse(param, options.inline())), '')\n}\n\nexport function unparseSingleLinePairs(params: AstNode[], options: UnparseOptions): string {\n return params.reduce<string>((acc, param, index) => {\n if (index > 0 && index % 2 === 0)\n acc += ','\n\n return ensureSpaceSeparator(acc, options.unparse(param, options.inline()))\n }, '')\n}\n\nexport function unparseMultilineParams(params: AstNode[], options: UnparseOptions): string {\n return params.reduce<string>((acc, param, index) => ensureNewlineSeparator(acc, options.unparse(\n param,\n index === 0 && options.inlined ? options.inline() : options.noInline(),\n )), '')\n}\n\nexport function unparseMultilinePairwise(params: AstNode[], options: UnparseOptions): string {\n let keyLength: number\n return params.reduce<string>((acc, param, index) => {\n if (index % 2 === 0) {\n let key = options.unparse(\n param,\n options.inline(),\n )\n const leadingMetaTokens = param.debugData?.token.debugData?.metaTokens.leadingMetaTokens\n if (index === 0 && options.inlined && leadingMetaTokens && leadingMetaTokens.length > 0)\n throw new Error('First key with leading meta tokens is not allowed.')\n\n key = key.trimStart()\n keyLength = key.length\n key = index === 0 && options.inlined ? key : `${options.indent}${key}`\n if (key.includes('\\n'))\n throw new Error('Key with new line character is not allowed.')\n\n return index > 0 ? ensureNewlineSeparator(acc, key) : `${acc}${key}`\n }\n else {\n const value = options.unparse(\n param,\n options.inline().inc(keyLength + 1),\n )\n return ensureSpaceSeparator(acc, value)\n }\n }, '')\n}\n","import type { NormalExpressionNode } from '../parser/interface'\nimport type { UnparseOptions } from './UnparseOptions'\nimport { unparseMultilineParams, unparseSingleLineParams } from './unparseParams'\nimport { applyMetaTokens, ensureNewlineSeparator, ensureSpaceSeparator } from './utils'\n\nexport function unparseArrayLiteral(node: NormalExpressionNode, options: UnparseOptions): string {\n const startBracket = applyMetaTokens('[', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens(']', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n\n // If no parameters, return empty array literal\n if (node.p.length === 0)\n return `${startBracket}${endBracket}`\n\n const firstElementOptions = startBracket.endsWith('\\n') ? options.noInline().inc() : options.inline().inc()\n const unparsedFirstElement = options.unparse(node.p[0]!, firstElementOptions)\n const params = node.p.slice(1)\n\n const prefix = startBracket + unparsedFirstElement\n\n // 1. Try to unparse the parameters\n try {\n const unparsedParams = unparseSingleLineParams(params, options.inline().lock())\n if (!unparsedParams.includes('\\n')) {\n return options.assertNotOverflown(\n `${ensureSpaceSeparator(prefix, unparsedParams)}${endBracket}`,\n )\n }\n }\n catch (error) {\n // If locked, we do not try anything else\n if (options.locked)\n throw error\n }\n\n // 2. Try to unparse the parameters in multiple lines\n // e.g. [1 2 3 4 5]\n // ==> [\n // 1\n // 2\n // 3\n // 4\n // 5]\n return `${ensureNewlineSeparator(\n prefix,\n unparseMultilineParams(params, options.noInline().inc()),\n )}${endBracket}`\n}\n","import type { NormalExpressionNode } from '../parser/interface'\nimport type { UnparseOptions } from './UnparseOptions'\nimport { unparseMultilinePairwise, unparseMultilineParams, unparseSingleLinePairs } from './unparseParams'\nimport { applyMetaTokens } from './utils'\n\nexport function unparseObjectLiteral(node: NormalExpressionNode, options: UnparseOptions): string {\n const startBracket = applyMetaTokens('{', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens('}', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n\n // If no parameters, return empty object literal\n if (node.p.length === 0)\n return `${startBracket}${endBracket}`\n\n const params = node.p\n\n if (!startBracket.endsWith('\\n')) {\n // 1. Try to unparse the parameters as one line\n try {\n const unparsedParams = unparseSingleLinePairs(params, options.inline().lock())\n\n if (!unparsedParams.includes('\\n')) {\n const result = `${startBracket}${unparsedParams}${endBracket}`\n return options.assertNotOverflown(result)\n }\n }\n catch (error) {\n // If locked, we do not try anything else\n if (options.locked)\n throw error\n }\n }\n\n // 2. Try to unparse the parameters pairwise on multiple lines\n // e.g. {:a 1 :b 2 :c 3 :d 4 :e 5}\n // ==> {:a 1\n // :b 2\n // :c 3\n // :d 4\n // :e 5}\n const multilineOptions = startBracket.endsWith('\\n') ? options.noInline().inc() : options.inline().inc()\n try {\n const paiwise = unparseMultilinePairwise(params, multilineOptions)\n const result = `${startBracket}${paiwise}${endBracket}`\n return options.assertNotOverflown(result)\n }\n catch {\n // Continue to the next step\n }\n\n // 3. Try to unparse the parameters in multiple lines\n return startBracket + unparseMultilineParams(node.p, multilineOptions) + endBracket\n}\n","import { TokenType } from '../constants/constants'\nimport { isNormalExpressionNode } from '../typeGuards/astNode'\nimport type { UnparseOptions } from './UnparseOptions'\nimport type { ExpressionWithParamsNode } from './unparse'\nimport { unparseArrayLiteral } from './unparseArrayLiteral'\nimport { unparseObjectLiteral } from './unparseObjectLiteral'\nimport { unparseParams } from './unparseParams'\nimport { applyMetaTokens } from './utils'\n\nexport function unparseNormalExpression(node: ExpressionWithParamsNode, options: UnparseOptions): string {\n if (isNormalExpressionNode(node)) {\n if (node.debugData?.token.t === TokenType.Bracket && node.debugData.token.v === '[')\n return unparseArrayLiteral(node, options)\n else if (node.debugData?.token.t === TokenType.Bracket && node.debugData.token.v === '{')\n return unparseObjectLiteral(node, options)\n }\n\n const startBracket = applyMetaTokens('(', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens(')', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n\n // if expression node e.g. (\"Albert\" 2), first parameter is the name (\"Albert\")\n const nameOptions = startBracket.endsWith('\\n') ? options.noInline().inc() : options.inline().inc()\n const name = node.n\n ? applyMetaTokens(node.n, node.debugData?.nameToken?.debugData?.metaTokens, nameOptions)\n : options.unparse(node.p[0]!, nameOptions)\n\n const params = node.n ? node.p : node.p.slice(1)\n\n const prefix = startBracket + name\n const inline = !name.includes('\\n')\n return unparseParams({ params, options, prefix, inline, name, endBracket })\n}\n","import type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { UnparseOptions } from '../UnparseOptions'\nimport { unparseParams } from '../unparseParams'\nimport { applyMetaTokens } from '../utils'\n\nexport function unparseCond(node: CondNode, options: UnparseOptions) {\n const startBracket = applyMetaTokens('(', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens(')', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n const name = applyMetaTokens(node.n, node.debugData?.nameToken?.debugData?.metaTokens, options.inline())\n const prefix = startBracket + name\n const inline = !name.includes('\\n')\n\n return unparseParams({\n params: node.p,\n options,\n prefix,\n inline,\n name,\n endBracket,\n body: true,\n pairs: true,\n })\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { UnparseOptions } from '../UnparseOptions'\nimport { unparseParams } from '../unparseParams'\nimport { applyMetaTokens } from '../utils'\n\nexport function unparseDo(node: DoNode, options: UnparseOptions) {\n const startBracket = applyMetaTokens('(', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens(')', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n const name = applyMetaTokens(node.n, node.debugData?.nameToken?.debugData?.metaTokens, options.inline())\n const prefix = startBracket + name\n const inline = !name.includes('\\n')\n\n return unparseParams({\n params: node.p,\n options,\n prefix,\n inline,\n name,\n endBracket,\n body: true,\n })\n}\n","import type { NormalExpressionNode } from '../parser/interface'\nimport type { UnparseOptions } from './UnparseOptions'\nimport { unparseMultilinePairwise, unparseMultilineParams, unparseSingleLinePairs } from './unparseParams'\nimport { applyMetaTokens } from './utils'\n\nexport function unparseBindings(node: NormalExpressionNode, options: UnparseOptions): string {\n const startBracket = applyMetaTokens('[', node.debugData?.token.debugData?.metaTokens, options)\n\n // If no parameters, return empty array literal\n if (node.p.length === 0) {\n const endBracket = applyMetaTokens(']', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n return `${startBracket}${endBracket}`\n }\n\n const params = node.p\n\n // 1. Try to unparse the bindings as one line\n try {\n const unparsedParams = unparseSingleLinePairs(params, options.inline().lock())\n const endBracket = applyMetaTokens(']', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n if (!unparsedParams.includes('\\n')) {\n const result = `${startBracket}${unparsedParams}${endBracket}`\n return options.assertNotOverflown(result)\n }\n }\n catch (error) {\n // If locked, we do not try anything else\n if (options.locked)\n throw error\n }\n\n // 2. Try to unparse the bindings pairwise on multiple lines\n // e.g. [a 1 b 2]\n // ==> [a 1\n // b 2]\n try {\n const endBracket = applyMetaTokens(']', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n const result = startBracket + unparseMultilinePairwise(params, options.inline().inc()) + endBracket\n return options.assertNotOverflown(result)\n }\n catch {\n // 2. Unparse the bindings on multiple lines\n // e.g. [a 1 b 2]\n // ==> [a\n // 1,\n // b\n // 2]\n const unparsedParams = unparseMultilineParams(params, options.inline().inc())\n const endBracket = unparsedParams.endsWith('\\n')\n ? applyMetaTokens(']', node.debugData?.lastToken?.debugData?.metaTokens, options.noInline())\n : applyMetaTokens(']', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n\n return startBracket + unparseMultilineParams(params, options.inline().inc()) + endBracket\n }\n}\n","import type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, NormalExpressionNode } from '../../parser/interface'\nimport { unparseBindings } from '../unparseBindings'\nimport type { UnparseOptions } from '../UnparseOptions'\nimport { unparseParams } from '../unparseParams'\nimport { applyMetaTokens } from '../utils'\n\nexport function unparseIfLet(node: IfLetNode, options: UnparseOptions) {\n const startBracket = applyMetaTokens('(', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens(')', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n const name = applyMetaTokens(node.n, node.debugData?.nameToken?.debugData?.metaTokens, options.inline())\n\n const letArray = node.debugData ? node.debugData.bindingArray : createLetArray(node.b)\n\n const inc = name.includes('\\n') ? 1 : name.length + 2\n const unparsedLetArray = unparseBindings(letArray, options.inc(inc).inline())\n\n const prefix = `${startBracket + name} ${unparsedLetArray}`\n const inline = !(name + unparsedLetArray).includes('\\n')\n return unparseParams({\n params: node.p,\n options,\n prefix,\n inline,\n endBracket,\n body: true,\n noMultilineInline: true,\n })\n}\n\nfunction createLetArray(bindingNode: BindingNode) {\n const params: AstNode[] = [\n {\n t: AstNodeType.Name,\n n: undefined,\n p: [],\n debugData: undefined,\n v: bindingNode.n,\n },\n bindingNode.v,\n ]\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n debugData: undefined,\n }\n return node\n}\n","import type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, NormalExpressionNode } from '../../parser/interface'\nimport { unparseBindings } from '../unparseBindings'\nimport type { UnparseOptions } from '../UnparseOptions'\nimport { unparseParams } from '../unparseParams'\nimport { applyMetaTokens } from '../utils'\n\nexport function unparseLet(node: LetNode, options: UnparseOptions) {\n const startBracket = applyMetaTokens('(', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens(')', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n const name = applyMetaTokens(node.n, node.debugData?.nameToken?.debugData?.metaTokens, options.inline())\n\n const letArray = node.debugData ? node.debugData.bindingArray : createLetArray(node.bs)\n\n const inc = name.includes('\\n') ? 1 : name.length + 2\n const unparsedLetArray = unparseBindings(letArray, options.inc(inc).inline())\n\n const prefix = `${startBracket + name} ${unparsedLetArray}`\n const inline = !(name + unparsedLetArray).includes('\\n')\n return unparseParams({\n params: node.p,\n options,\n prefix,\n inline,\n endBracket,\n body: true,\n noMultilineInline: true,\n })\n}\n\nfunction createLetArray(bindingNodes: BindingNode[]) {\n const params = bindingNodes.flatMap<AstNode>(binding => [\n {\n t: AstNodeType.Name,\n n: undefined,\n p: [],\n debugData: undefined,\n v: binding.n,\n },\n binding.v,\n ])\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n debugData: undefined,\n }\n return node\n}\n","import type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { UnparseOptions } from '../UnparseOptions'\nimport { unparseParams } from '../unparseParams'\nimport { applyMetaTokens } from '../utils'\n\nexport function unparseIfOrWhenLike(node: WhenNode | WhenNotNode | IfNode | IfNotNode, options: UnparseOptions): string {\n const startBracket = applyMetaTokens('(', node.debugData?.token.debugData?.metaTokens, options)\n const endBracket = applyMetaTokens(')', node.debugData?.lastToken?.debugData?.metaTokens, options.inline())\n\n const nameOptions = startBracket.endsWith('\\n') ? options.noInline().inc() : options.inline().inc()\n const name = applyMetaTokens(node.n, node.debugData?.nameToken?.debugData?.metaTokens, nameOptions)\n\n const inc = name.includes('\\n') ? 1 : name.length + 2\n const unparsedCondition = options.unparse(node.p[0]!, options.inc(inc).inline())\n\n const prefix = `${startBracket + name} ${unparsedCondition}`\n const params = node.p.slice(1)\n // const inline = !(name + unparsedCondition).includes('\\n')\n const inline = false\n\n return unparseParams({ params, options, prefix, inline, name, endBracket, body: node.n === 'when' || node.n === 'when-not' })\n}\n","import type { SpecialExpressionNode } from '../../builtin'\nimport type { AndNode } from '../../builtin/specialExpressions/and'\n// import type { AstNode, NormalExpressionNode } from '../../parser/interface'\nimport type { UnparseOptions } from '../UnparseOptions'\nimport { unparseNormalExpression } from '../unparseNormalExpression'\nimport { unparseCond } from './unparseCond'\nimport { unparseDo } from './unparseDo'\nimport { unparseIfLet } from './unparseIfLet'\nimport { unparseLet } from './unparseLet'\nimport { unparseIfOrWhenLike } from './unparseIfOrWhenLike'\n\n// type ExpressionWithSingleParamNode = Pick<NormalExpressionNode, 'debug' | 'n'> & { p: AstNode }\n\n// function expressionWithSingleParamUnparser(astNode: ExpressionWithSingleParamNode, options: UnparseOptions) {\n// return unparseNormalExpressionNode({ ...astNode, p: [astNode.p] }, options)\n// }\n\nconst specialExpressionUnparser = {\n 'and': unparseNormalExpression,\n 'comment': unparseNormalExpression,\n 'cond': unparseCond,\n 'declared?': unparseNormalExpression,\n // 'defn': (astNode: DefnNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n 'def': unparseNormalExpression,\n // 'defns': (astNode: DefnsNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n 'defs': unparseNormalExpression,\n 'do': unparseDo,\n // 'doseq': (astNode: DoSeqNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n // 'fn': (astNode: FnNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n // 'for': (astNode: ForNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n 'if-let': unparseIfLet,\n 'if': unparseIfOrWhenLike,\n 'if-not': unparseIfOrWhenLike,\n 'let': unparseLet,\n // 'loop': (astNode: LoopNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n 'or': unparseNormalExpression,\n '??': unparseNormalExpression,\n 'recur': unparseNormalExpression,\n 'time!': unparseNormalExpression,\n 'throw': unparseNormalExpression,\n // 'try': (astNode: TryNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n // 'when-first': (astNode: WhenFirstNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n // 'when-let': (astNode: WhenLetNode, options: UnparseOptions) => unparseNormalExpressionNode({ ...astNode, t }, options),\n 'when': unparseIfOrWhenLike,\n 'when-not': unparseIfOrWhenLike,\n\n} satisfies Record<string /* TODO: SpecialExpressionName */, (astNode: any, options: UnparseOptions) => string>\n\nexport function unparseSpecialExpression(node: SpecialExpressionNode, options: UnparseOptions): string {\n const unparser = specialExpressionUnparser[node.n as 'and']\n return unparser(node as AndNode, options)\n}\n","import { AstNodeType } from '../constants/constants'\nimport type { Ast, AstNode, NormalExpressionNode } from '../parser/interface'\nimport { UnparseOptions } from './UnparseOptions'\nimport { unparseNormalExpression } from './unparseNormalExpression'\nimport { applyMetaTokens, ensureNewlineSeparator } from './utils'\nimport { unparseSpecialExpression } from './unparseSpecialExpression'\n\nexport type ExpressionWithParamsNode = Pick<NormalExpressionNode, 'debugData' | 'n' | 'p'>\nexport type Unparse = (node: AstNode, options: UnparseOptions) => string\n\nconst unparse: Unparse = (node: AstNode, options: UnparseOptions) => {\n switch (node.t) {\n case AstNodeType.String:\n return node.debugData?.token.o?.s\n ? applyMetaTokens(`:${node.v}`, node.debugData?.token.debugData?.metaTokens, options) // Keyword\n : applyMetaTokens(`\"${node.v}\"`, node.debugData?.token.debugData?.metaTokens, options)\n case AstNodeType.Number:\n case AstNodeType.Name:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedName:\n return applyMetaTokens(node.v, node.debugData?.token.debugData?.metaTokens, options)\n case AstNodeType.Comment:\n return `${applyMetaTokens(node.v, node.debugData?.token.debugData?.metaTokens, options)}\\n`\n case AstNodeType.NormalExpression: {\n return unparseNormalExpression(node, options)\n }\n case AstNodeType.SpecialExpression:\n return unparseSpecialExpression(node, options)\n }\n}\n\nexport function unparseAst(ast: Ast, lineLength: number): string {\n const options = new UnparseOptions(unparse, lineLength || Number.MAX_SAFE_INTEGER)\n const result = ast.b.reduce<string>((acc, node) => {\n const nodeUnparsed = unparse(node, options)\n return ensureNewlineSeparator(acc, nodeUnparsed)\n }, '')\n return result.trim()\n}\n","import { TokenType } from '../constants/constants'\nimport type { Token, TokenStream } from '../tokenizer/interface'\n\nfunction isNoSpaceNeededBefore(token: Token): boolean {\n switch (token.t) {\n case TokenType.Bracket:\n return [')', ']'].includes(token.v)\n case TokenType.CollectionAccessor:\n return true\n case TokenType.NewLine:\n return true\n default:\n return false\n }\n}\n\nfunction isNoSpaceNeededAfter(token: Token): boolean {\n switch (token.t) {\n case TokenType.Bracket:\n return ['(', '['].includes(token.v)\n case TokenType.CollectionAccessor:\n return true\n case TokenType.FnShorthand:\n return true\n case TokenType.NewLine:\n return true\n case TokenType.RegexpShorthand:\n return true\n default:\n return false\n }\n}\n\nexport function untokenize(tokenStream: TokenStream): string {\n let lastToken: Token | undefined\n return tokenStream.tokens.reduce((acc: string, token) => {\n const joiner = !lastToken || isNoSpaceNeededAfter(lastToken) || isNoSpaceNeededBefore(token) ? '' : ' '\n lastToken = token\n return `${acc}${joiner}${untokenizeToken(token)}`\n }, '')\n}\n\nfunction untokenizeToken(token: Token): string {\n switch (token.t) {\n case TokenType.String:\n return `\"${token.v}\"`\n default:\n return token.v\n }\n}\n","import type { Ast } from '../parser/interface'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import type { Analysis } from '../analyze'\nimport { analyze } from '../analyze'\nimport { evaluate } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport { parse } from '../parser'\nimport type { Ast, LitsFunction } from '../parser/interface'\nimport { tokenize } from '../tokenizer'\nimport type { TokenStream, TokenizeParams } from '../tokenizer/interface'\nimport { transformTokens } from '../transformer'\nimport { unparseAst } from '../unparser/unparse'\nimport { untokenize } from '../untokenizer'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface LitsParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n filePath?: string\n debug?: boolean\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n}\n\ntype FormatParams = LitsParams & {\n lineLength?: number\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: LitsParams = {}): unknown {\n const ast = this.generateAst(program, params)\n return this.evaluate(ast, params)\n }\n\n public format(program: string, params: FormatParams = {}): string {\n const lineLength = params.lineLength ?? 80\n const ast = this.generateAst(program, params)\n return unparseAst(ast, lineLength)\n }\n\n public context(program: string, params: LitsParams = {}): Context {\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public analyze(program: string, params: LitsParams = {}): Analysis {\n const ast = this.generateAst(program, params)\n\n return analyze(ast, params)\n }\n\n public tokenize(program: string, tokenizeParams: TokenizeParams = {}): TokenStream {\n return tokenize(program, { ...tokenizeParams, debug: tokenizeParams.debug ?? this.debug })\n }\n\n public parse(tokenStream: TokenStream): Ast {\n return parse(tokenStream)\n }\n\n public evaluate(ast: Ast, params: LitsParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transform(tokenStream: TokenStream, transformer: (name: string) => string): TokenStream {\n return transformTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: LitsParams = {}): Any {\n const fnName = 'FN_2eb7b316-471c-5bfa-90cb-d3dfd9164a59'\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(' ')\n const program = `(${fnName} ${paramsString})`\n const ast = this.generateAst(program, params)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateAst(program: string, params: LitsParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, { debug: params.debug ?? this.debug, filePath: params.filePath })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import type { CollectionApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const collectionReference: Record<CollectionApiName, FunctionReference<'Collection'>> = {\n 'count': {\n title: 'count',\n category: 'Collection',\n linkName: 'count',\n returns: {\n type: 'number',\n },\n args: {\n coll: {\n type: ['collection', 'string', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns number of elements in $coll.',\n examples: [\n '(count [1 2 3])',\n '(count [])',\n '(count (object :a 1))',\n '(count \"\")',\n '(count \"Albert\")',\n '(count nil)',\n ],\n },\n 'get': {\n title: 'get',\n category: 'Collection',\n linkName: 'get',\n returns: {\n type: 'any',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'key': {\n type: ['string', 'integer'],\n },\n 'not-found': {\n type: 'any',\n description: 'Default value to return if $key is not found.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'key'] },\n { argumentNames: ['coll', 'key', 'not-found'] },\n ],\n description: 'Returns value in $coll mapped at \\`key\\`.',\n examples: [\n `\n(get\n [1 2 3]\n 1)`,\n `\n(get\n []\n 1)`,\n `\n(get\n []\n 1\n \"default\")`,\n `\n(get\n (object :a 1)\n :a)`,\n `\n(get\n (object :a 1)\n :b)`,\n `\n(get\n (object :a 1)\n :b\n \"default\")`,\n `\n(get\n nil\n :a)`,\n `\n(get\n nil\n :b\n \"default\")`,\n ],\n },\n 'get-in': {\n title: 'get-in',\n category: 'Collection',\n linkName: 'get-in',\n returns: {\n type: 'any',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'keys': {\n type: 'array',\n },\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['coll', 'keys'] },\n { argumentNames: ['coll', 'keys', 'not-found'] },\n ],\n description: 'Returns the value in a nested collection, where $keys is an array of keys. Returns $not-found if the key is not present. If $not-found is not set, `nil` is returned.',\n examples: [\n `\n(get-in\n [[1 2 3] [4 {:a \"Kalle\"} 6]]\n [1 1 :a 0])`,\n `\n(get-in\n [[1 2 3] [4 {:a \"Kalle\"} 6]]\n [1 1 :b 0])`,\n `\n(get-in\n [[1 2 3] [4 {:a \"Kalle\"} 6]]\n [1 1 :b 0]\n \"Lisa\")`,\n ],\n },\n 'contains?': {\n title: 'contains?',\n category: 'Collection',\n linkName: 'contains_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'nil'],\n },\n key: {\n type: ['string', 'number'],\n },\n },\n variants: [\n { argumentNames: ['coll', 'key'] },\n ],\n description: 'Returns `true` if $coll contains $key, otherwise returns `false`.',\n examples: [\n `\n(contains?\n []\n 1)`,\n `\n(contains?\n [1]\n 1)`,\n `\n(contains?\n [1 2 3]\n 1)`,\n `\n(contains?\n {}\n :a)`,\n `\n(contains?\n {:a 1 :b 2}\n :a)`,\n ],\n },\n 'has?': {\n title: 'has?',\n category: 'Collection',\n linkName: 'has_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'nil'],\n },\n value: {\n type: ['any'],\n description: 'Only support primitive values: `number`, `string`, `boolean`, or `nil`.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'value'] },\n ],\n description: 'Returns `true` if $coll has $value, otherwise returns `false`.',\n examples: [\n `\n(has?\n [1 2 3]\n 1)`,\n `\n(has?\n [1 2 3]\n 0)`,\n `\n(has?\n {:a 1 :b 2}\n 1)`,\n `\n(has?\n {:a 1 :b 2}\n 0)`,\n `\n(has?\n \"Albert\"\n :A)`,\n `\n(has?\n \"Albert\"\n :a)`,\n `\n(has?\n nil\n :a)`,\n ],\n },\n 'has-some?': {\n title: 'has-some?',\n category: 'Collection',\n linkName: 'has-some_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n values: {\n type: 'any',\n array: true,\n description: 'Only support primitive values: `number`, `string`, `boolean`, or `nil`.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'values'] },\n ],\n description: 'Returns `true` if $coll has any of the elements in $values, otherwise returns `false`.',\n examples: [\n `\n(has-some?\n []\n [])`,\n `\n(has-some?\n [1 2 3]\n [])`,\n `\n(has-some?\n [1 2 3]\n [0])`,\n `\n (has-some?\n [1 2 3]\n [0 1])`,\n `\n(has-some?\n (object :a 1 :b 2)\n [0])`,\n `\n(has-some?\n (object :a 1 :b 2)\n [0 1])`,\n `\n(has-some?\n \"Albert\"\n \"xyz\")`,\n `\n(has-some?\n \"Albert\"\n \"xyzl\")`,\n `\n(has-some?\n [:a :b :c :d]\n \"xyz\")`,\n `\n(has-some?\n [:a :b :c :d]\n \"xyzc\")`,\n `\n(has-some?\n nil\n [1])`,\n `\n(has-some?\n nil\n \"\")`,\n ],\n },\n 'has-every?': {\n title: 'has-every?',\n category: 'Collection',\n linkName: 'has-every_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n values: {\n type: 'any',\n array: true,\n description: 'Only support primitive values: `number`, `string`, `boolean`, or `nil`.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'values'] },\n ],\n description: 'Returns `true` if $coll has all of the elements in $values, otherwise returns `false`.',\n examples: [\n `\n(has-every?\n []\n [])`,\n `\n(has-every?\n [1 2 3]\n [])`,\n `\n(has-every?\n [1 2 3]\n [0 1])`,\n `\n(has-every?\n [1 2 3]\n [1 2])`,\n `\n(has-every?\n (object :a 1 :b 2)\n [0 1])`,\n `\n(has-every?\n (object :a 1 :b 2)\n [1 2])`,\n `\n(has-every?\n \"Albert\"\n \"xyz\")`,\n `\n(has-every?\n \"Albert\"\n \"treblA\")`,\n `\n(has-every?\n [:a :b :c :d]\n \"xyz\")`,\n `\n(has-every?\n [:a :b :c :d]\n \"dcba\")`,\n `\n(has-every?\n nil\n \"abc\")`,\n `\n(has-every?\n nil\n [0, 1, nil])`,\n `\n(has-every?\n nil\n nil)`,\n `\n(has-every?\n [1, 2, 3]\n nil)`,\n ],\n },\n 'assoc': {\n title: 'assoc',\n category: 'Collection',\n linkName: 'assoc',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n key: {\n type: ['string', 'number'],\n },\n value: {\n type: 'any',\n },\n kvs: {\n type: 'any',\n description: 'Key-value pairs to associate.',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'key', 'value'] },\n { argumentNames: ['coll', 'key', 'value', 'kvs'] },\n ],\n description: `\nAdd or replace the value of element $key to $value in $coll. Repeated for all key-value pairs in $kvs. \nIf $coll is an \\'array\\', $key must be \\`number\\` satisfying \\`0 <=\\` $key \\`<= length\\`.`,\n examples: [\n `\n(assoc\n [1 2 3]\n 1\n \"Two\")`,\n `\n(assoc\n [1 2 3]\n 3\n \"Four\")`,\n `\n(assoc\n {:a 1 :b 2}\n :a\n \"One\")`,\n `\n(assoc\n {:a 1 :b 2}\n :c\n \"Three\")`,\n `\n(assoc\n :Albert\n 6\n :a)`,\n ],\n },\n 'assoc-in': {\n title: 'assoc-in',\n category: 'Collection',\n linkName: 'assoc-in',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n keys: {\n type: ['number', 'string'],\n array: true,\n },\n value: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['coll', 'keys', 'value'] },\n ],\n description: `\nAssociates a value in the nested collection $coll, where $keys is an array of keys and $value is the new value.\n\nIf any levels do not exist, objects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\n(assoc-in\n {}\n [:a :b :c]\n \"Albert\")`,\n `\n(assoc-in\n [1 2 [1 2 3]]\n [2 1]\n \"Albert\")`,\n `\n(assoc-in\n [1 2 {\"name\" \"albert\"}]\n [2 \"name\" 0]\n :A)`,\n ],\n },\n 'concat': {\n title: 'concat',\n category: 'Collection',\n linkName: 'concat',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n colls: {\n type: 'collection',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n { argumentNames: ['coll', 'colls'] },\n ],\n description: 'Concatenates collections into one collection.',\n examples: [\n '(concat :A :l :b :e :r :t)',\n '(concat [1 2] [3 4])',\n '(concat [] [3 4])',\n '(concat [1 2] [])',\n '(concat [1 2] [3 4] [5 6])',\n '(concat [])',\n '(concat {:a 1 :b 2} {:b 1 :c 2})',\n '(concat {} {:a 1})',\n ],\n },\n 'not-empty': {\n title: 'not-empty',\n category: 'Collection',\n linkName: 'not-empty',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns `nil` if $coll is empty or `nil`, otherwise $coll.',\n examples: [\n '(not-empty [])',\n '(not-empty [1 2 3])',\n '(not-empty {})',\n '(not-empty {:a 2})',\n '(not-empty \"\")',\n '(not-empty \"Albert\")',\n '(not-empty nil)',\n ],\n },\n 'every?': {\n title: 'every?',\n category: 'Collection',\n linkName: 'every_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `true` if all entries in $coll pass the test implemented by $fn, otherwise returns `false`.',\n examples: [\n `\n(every?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(every?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(every?\n number?\n [])`,\n `\n(every?\n number?\n \"\")`,\n `\n(every?\n number?\n {})`,\n `\n(every?\n #(even? (second %))\n {:a 2 :b 4})`,\n `\n(every?\n #(even? (second %))\n {:a 2 :b 3})`,\n ],\n },\n 'not-every?': {\n title: 'not-every?',\n category: 'Collection',\n linkName: 'not-every_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `true` if at least one element in $coll does not pass the test implemented by $fn, otherwise returns `false`.',\n examples: [\n `\n(not-every?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(not-every?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(not-every?\n number?\n [])`,\n `\n(not-every?\n number?\n \"\")`,\n `\n(not-every?\n number?\n {})`,\n `\n(not-every?\n #(even? (second %))\n {:a 2 :b 4})`,\n `\n(not-every?\n #(even? (second %))\n {:a 2 :b 3})`,\n ],\n },\n 'any?': {\n title: 'any?',\n category: 'Collection',\n linkName: 'any_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `true` if any element in $coll pass the test implemented by $fn, otherwise returns `false`.',\n examples: [\n `\n(any?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(any?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(any?\n number?\n [])`,\n `\n(any?\n number?\n \"\")`,\n `\n(any?\n number?\n {})`,\n `\n(any?\n #(even? (second %))\n {:a 2 :b 3})`,\n `\n(any?\n #(even? (second %))\n {:a 1 :b 3})`,\n ],\n },\n 'not-any?': {\n title: 'not-any?',\n category: 'Collection',\n linkName: 'not-any_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `false` if any element in $coll pass the test implemented by $fn, otherwise returns `true`.',\n examples: [\n `\n(not-any?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(not-any?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(not-any?\n number?\n [])`,\n `\n(not-any?\n number?\n \"\")`,\n `\n(not-any?\n number?\n {})`,\n `\n(not-any?\n #(even? (second %))\n {:a 2 :b 3})`,\n `\n(not-any?\n #(even? (second %))\n {:a 1 :b 3})`,\n ],\n },\n 'update': {\n title: 'update',\n category: 'Collection',\n linkName: 'update',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'key': {\n type: ['string', 'number'],\n },\n 'fn': {\n type: 'function',\n },\n 'fn-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'value', 'fn'] },\n { argumentNames: ['coll', 'value', 'fn', 'fn-args'] },\n ],\n description: `\nUpdates a value in the $coll collection, where $key is a key. $fn is a function\nthat will take the old value and any supplied $fn-args and\nreturn the new value.\nIf the key does not exist, \\`nil\\` is passed as the old value.`,\n examples: [\n `\n(def x {:a 1 :b 2})\n(update x :a inc)`,\n `\n(def x {:a 1 :b 2})\n(update\n x\n :c\n (fn [val]\n (if (nil? val) 0 (inc val))))`,\n ],\n },\n 'update-in': {\n title: 'update-in',\n category: 'Collection',\n linkName: 'update-in',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'keys': {\n type: 'array',\n },\n 'fn': {\n type: 'function',\n },\n 'fn-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'keys', 'fn'] },\n { argumentNames: ['coll', 'keys', 'fn', 'fn-args'] },\n ],\n description: `Updates a value in the $coll collection, where $keys is an array of\nkeys and $fn is a function that will take the old value and\nany supplied $fn-args and return the new value. If any levels do not exist,\nobjects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\n(update-in\n {:a [1 2 3]}\n [:a 1]\n (fn [val]\n (when (nil? val) 0)))`,\n `\n(update-in\n {:a {:foo :bar}}\n [:a :foo]\n (fn [val]\n (if (nil? val) \"?\" \"!\")))`,\n `\n(update-in\n {:a {:foo :bar}}\n [:a :baz]\n (fn [val]\n (if (nil? val) \"?\" \"!\")))`,\n `\n(update-in\n {:a [1 2 3]}\n [:a 1]\n *\n 10\n 10\n 10)`,\n ],\n },\n}\n","import type { FunctionalApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const functionalReference: Record<FunctionalApiName, FunctionReference<'Functional'>> = {\n 'apply': {\n title: 'apply',\n category: 'Functional',\n linkName: 'apply',\n returns: {\n type: 'any',\n },\n args: {\n fn: {\n type: 'function',\n },\n args: {\n type: 'array',\n },\n },\n variants: [\n { argumentNames: ['fn', 'args'] },\n ],\n description: 'Call supplied function $fn with specified arguments $args.',\n examples: [\n `\n(apply + [1 2 3])`,\n `\n(apply\n (fn [x y]\n (sqrt\n (+\n (* x x)\n (* y y))))\n [3 4])`,\n ],\n },\n 'identity': {\n title: 'identity',\n category: 'Functional',\n linkName: 'identity',\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns $x.',\n examples: ['(identity 1)', '(identity \"Albert\")', '(identity {:a 1})', '(identity nil)'],\n },\n 'partial': {\n title: 'partial',\n category: 'Functional',\n linkName: 'partial',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn', 'args'] },\n ],\n description: `Takes a function $fn and a optional number arguments $args to $fn.\nIt returns a function that takes the additional additional arguments.\nWhen called, the returned function calls \\`(\\`$fn \\`...\\`$args\\` ...additional_arguments)\\`.`,\n examples: [\n '(partial + 100)',\n `\n(def plusMany (partial + 100 1000))\n(plusMany 1 10)`,\n `\n(def addHundred (partial + 100))\n(addHundred 10)`,\n ],\n },\n 'comp': {\n title: 'comp',\n category: 'Functional',\n linkName: 'comp',\n returns: {\n type: 'function',\n },\n args: {\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fns'] },\n ],\n description: `Takes a variable number of functions and returns a function that is the composition of those.\n\n The returned function takes a variable number of arguments,\n applies the rightmost function to the args,\n the next function (right-to-left) to the result, etc.`,\n examples: [\n `\n(def negative-quotient (comp - /))\n(negative-quotient 9 3)`,\n `\n(\n #((apply comp first (repeat %2 rest)) %1)\n [1 2 3 4 5 6 7]\n 3)`,\n `\n(def x {\"bar\" {\"foo\" 42}})\n((comp \"foo\" \"bar\") x)`,\n ],\n },\n 'constantly': {\n title: 'constantly',\n category: 'Functional',\n linkName: 'constantly',\n returns: {\n type: 'function',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns a function that takes any number of arguments and always returns $x.',\n examples: [\n `\n(def always-true (constantly true))\n(always-true 9 3)`,\n `\n(\n #((apply constantly first (repeat %2 rest)) %1)\n [1 2 3 4 5 6 7]\n 3)`,\n ],\n },\n\n 'juxt': {\n title: 'juxt',\n category: 'Functional',\n linkName: 'juxt',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'fns'] },\n ],\n description: `Takes one or many function and returns a function that is the juxtaposition of those functions. \nThe returned function takes a variable number of args,\nand returns a vector containing the result of applying each function to the args (left-to-right).`,\n examples: [\n `\n(\n (juxt + * min max)\n 3\n 4\n 6)`,\n `\n(\n (juxt :a :b)\n {:a 1, :b 2, :c 3, :d 4})`,\n `\n(apply\n (juxt + * min max)\n (range 1 11))`,\n ],\n },\n 'complement': {\n title: 'complement',\n category: 'Functional',\n linkName: 'complement',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n ],\n description: 'Takes a function $fn and returns a new function that takes the same arguments as f, has the same effects, if any, and returns the opposite truth value.',\n examples: ['((complement >) 1 3)', '((complement <) 1 3)', '((complement +) 1 3)', '((complement +) 0 0)'],\n },\n 'every-pred': {\n title: 'every-pred',\n category: 'Functional',\n linkName: 'every-pred',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'fns'] },\n ],\n description: `\nTakes a number of predicates and returns a function that returns \\`true\\` if all predicates\nreturn a truthy value against all of its arguments, else it returns \\`false\\`.`,\n examples: [\n `\n(\n (every-pred string? #(> (count %1) 3))\n \"Albert\"\n \"Mojir\")`,\n `\n(\n (every-pred string? #(> (count %1) 3))\n \"Albert\"\n :M)`,\n `\n(\n (every-pred string? #(> (count %1) 3))\n \"Albert\"\n [1 2 3])`,\n ],\n },\n 'some-pred': {\n title: 'some-pred',\n category: 'Functional',\n linkName: 'some-pred',\n clojureDocs: null,\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'fns'] },\n ],\n description: 'Takes a number of `predicates` and returns a function that returns \\`true\\` if at least one of the `predicates` return a truthy \\`true\\` value against at least one of its arguments, else it returns `false`.',\n examples: [\n '((some-pred string? #(> (count %1) 3)) \"Albert\" \"Mojir\")',\n '((some-pred string? #(> (count %1) 3)) :A :M)',\n '((some-pred string? #(> (count %1) 3)) :A [1 2 3])',\n '((some-pred string? #(> (count %1) 3)) [1 2 3] [2])',\n ],\n },\n 'fnil': {\n title: 'fnil',\n category: 'Functional',\n linkName: 'fnil',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n arg: {\n type: 'any',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn', 'arg'] },\n { argumentNames: ['fn', 'arg', 'args'] },\n ],\n description: 'Takes a function $fn, and returns a function that calls $fn, replacing a nil argument to the corresponding argument.',\n examples: [\n '((fnil + 1 2) 0 0)',\n '((fnil + 1 2) nil 0)',\n '((fnil + 1 2) 0 nil)',\n '((fnil + 1 2) nil nil)',\n '((fnil + 1 2) nil nil 3 4)',\n ],\n },\n}\n","import type { ArrayApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const arrayReference: Record<ArrayApiName, FunctionReference<'Array'>> = {\n array: {\n title: 'array',\n category: 'Array',\n linkName: 'array',\n clojureDocs: 'vector',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Makes new array from $values.',\n examples: [\n '(array 1 2 3)',\n '(array (array nil false true))',\n '[]',\n '[1 2 3]',\n '[[nil false true]]',\n '[]',\n '([1 2 3] 1)',\n '([1 2 3 4 5 6 7 8 9] 3)',\n ],\n },\n range: {\n title: 'range',\n category: 'Array',\n linkName: 'range',\n returns: {\n type: 'number',\n array: true,\n },\n args: {\n start: {\n type: 'number',\n },\n end: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['end'] },\n { argumentNames: ['start', 'end'] },\n { argumentNames: ['start', 'end', 'step'] },\n ],\n description: `$range creates an array with a range of numbers from $start to $end (exclusive), by $step.\n\n$start defaults to 0. \n$step defaults to 1.`,\n examples: [\n '(range 4)',\n '(range 1 4)',\n '(range 0.4 4.9)',\n `\n(range\n 0.25 ;; start value\n 1 ;; end value (exclusive)\n 0.25 ;; step value\n)`,\n ],\n },\n repeat: {\n title: 'repeat',\n category: 'Array',\n linkName: 'repeat',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n n: {\n type: 'integer',\n },\n x: {\n type: 'any',\n },\n },\n variants: [{\n argumentNames: ['n', 'x'],\n }],\n description: 'Returns an array with $x repeated $n times.',\n examples: [\n '(repeat 3 10)',\n '(repeat 0 10)',\n '(repeat 5 \"Albert\")',\n ],\n },\n flatten: {\n title: 'flatten',\n category: 'Array',\n linkName: 'flatten',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n x: {\n type: ['array', 'any'],\n description: 'If $x is not an array, `[ ]` is returned.',\n },\n },\n variants: [{\n argumentNames: ['x'],\n }],\n description: 'Takes a nested array $x and flattens it.',\n examples: [\n '(flatten [1 2 [3 4] 5])',\n `\n(let [foo :bar]\n (flatten\n [1\n \" 2 A \"\n [foo [4 [:ABC]]] 6]))`,\n\n '(flatten 12)',\n ],\n },\n mapcat: {\n title: 'mapcat',\n category: 'Array',\n linkName: 'mapcat',\n returns: {\n type: 'collection',\n },\n args: {\n f: {\n type: 'function',\n },\n colls: {\n type: 'collection',\n array: true,\n },\n },\n variants: [{\n argumentNames: ['f', 'colls'],\n }],\n description: 'Returns the result of applying concat to the result of applying map to $f and $colls.',\n examples: [\n '(mapcat reverse [[3 2 1 0] [6 5 4] [9 8 7]])',\n '(mapcat reverse [[3 2 1 0] [6 [5] 4] [9 8 7]])',\n '(defn foo [n] [(- n 1) n (+ n 1)]) (mapcat foo [1 2 3])',\n '(mapcat #(remove even? %1) [[1 2] [2 2] [2 3]])',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { SequenceApiName } from '../api'\n\nexport const sequenceReference: Record<SequenceApiName, FunctionReference<'Sequence'>> = {\n 'nth': {\n title: 'nth',\n category: 'Sequence',\n linkName: 'nth',\n returns: {\n type: 'any',\n },\n args: {\n 'seq': {\n type: ['sequence', 'nil'],\n },\n 'n': {\n type: 'integer',\n },\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'not-found'] },\n ],\n description: 'Accesses element $n of $seq. Accessing out-of-bounds indices returns $not-found, if present, else `nil`.',\n examples: [\n '(nth [1 2 3] 1)',\n '(nth [1 2 3] 3)',\n '(nth [1 2 3] -1)',\n '(nth [1 2 3] 3 99)',\n '(nth \"A string\" 1)',\n '(nth \"A string\" 3)',\n '(nth \"A string\" -3)',\n '(nth \"A string\" 30 :X)',\n '(nth nil 1)',\n '(nth nil 1 \"Default value\")',\n ],\n },\n 'push': {\n title: 'push',\n category: 'Sequence',\n linkName: 'push',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n values: {\n type: 'any',\n rest: true,\n description: 'At least one.',\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the end of it.',\n examples: [\n '(push [1 2 3] 4)',\n '(push [1 2 3] 4 5 6)',\n '(def l [1 2 3]) (push l 4) l',\n ],\n },\n 'pop': {\n title: 'pop',\n category: 'Sequence',\n linkName: 'pop',\n returns: {\n type: ['sequence', 'nil'],\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with last element removed. If $seq is empty `nil` is returned.',\n examples: [\n '(pop [1 2 3])',\n '(pop [])',\n ],\n },\n 'unshift': {\n title: 'unshift',\n category: 'Sequence',\n linkName: 'unshift',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n values: {\n type: 'any',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the beginning.',\n examples: [\n '(unshift [1 2 3] 4)',\n '(unshift [1 2 3] 4 5 6)',\n `\n(def l [1 2 3])\n(unshift l 4)\nl`,\n ],\n },\n 'shift': {\n title: 'shift',\n category: 'Sequence',\n linkName: 'shift',\n clojureDocs: null,\n returns: {\n type: ['sequence', 'nil'],\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with first element removed. If $seq is empty `nil` is returned.',\n examples: [\n '(shift [1 2 3])',\n '(shift [])',\n ],\n },\n 'slice': {\n title: 'slice',\n category: 'Sequence',\n linkName: 'slice',\n clojureDocs: null,\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n start: {\n type: 'integer',\n description: 'Defaults to `0`.',\n },\n end: {\n type: 'integer',\n description: 'Defaults lenght of sequence + 1.',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'start'] },\n { argumentNames: ['seq', 'start', 'end'] },\n ],\n description: 'Returns a copy of a portion of $seq from index $start (inclusive) to $end (exclusive).',\n examples: [\n '(slice [1 2 3 4 5] 2 4)',\n '(slice [1 2 3 4 5] 2)',\n ],\n },\n 'reductions': {\n title: 'reductions',\n category: 'Sequence',\n linkName: 'reductions',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n array: true,\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n { argumentNames: ['fn', 'start', 'seq'] },\n ],\n description: 'Returns an array of the intermediate values of the reduction (see `reduce`) of $seq by $fn.',\n examples: [\n '(reductions + [1 2 3])',\n '(reductions + 10 [1 2 3])',\n '(reductions + 0 [])',\n `\n(reductions\n (fn [result value] (+ result (if (even? value) value 0)))\n 0\n [1 2 3 4 5 6 7 8 9])`,\n ],\n },\n 'reduce': {\n title: 'reduce',\n category: 'Sequence',\n linkName: 'reduce',\n returns: {\n type: 'any',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n { argumentNames: ['fn', 'start', 'seq'] },\n ],\n description: 'Runs $fn function on each element of the $seq, passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n '(reduce + [1 2 3])',\n '(reduce + 0 [1 2 3])',\n '(reduce + 0 [])',\n `\n(reduce\n (fn [result value] (+ result (if (even? value) value 0)))\n 0\n [1 2 3 4 5 6 7 8 9])`,\n ],\n },\n 'reduce-right': {\n title: 'reduce-right',\n category: 'Sequence',\n linkName: 'reduce-right',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n { argumentNames: ['fn', 'start', 'seq'] },\n ],\n description: 'Runs $fn function on each element of the $seq (starting from the last item), passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n '(reduce-right str [:A :B :C] \"\")',\n ],\n },\n 'map': {\n title: 'map',\n category: 'Sequence',\n linkName: 'map',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Creates a new array populated with the results of calling $fn on every elements in $seq.',\n examples: [\n '(map str [\"Albert\" \"Mojir\" 42])',\n '(map str [])',\n '(map + [1 2 3] [1 2 3])',\n '(map max [2 6 3] [2 4 7] [1 6 2])',\n ],\n },\n 'filter': {\n title: 'filter',\n category: 'Sequence',\n linkName: 'filter',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Creates a new array with all elements that pass the test implemented by $fn.',\n examples: [\n `\n(filter\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(filter\n (fn [x] (> x 10))\n [5 10 15 20])`,\n ],\n },\n 'position': {\n title: 'position',\n category: 'Sequence',\n linkName: 'position',\n clojureDocs: null,\n returns: {\n type: ['number', 'nil'],\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the index of the first elements that passes the test implemented by $fn. If no element was found, `nil` is returned.',\n examples: [\n `\n(position\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(position\n (fn [x] (> x 10))\n [5 10 15 20])`,\n `\n(position\n (fn [x] (> x 100))\n [5 10 15 20])`,\n `\n(position\n (fn [x] (> x 100))\n nil)`,\n ],\n },\n 'index-of': {\n title: 'index-of',\n category: 'Sequence',\n linkName: 'index-of',\n clojureDocs: null,\n returns: {\n type: ['number', 'nil'],\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'x'] },\n ],\n description: 'Returns the index of $x in $seq. If element is not present in $seq `nil` is returned.',\n examples: [\n '(index-of [\"Albert\" \"Mojir\" 160 [1 2]] \"Mojir\")',\n '(index-of [5 10 15 20] 15)',\n '(index-of [5 10 15 20] 1)',\n '(index-of nil 1)',\n ],\n },\n 'some': {\n title: 'some',\n category: 'Sequence',\n linkName: 'some',\n returns: {\n type: 'any',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the first element that passes the test implemented by $fn. I no element was found, `nil` is returned.',\n examples: [\n `\n(some\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(some\n (fn [x] (> x 10))\n [5 10 15 20])`,\n `\n(some\n (fn [x] (> x 10))\n [1 2 3 4])`,\n `\n(some\n (fn [x] (> x 10))\n [])`,\n `\n(some\n (fn [x] (> x 10))\n nil)`,\n ],\n },\n 'reverse': {\n title: 'reverse',\n category: 'Sequence',\n linkName: 'reverse',\n returns: {\n type: ['sequence', 'nil'],\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, creates a new array with the elements from $seq in reversed order. If $seq is a string, returns new reversed string.',\n examples: [\n '(reverse [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(reverse [])',\n '(reverse \"Albert\")',\n '(reverse nil)',\n ],\n },\n 'first': {\n title: 'first',\n category: 'Sequence',\n linkName: 'first',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the first element of $seq. If $seq is empty or `nil`, `nil` is returned.',\n examples: [\n '(first [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(first [])',\n '(first nil)',\n ],\n },\n 'second': {\n title: 'second',\n category: 'Sequence',\n linkName: 'second',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the second element of $seq. If $seq has less than two elements or is `nil`, `nil` is returned.',\n examples: [\n '(second [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(second [1])',\n '(second [])',\n '(second nil)',\n ],\n },\n 'last': {\n title: 'last',\n category: 'Sequence',\n linkName: 'last',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the last element of $seq. If $seq is empty, `nil` is returned.',\n examples: [\n '(last [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(last [1 2])',\n '(last [1])',\n '(last [])',\n '(last nil)',\n ],\n },\n 'rest': {\n title: 'rest',\n category: 'Sequence',\n linkName: 'rest',\n returns: {\n type: ['sequence', 'nil'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: `If $seq is an array, returns a new array with all but the first element from $seq.\nIf $seq has less than two elements, an empty array is returned.\nFor string $seq returns all but the first characters in $seq.`,\n examples: [\n '(rest [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(rest [\"Albert\"])',\n '(rest [])',\n '(rest \"Albert\")',\n '(rest :A)',\n '(rest \"\")',\n ],\n },\n 'nthrest': {\n title: 'nthrest',\n category: 'Sequence',\n linkName: 'nthrest',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first $n elements from $seq. For string $seq returns all but the first $n characters in $seq.',\n examples: [\n '(nthrest [\"Albert\" \"Mojir\" 160 [1 2]] 2)',\n '(nthrest \"Albert\" 3)',\n '(nthrest \"Albert\" 10)',\n '(nthrest [] 0)',\n '(nthrest \"\" 0)',\n ],\n },\n 'next': {\n title: 'next',\n category: 'Sequence',\n linkName: 'next',\n returns: {\n type: ['sequence', 'nil'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first element from $seq. If $seq has less than two elements, `nil` is returned. For string $seq returns all but the first characters in $seq. If length of string $seq is less than two, `nil` is returned.',\n examples: [\n '(next [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(next [\"Albert\"])',\n '(next [])',\n '(next \"Albert\")',\n '(next :A)',\n '(next \"\")',\n ],\n },\n 'nthnext': {\n title: 'nthnext',\n category: 'Sequence',\n linkName: 'nthnext',\n returns: {\n type: ['sequence', 'nil'],\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first $n elements from $seq. If $seq has less or equal than $n elements, `nil` returned. For string $seq returns all but the first $n characters in $seq. If length of string $seq is less or equal than $n, `nil` is returned.',\n examples: [\n '(nthnext [\"Albert\" \"Mojir\" 160 [1 2]] 2)',\n '(nthnext \"Albert\" 3)',\n '(nthnext \"Albert\" 6)',\n '(nthnext [] 0)',\n '(nthnext \"\" 0)',\n ],\n },\n 'cons': {\n title: 'cons',\n category: 'Sequence',\n linkName: 'cons',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n x: {\n type: 'any',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['x', 'seq'] },\n ],\n description: 'Constructs a new array with $x as first element and $seq as the rest.',\n examples: [\n '(cons \"Hi\" [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(cons \"Hi\" [])',\n ],\n },\n 'take': {\n title: 'take',\n category: 'Sequence',\n linkName: 'take',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array/string with the $n first elements from $seq.',\n examples: [\n '(take 3 [1 2 3 4 5])',\n '(take 0 [1 2 3 4 5])',\n '(take 2 \"Albert\")',\n '(take 50 \"Albert\")',\n ],\n },\n 'take-last': {\n title: 'take-last',\n category: 'Sequence',\n linkName: 'take-last',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array with the $n last elements from $seq.',\n examples: [\n '(take-last 3 [1 2 3 4 5])',\n '(take-last 0 [1 2 3 4 5])',\n ],\n },\n 'take-while': {\n title: 'take-while',\n category: 'Sequence',\n linkName: 'take-while',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the members of $seq in order, stopping before the first one for which `predicate` returns a falsy value.',\n examples: [\n `\n(take-while\n (fn [x] (< x 3))\n [1 2 3 2 1])`,\n `\n(take-while\n (fn [x] (> x 3))\n [1 2 3 2 1])`,\n ],\n },\n 'drop': {\n title: 'drop',\n category: 'Sequence',\n linkName: 'drop',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array/string with the $n first elements dropped from $seq.',\n examples: [\n '(drop 3 [1 2 3 4 5])',\n '(drop 0 [1 2 3 4 5])',\n '(drop 2 \"Albert\")',\n '(drop 50 \"Albert\")',\n ],\n },\n 'drop-last': {\n title: 'drop-last',\n category: 'Sequence',\n linkName: 'drop-last',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array with the $n last elements dropped from $seq.',\n examples: [\n '(drop-last 3 [1 2 3 4 5])',\n '(drop-last 0 [1 2 3 4 5])',\n ],\n },\n 'drop-while': {\n title: 'drop-while',\n category: 'Sequence',\n linkName: 'drop-while',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the members of $seq in order, skipping the fist elements for witch the `predicate` returns a truethy value.',\n examples: [\n `\n(drop-while\n (fn [x] (< x 3))\n [1 2 3 2 1])`,\n `\n(drop-while\n (fn [x] (> x 3))\n [1 2 3 2 1])`,\n ],\n },\n 'sort': {\n title: 'sort',\n category: 'Sequence',\n linkName: 'sort',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns a new sequence with the elements from $seq sorted according to $fn. If no $fn is supplied, builtin `compare` will be used.',\n examples: [\n '(sort [3 1 2])',\n `\n(sort\n (fn [a b] (cond (< a b) -1 (> a b) 1 true -1))\n [3 1 2])`,\n `\n(sort\n (fn [a b] (cond (> a b) -1 (< a b) 1 true -1))\n [3 1 2])`,\n ],\n },\n 'sort-by': {\n title: 'sort-by',\n category: 'Sequence',\n linkName: 'sort-by',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n keyfn: {\n type: 'function',\n },\n comp: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'keyfn'] },\n { argumentNames: ['seq', 'keyfn', 'comp'] },\n ],\n description: 'Returns a sorted sequence of the items in $seq, where the sort order is determined by comparing `(keyfn item)`. If no $comp is supplied, uses builtin `compare`.',\n examples: [\n '(sort-by count [\"Albert\" \"Mojir\" \"Nina\"])',\n '(sort-by lower-case #(compare %2 %1) \"Albert\")',\n ],\n },\n 'random-sample!': {\n title: 'random-sample!',\n category: 'Sequence',\n linkName: 'random-sample_exclamation',\n clojureDocs: 'random-sample',\n returns: {\n type: 'sequence',\n },\n args: {\n prob: {\n type: 'number',\n description: 'Probability of including an element from $seq. Between 0 and 1.',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['prob', 'seq'] },\n ],\n description: 'Each element from $seq has the probability $prob to be included in the result.',\n examples: [\n '(random-sample! 0.5 [1 2 3 4 5 6 7 8 9 10])',\n '(random-sample! 0.5 \"Albert\")',\n ],\n },\n 'rand-nth!': {\n title: 'rand-nth!',\n category: 'Sequence',\n linkName: 'rand-nth_exclamation',\n clojureDocs: 'rand-nth',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a random element from $seq. Returns `nil` if $seq is empty.',\n examples: [\n '(rand-nth! [1 2 3 4 5 6 7 8 9 10])',\n '(rand-nth! \"Albert\")',\n '(rand-nth! [])',\n ],\n },\n 'shuffle!': {\n title: 'shuffle!',\n category: 'Sequence',\n linkName: 'shuffle_exclamation',\n clojureDocs: 'shuffle',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a shuffled copy of $seq.',\n examples: [\n '(shuffle! [1 2 3 4 5 6 7 8 9 10])',\n '(shuffle! \"Albert Mojir\")',\n '(shuffle! [1 2])',\n '(shuffle! [1])',\n '(shuffle! [])',\n ],\n },\n 'distinct': {\n title: 'distinct',\n category: 'Sequence',\n linkName: 'distinct',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with no duplicates.',\n examples: [\n '(distinct [1 2 3 1 3 5])',\n '(distinct \"Albert Mojir\")',\n '(distinct [])',\n '(distinct \"\")',\n ],\n },\n 'remove': {\n title: 'remove',\n category: 'Sequence',\n linkName: 'remove',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns a new sequence of items in $seq for witch ``(pred item)`` returns a falsy value.',\n examples: [\n '(remove even? [1 2 3 1 3 5])',\n '(remove #(has? \"aoueiyAOUEIY\" %1) \"Albert Mojir\")',\n ],\n },\n 'remove-at': {\n title: 'remove-at',\n category: 'Sequence',\n linkName: 'remove-at',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'number',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Returns a new sequence of all items in $seq except item at position $n.',\n examples: [\n '(remove-at 0 [1 2 3 1 3 5])',\n '(remove-at -1 [1 2 3 1 3 5])',\n '(remove-at 6 \"Albert Mojir\")',\n ],\n },\n 'split-at': {\n title: 'split-at',\n category: 'Sequence',\n linkName: 'split-at',\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n n: {\n type: 'number',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Returns a pair of sequence ``[(take pos input) (drop pos input)]``.',\n examples: [\n '(split-at 2 [1 2 3 4 5])',\n '(split-at 2 \"Albert\")',\n ],\n },\n 'split-with': {\n title: 'split-with',\n category: 'Sequence',\n linkName: 'split-with',\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns a pair of sequences ``[(take-while fn input) (drop-while fn input)]``.',\n examples: [\n '(split-with #(> %1 3) [1 2 3 4 5])',\n '(split-with #(<= %1 :Z) \"Albert\")',\n ],\n },\n 'frequencies': {\n title: 'frequencies',\n category: 'Sequence',\n linkName: 'frequencies',\n returns: {\n type: 'object',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns an object from distinct items in $seq to the number of times they appear. Note that all items in $seq must be valid object keys i.e. strings.',\n examples: [\n '(frequencies [\"Albert\" \"Mojir\" \"Nina\" \"Mojir\"])',\n '(frequencies \"Pneumonoultramicroscopicsilicovolcanoconiosis\")',\n ],\n },\n 'group-by': {\n title: 'group-by',\n category: 'Sequence',\n linkName: 'group-by',\n returns: {\n type: 'object',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns an object of the elements of $seq keyed by the result of $fn on each element. The value at each key will be an array of the corresponding elements.',\n examples: [\n '(group-by \"name\" [{\"name\" \"Albert\"} {\"name\" \"Albert\"} {\"name\" \"Mojir\"}])',\n '(group-by (fn [char] (if (has? \"aoueiAOUEI\" char) \"vowel\" \"other\")) \"Albert Mojir\")',\n ],\n },\n 'partition': {\n title: 'partition',\n category: 'Sequence',\n linkName: 'partition',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n pad: {\n type: 'array',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n { argumentNames: ['n', 'step', 'seq'] },\n { argumentNames: ['n', 'step', 'pad', 'seq'] },\n ],\n description: 'Returns an array of sequences of $n items each, at offsets $step apart. If $step is not supplied, defaults to $n. If a $pad array is supplied, use its elements as necessary to complete last partition upto $n items. In case there are not enough padding elements, return a partition with less than $n items.',\n examples: [\n '(partition 4 (range 20))',\n '(partition 4 (range 22))',\n '(partition 4 6 (range 20))',\n '(partition 4 3 (range 20))',\n '(partition 3 6 [:a] (range 20))',\n '(partition 4 6 [:a] (range 20))',\n '(partition 4 6 [:a :b :c :d] (range 20))',\n '(partition 3 1 [:a :b :c :d :e :f])',\n '(partition 10 [1 2 3 4])',\n '(partition 10 10 [1 2 3 4])',\n '(partition 10 10 [] [1 2 3 4])',\n '(partition 10 10 nil [1 2 3 4])',\n '(partition 5 \"superfragilistic\")',\n '(partition 5 5 nil \"superfragilistic\")',\n '(def foo [5 6 7 8]) (partition 2 1 foo foo)',\n ],\n },\n 'partition-all': {\n title: 'partition-all',\n category: 'Sequence',\n linkName: 'partition-all',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n { argumentNames: ['n', 'step', 'seq'] },\n ],\n description: 'Returns an array of sequences like partition, but may include partitions with fewer than n items at the end.',\n examples: [\n '(partition-all 4 [0 1 2 3 4 5 6 7 8 9])',\n '(partition 4 [0 1 2 3 4 5 6 7 8 9])',\n '(partition-all 2 4 [0 1 2 3 4 5 6 7 8 9])',\n ],\n },\n 'partition-by': {\n title: 'partition-by',\n category: 'Sequence',\n linkName: 'partition-by',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Applies $fn to each value in $seq, splitting it each time $fn returns a new value. Returns an array of sequences.',\n examples: [\n '(partition-by #(= 3 %1) [1 2 3 4 5])',\n '(partition-by odd? [1 1 1 2 2 3 3])',\n '(partition-by identity \"Leeeeeerrroyyy\")',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { MathApiName } from '../api'\n\nexport const mathReference: Record<MathApiName, FunctionReference<'Math'>> = { '+': {\n title: '+',\n category: 'Math',\n linkName: '_plus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes sum of $xs.',\n examples: ['(+)', '(+ 1)', '(+ 2 4)', '(+ 1 2 3 4)', '(+ (+ 2 3) (+ 5 6))'],\n}, '-': {\n title: '-',\n category: 'Math',\n linkName: '_minus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes difference between first value and sum of the rest. When called with only one argument, it does negation.',\n examples: ['(-)', '(- 1)', '(- 2 4)', '(- 4 3 2 1)'],\n}, '*': {\n title: '*',\n category: 'Math',\n linkName: '_star',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes product of $xs.',\n examples: ['(*)', '(* 2)', '(* 2 4)', '(* 1 2 3 4)'],\n}, '/': {\n title: '/',\n category: 'Math',\n linkName: '_slash',\n clojureDocs: '_fs',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes division or reciprocal. When called with one argument it computes reciprocal. When called with two or more arguments it does compute division of the first by the all remaining $xs.',\n examples: ['(/)', '(/ 2)', '(/ 2 4)', '(/ 4 3 2 1)'],\n}, 'mod': {\n title: 'mod',\n category: 'Math',\n linkName: 'mod',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Modulus of `dividend` and `divisor`. Truncates toward negative infinity.',\n examples: ['(mod 5 3)', '(mod 5.2 3.1)', '(mod -5 3)', '(mod 5 -3)', '(mod -5 -3)'],\n}, 'rem': {\n title: 'rem',\n category: 'Math',\n linkName: 'rem',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Remainder of dividing `dividend` and `divisor`.',\n examples: ['(rem 5 3)', '(rem 5.2 3.1)', '(rem -5 3)', '(rem 5 -3)', '(rem -5 -3)'],\n}, 'quot': {\n title: 'quot',\n category: 'Math',\n linkName: 'quot',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Quotient of dividing `dividend` and `divisor`.',\n examples: ['(quot 5 3)', '(quot 5.2 3.1)', '(quot -5 3)', '(quot 5 -3)', '(quot -5 -3)'],\n}, 'inc': {\n title: 'inc',\n category: 'Math',\n linkName: 'inc',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Adds one to $x.',\n examples: ['(inc 0)', '(inc 1)', '(inc 100.1)'],\n}, 'dec': {\n title: 'dec',\n category: 'Math',\n linkName: 'dec',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Subtracts one from $x.',\n examples: ['(dec 0)', '(dec 1)', '(dec 100.1)'],\n}, 'sqrt': {\n title: 'sqrt',\n category: 'Math',\n linkName: 'sqrt',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes square root of $x.',\n examples: ['(sqrt 0)', '(sqrt 9)', '(sqrt 2)'],\n}, 'cbrt': {\n title: 'cbrt',\n category: 'Math',\n linkName: 'cbrt',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes cube root of $x.',\n examples: ['(cbrt 0)', '(cbrt 27)', '(cbrt 2)', '(cbrt 1)'],\n}, 'pow': {\n title: 'pow',\n category: 'Math',\n linkName: 'pow',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Computes returns $a raised to the power of $b.',\n examples: ['(pow 2 3)', '(pow 2 0)', '(pow 2 -3)', '(pow -2 3)', '(pow -2 -3)'],\n}, 'exp': {\n title: 'exp',\n category: 'Math',\n linkName: 'exp',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes `e` rasied to the power of $x.',\n examples: ['(exp 3)', '(exp 0)', '(exp -3)', '(exp 3)'],\n}, 'round': {\n title: 'round',\n category: 'Math',\n linkName: 'round',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n decimals: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'decimals'] },\n ],\n description: 'Returns rounded $x. If $decimals is provided it return a number with that many decimals.',\n examples: [\n '(round 2)',\n '(round 2.49)',\n '(round 2.5)',\n '(round -2.49)',\n '(round -2.5)',\n '(round -2.501)',\n '(round 1.23456789 4)',\n ],\n}, 'trunc': {\n title: 'trunc',\n category: 'Math',\n linkName: 'trunc',\n clojureDocs: null,\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the integer part of $x by removing any fractional digits.',\n examples: ['(trunc 2)', '(trunc 2.49)', '(trunc 2.5)', '(trunc -2.49)', '(trunc -2.5)', '(trunc -2.501)'],\n}, 'floor': {\n title: 'floor',\n category: 'Math',\n linkName: 'floor',\n clojureDocs: null,\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the largest `integer` less than or equal to $x.',\n examples: ['(floor 2)', '(floor 2.49)', '(floor 2.5)', '(floor -2.49)', '(floor -2.5)', '(floor -2.501)'],\n}, 'ceil': {\n title: 'ceil',\n category: 'Math',\n linkName: 'ceil',\n clojureDocs: null,\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the smallest `integer` larger than or equal to $x.',\n examples: ['(ceil 2)', '(ceil 2.49)', '(ceil 2.5)', '(ceil -2.49)', '(ceil -2.5)', '(ceil -2.501)'],\n}, 'min': {\n title: 'min',\n category: 'Math',\n linkName: 'min',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the smallest number of the arguments.',\n examples: ['(min 2 0 1)', '(min 2 -1 1)', '(min 2.5)'],\n}, 'max': {\n title: 'max',\n category: 'Math',\n linkName: 'max',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the largest number of the arguments.',\n examples: ['(max 2 0 1)', '(max 2 -1 1)', '(max 2.5)'],\n}, 'abs': {\n title: 'abs',\n category: 'Math',\n linkName: 'abs',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the absolute value of $x.',\n examples: ['(abs -2.3)', '(abs 0)', '(abs 2.5)'],\n}, 'sign': {\n title: 'sign',\n category: 'Math',\n linkName: 'sign',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `1` if $x `> 0`, `-1` if $x `< 0`, `0` if $x `= 0` or `-0` if $x `= -0`.',\n examples: ['(sign -2.3)', '(sign -0)', '(sign 0)', '(sign 12312)'],\n}, 'positive-infinity': {\n title: 'positive-infinity',\n category: 'Math',\n linkName: 'positive-infinity',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing positive positive-infinity.',\n examples: ['(positive-infinity)'],\n}, 'negative-infinity': {\n title: 'negative-infinity',\n category: 'Math',\n linkName: 'negative-infinity',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing negative infinity.',\n examples: ['(negative-infinity)'],\n}, 'max-safe-integer': {\n title: 'max-safe-integer',\n category: 'Math',\n linkName: 'max-safe-integer',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the maximum safe integer.',\n examples: ['(max-safe-integer)'],\n}, 'min-safe-integer': {\n title: 'min-safe-integer',\n category: 'Math',\n linkName: 'min-safe-integer',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the minimum safe integer.',\n examples: ['(min-safe-integer)'],\n}, 'max-value': {\n title: 'max-value',\n category: 'Math',\n linkName: 'max-value',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the maximum numeric value.',\n examples: ['(max-value)'],\n}, 'min-value': {\n title: 'min-value',\n category: 'Math',\n linkName: 'min-value',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the smallest positive numeric value.',\n examples: ['(min-value)'],\n}, 'epsilon': {\n title: 'epsilon',\n category: 'Math',\n linkName: 'epsilon',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the difference between 1 and the smallest floating point number greater than 1.',\n examples: ['(epsilon)'],\n}, 'nan': {\n title: 'nan',\n category: 'Math',\n linkName: 'nan',\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing Not-A-Number.',\n examples: ['(nan)'],\n}, 'e': {\n title: 'e',\n category: 'Math',\n linkName: 'e',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns Euler\\'s number, the base of natural logarithms, e.',\n examples: ['(e)'],\n}, 'pi': {\n title: 'pi',\n category: 'Math',\n linkName: 'pi',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns Pi, the ratio of the circumference of a circle to its diameter.',\n examples: ['(pi)'],\n}, 'log': {\n title: 'log',\n category: 'Math',\n linkName: 'log',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the natural logarithm (base e) of $x.',\n examples: ['(log 0.01)', '(log (exp 12))', '(log 2.5)'],\n}, 'log2': {\n title: 'log2',\n category: 'Math',\n linkName: 'log2',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the base `2` logarithm of a number.',\n examples: ['(log2 0.01)', '(log2 (pow 2 12))', '(log2 2.5)'],\n}, 'log10': {\n title: 'log10',\n category: 'Math',\n linkName: 'log10',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the `10` logarithm of a number.',\n examples: ['(log10 0.01)', '(log10 (pow 10 12))', '(log10 2.5)'],\n}, 'rand!': {\n title: 'rand!',\n category: 'Math',\n linkName: 'rand_exclamation',\n clojureDocs: 'rand',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n description: 'Positive number',\n },\n },\n variants: [\n { argumentNames: [] },\n { argumentNames: ['x'] },\n ],\n description: 'Returns a semi random number between `0` (inclusive) and $x (default 1) (exclusive).',\n examples: ['(rand! 1)', '(rand! 0.01)', '(rand! 2.5)'],\n}, 'rand-int!': {\n title: 'rand-int!',\n category: 'Math',\n linkName: 'rand-int_exclamation',\n clojureDocs: 'rand-int',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n description: 'Positive number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns a semi random integer between `0` (inclusive) and $x (exclusive).',\n examples: ['(rand-int! 1)', '(rand-int! 10.12)', '(rand-int! 123)'],\n}, 'sin': {\n title: 'sin',\n category: 'Math',\n linkName: 'sin',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the sine of $x. $x must be specified in radians.',\n examples: ['(sin 0)', '(sin 1)', '(sin (pi))', '(sin -0.5)'],\n}, 'cos': {\n title: 'cos',\n category: 'Math',\n linkName: 'cos',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the cosine of $x. $x must be specified in radians.',\n examples: ['(cos 0)', '(cos 1)', '(cos (pi))', '(cos -0.5)'],\n}, 'tan': {\n title: 'tan',\n category: 'Math',\n linkName: 'tan',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the tangent of $x. $x must be specified in radians.',\n examples: ['(tan 0)', '(tan 1)', '(tan (pi))', '(tan -0.5)'],\n}, 'asin': {\n title: 'asin',\n category: 'Math',\n linkName: 'asin',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arcsine (in radians) of $x.',\n examples: ['(asin 0)', '(asin 1)', '(asin -0.5)'],\n}, 'acos': {\n title: 'acos',\n category: 'Math',\n linkName: 'acos',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arccosine (in radians) of $x.',\n examples: ['(acos 0)', '(acos 1)', '(acos -0.5)'],\n}, 'atan': {\n title: 'atan',\n category: 'Math',\n linkName: 'atan',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arctangent (in radians) of $x.',\n examples: ['(atan 0)', '(atan 1)', '(atan -0.5)'],\n}, 'sinh': {\n title: 'sinh',\n category: 'Math',\n linkName: 'sinh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic sine of $x.',\n examples: ['(sinh 0)', '(sinh 1)', '(sinh -0.5)'],\n}, 'cosh': {\n title: 'cosh',\n category: 'Math',\n linkName: 'cosh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic cosine of $x.',\n examples: ['(cosh 0)', '(cosh 1)', '(cosh -0.5)'],\n}, 'tanh': {\n title: 'tanh',\n category: 'Math',\n linkName: 'tanh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic tangent of $x.',\n examples: ['(tanh 0)', '(tanh 1)', '(tanh -0.5)', '(tanh 50)'],\n}, 'asinh': {\n title: 'asinh',\n category: 'Math',\n linkName: 'asinh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arcsine of $x.',\n examples: ['(asinh 0)', '(asinh 0.9)', '(asinh -0.5)'],\n}, 'acosh': {\n title: 'acosh',\n category: 'Math',\n linkName: 'acosh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arccosine of $x.',\n examples: ['(acosh 1)', '(acosh 2)', '(acosh 100)'],\n}, 'atanh': {\n title: 'atanh',\n category: 'Math',\n linkName: 'atanh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arctangent of $x.',\n examples: ['(atanh 0)', '(atanh 0.9)', '(atanh -0.5)'],\n} }\n","import type { FunctionReference } from '..'\nimport type { MiscApiName } from '../api'\n\nexport const miscReference: Record<MiscApiName, FunctionReference<'Misc'>> = {\n 'not=': {\n title: 'not=',\n category: 'Misc',\n linkName: 'not_equal',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Result is `true` if no two `values` are equal to each other, otherwise result is `false`. Note that only two argument version result is negation of `=` function, that is `(not= a b)` is same as `(not (= a b))`.',\n examples: ['(not= 3)', '(not= 3 2)', '(not= :3 3)', '(not= 3 3 2)', '(not= :3 :2 :1 :0)', '(not= 0 -0)'],\n },\n '=': {\n title: '=',\n category: 'Misc',\n linkName: '_equal',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Compares `values` according to \\'equal\\' predicate. Result is `true` if every specified value is equal to each other, otherwise result is `false`.',\n examples: ['(= 1 1)', '(= 1.01 1)', '(= :1 1)', '(= :2 :2 :2 :2)', '(= 2 2 1 2)'],\n },\n '<': {\n title: '<',\n category: 'Misc',\n linkName: '_lt',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in increasing order, `false` otherwise.',\n examples: ['(< 0 1)', '(< 1 1.01)', '(< 1 1)', '(< 1 2 2 3)', '(< :a :b)', '(< [9] [1 2])'],\n },\n '>': {\n title: '>',\n category: 'Misc',\n linkName: '_gt',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in decreasing order, `false` otherwise.',\n examples: ['(> 1 0)', '(> 1.01 1)', '(> 1 1)', '(> 4 3 2 1)', '(> 3 2 2 1)'],\n },\n '<=': {\n title: '<=',\n category: 'Misc',\n linkName: '_lte',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in non decreasing order, `false` otherwise.',\n examples: ['(<= 0 1)', '(<= 1 1.01)', '(<= 1 1)', '(<= 1 2 3 4)', '(<= 1 2 2 3)'],\n },\n '>=': {\n title: '>=',\n category: 'Misc',\n linkName: '_gte',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in non increasing order, `false` otherwise.',\n examples: ['(>= 1 0)', '(>= 1.01 1)', '(>= 1 1)', '(>= 4 3 2 1)', '(>= 3 2 2 1)'],\n },\n 'not': {\n title: 'not',\n category: 'Misc',\n linkName: 'not',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes logical negation. Note that any other $x than `false`, `0`, `nil` and `\\'\\'` is truthy.',\n examples: ['(not 3)', '(not true)', '(not \"A string\")', '(not 0)', '(not false)', '(not nil)', '(not \"\")'],\n },\n 'write!': {\n title: 'write!',\n category: 'Misc',\n linkName: 'write_exclamation',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'It logs the $values and then returns the last argument. If called with no arguments `nil` is returned.',\n examples: [\n '(write! \"A string\")',\n '(write! 100 \"items\")',\n '(write! (object :a 10))',\n '(write! [:a :b :c])',\n '(write! #\"^start\")',\n '(write! nil true false)',\n ],\n },\n 'inst-ms!': {\n title: 'inst-ms!',\n category: 'Misc',\n linkName: 'inst-ms_exclamation',\n clojureDocs: 'inst-ms',\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns milliseconds elapsed since the UNIX epoch.',\n examples: ['(inst-ms!)'],\n },\n 'iso-date-time->inst-ms': {\n title: 'iso-date-time->inst-ms',\n category: 'Misc',\n linkName: 'iso-date-time-_gtinst-ms',\n returns: {\n type: 'number',\n },\n args: {\n iso: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['iso'] },\n ],\n description: 'Returns milliseconds elapsed since the UNIX epoch to `iso`.',\n examples: [\n '(iso-date-time->inst-ms \"2022-04-12T09:37:10.899Z\")',\n '(iso-date-time->inst-ms \"1980-01-01\")',\n ],\n },\n 'inst-ms->iso-date-time': {\n title: 'inst-ms->iso-date-time',\n category: 'Misc',\n linkName: 'inst-ms-_gtiso-date-time',\n returns: {\n type: 'string',\n },\n args: {\n ms: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['ms'] },\n ],\n description: 'Returns IOS date time string from `ms` (milliseconds elapsed since the UNIX epoch).',\n examples: [\n '(inst-ms->iso-date-time 1649756230899)',\n '(inst-ms->iso-date-time 0)',\n ],\n },\n 'boolean': {\n title: 'boolean',\n category: 'Misc',\n linkName: 'boolean',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Coerces $x to boolean.',\n examples: [\n '(boolean 0)',\n '(boolean 1)',\n '(boolean nil)',\n '(boolean \"Albert\")',\n ],\n },\n 'compare': {\n title: 'compare',\n category: 'Misc',\n linkName: 'compare',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Compares two values. Returns `-1` if $a < $b, `1` if $a > $b and `0` if $a and $b have the same sort order.',\n examples: [\n '(compare 0 1)',\n '(compare \"Albert\" \"Mojir\")',\n '(compare 1 :1)',\n '(compare [1 2 3] [2 3])',\n '(compare [1 2 3] [2 3 4])',\n '(compare {:a 1 :b 2} {:a 1})',\n '(compare {:a 1} [2 3])',\n '(compare + -)',\n ],\n },\n 'lits-version!': {\n title: 'lits-version!',\n category: 'Misc',\n linkName: 'lits-version_exclamation',\n returns: {\n type: 'string',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns the lits version.',\n examples: ['(lits-version!)'],\n },\n 'uuid!': {\n title: 'uuid!',\n category: 'Misc',\n linkName: 'uuid_exclamation',\n returns: {\n type: 'string',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns random UUID string.',\n examples: ['(uuid!)'],\n },\n 'equal?': {\n title: 'equal?',\n category: 'Misc',\n linkName: 'equal_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns true if $a and $b are structually equal.',\n examples: [\n '(equal? {:a 10 :b 20} {:b 20 :a 10})',\n '(equal? [1 true nil] [1 true nil])',\n '(equal? {:a 10 :b [1 2 {:b 20}]} {:b [1 2 {:b 20}] :a 10})',\n '(equal? {:a 10 :b [1 2 {:b 20}]} {:b [1 2 {:b 21}] :a 10})',\n '(= 0.3 (+ 0.1 0.2))',\n '(equal? 0.3 (+ 0.1 0.2))',\n ],\n },\n 'json-parse': {\n title: 'json-parse',\n category: 'Misc',\n linkName: 'json-parse',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `JSON.parse(`$x`)`.',\n examples: [\n '(json-parse \"[1, 2, 3]\")',\n ],\n },\n 'json-stringify': {\n title: 'json-stringify',\n category: 'Misc',\n linkName: 'json-stringify',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n x: {\n type: 'any',\n },\n indent: {\n type: 'integer',\n description: 'Number of spaces to use for indentation.',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'indent'] },\n ],\n description: 'Returns `JSON.stringify(`$x`)`. If second argument is provided, returns `JSON.stringify(`$x`, null, `$indent`)`.',\n examples: [\n '(json-stringify [1, 2, 3])',\n '(json-stringify {:a {:b 10}} 2)',\n ],\n },\n}\n","import type { AssertApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const assertReference: Record<AssertApiName, FunctionReference<'Assert'>> = { 'assert': {\n title: 'assert',\n category: 'Assert',\n linkName: 'assert',\n returns: {\n type: 'any',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is falsy it throws `AssertionError` with $message. If no $message is provided, message is set to $value.',\n examples: ['(assert 0 \"Expected a positive value\")'],\n}, 'assert=': {\n title: 'assert=',\n category: 'Assert',\n linkName: 'assert_equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not the same as $b it throws `AssertionError`.',\n examples: [\n '(assert= 0 1 \"Expected same values\")',\n '(assert= 0 1)',\n '(assert= 1 1)',\n ],\n}, 'assert-not=': {\n title: 'assert-not=',\n category: 'Assert',\n linkName: 'assert-not_equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is the same as $b it throws `AssertionError`.',\n examples: [\n '(assert-not= 0 0 \"Expected different values\")',\n '(assert-not= 0 0)',\n '(assert-not= 0 1)',\n ],\n}, 'assert-equal': {\n title: 'assert-equal',\n category: 'Assert',\n linkName: 'assert-equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not deep equal to $b it throws `AssertionError`.',\n examples: [\n '(assert-equal { :a 1 } { :a 2 } \"Expected equal values\")',\n '(assert-equal { :a 1 } { :a 2 })',\n '(assert-equal { :a 1 } { :a 1 })',\n ],\n}, 'assert-not-equal': {\n title: 'assert-not-equal',\n category: 'Assert',\n linkName: 'assert-not-equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not deep equal to $b it throws `AssertionError`.',\n examples: [\n '(assert-not-equal { :a 2 } { :a 2 } \"Expected different values\")',\n '(assert-not-equal { :a 2 } { :a 2 })',\n '(assert-not-equal { :a 1 } { :a 2 })',\n ],\n}, 'assert>': {\n title: 'assert>',\n category: 'Assert',\n linkName: 'assert_gt',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not greater than $b it throws `AssertionError`.',\n examples: [\n '(assert> 0 1 \"Expected greater value\")',\n '(assert> 0 0)',\n '(assert> 1 0)',\n ],\n}, 'assert<': {\n title: 'assert<',\n category: 'Assert',\n linkName: 'assert_lt',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not less than $b it throws `AssertionError`.',\n examples: [\n '(assert< 1 0 \"Expected smaller value value\")',\n '(assert< 1 1)',\n '(assert< 0 1)',\n ],\n}, 'assert>=': {\n title: 'assert>=',\n category: 'Assert',\n linkName: 'assert_gte',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is less than $b it throws `AssertionError`.',\n examples: [\n '(assert>= 0 1 \"Expected greater value\")',\n '(assert>= 0 1)',\n '(assert>= 1 1)',\n ],\n}, 'assert<=': {\n title: 'assert<=',\n category: 'Assert',\n linkName: 'assert_lte',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is grater than $b it throws `AssertionError`.',\n examples: [\n '(assert<= 1 0 \"Expected smaller value value\")',\n '(assert<= 1 0)',\n '(assert<= 1 1)',\n ],\n}, 'assert-true': {\n title: 'assert-true',\n category: 'Assert',\n linkName: 'assert-true',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `true` it throws `AssertionError`.',\n examples: [\n '(assert-true false \"Expected true\")',\n '(assert-true false)',\n '(assert-true true)',\n ],\n}, 'assert-false': {\n title: 'assert-false',\n category: 'Assert',\n linkName: 'assert-false',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `false` it throws `AssertionError`.',\n examples: [\n '(assert-false true \"Expected false\")',\n '(assert-false true)',\n '(assert-false false)',\n ],\n}, 'assert-truthy': {\n title: 'assert-truthy',\n category: 'Assert',\n linkName: 'assert-truthy',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `truthy` it throws `AssertionError`.',\n examples: [\n '(assert-truthy false \"Expected truthy\")',\n '(assert-truthy false)',\n '(assert-truthy 0)',\n '(assert-truthy nil)',\n '(assert-truthy \"\")',\n '(assert-truthy true)',\n '(assert-truthy 1)',\n '(assert-truthy :x)',\n '(assert-truthy [])',\n '(assert-truthy {})',\n ],\n}, 'assert-falsy': {\n title: 'assert-falsy',\n category: 'Assert',\n linkName: 'assert-falsy',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `falsy` it throws `AssertionError`.',\n examples: [\n '(assert-falsy true \"Expected falsy\")',\n '(assert-falsy :x)',\n '(assert-falsy [])',\n '(assert-falsy {})',\n '(assert-falsy 1)',\n '(assert-falsy false)',\n '(assert-falsy 0)',\n '(assert-falsy nil)',\n '(assert-falsy \"\")',\n ],\n}, 'assert-nil': {\n title: 'assert-nil',\n category: 'Assert',\n linkName: 'assert-nil',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `nil` it throws `AssertionError`.',\n examples: [\n '(assert-nil nil)',\n '(assert-nil true \"Expected nil\")',\n '(assert-nil :x)',\n '(assert-nil [])',\n '(assert-nil {})',\n '(assert-nil 1)',\n '(assert-nil false)',\n '(assert-nil 0)',\n '(assert-nil \"\")',\n ],\n}, 'assert-throws': {\n title: 'assert-throws',\n category: 'Assert',\n linkName: 'assert-throws',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n fn: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'message'] },\n ],\n description: 'If $fn does not throw, it throws `AssertionError`.',\n examples: ['(assert-throws #(throw \"Error\"))', '(assert-throws #(identity \"Error\"))'],\n}, 'assert-throws-error': {\n title: 'assert-throws-error',\n category: 'Assert',\n linkName: 'assert-throws-error',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n 'fn': {\n type: 'function',\n },\n 'error-message': {\n type: 'string',\n },\n 'message': {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value', 'error-message'] },\n { argumentNames: ['value', 'error-message', 'message'] },\n ],\n description: 'If $fn does not throw $error-message, it throws `AssertionError`.',\n examples: [\n '(assert-throws-error #(throw :Error) :Error)',\n '(assert-throws-error #(throw \"Something else\") :Error \"Hej alla barn\")',\n '(assert-throws-error #(identity :Error) :Error)',\n ],\n}, 'assert-not-throws': {\n title: 'assert-not-throws',\n category: 'Assert',\n linkName: 'assert-not-throws',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n fn: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'message'] },\n ],\n description: 'If $fn throws, it throws `AssertionError`.',\n examples: ['(assert-not-throws #(identity \"Error\"))', '(assert-not-throws #(throw \"Error\"))'],\n} }\n","import type { FunctionReference } from '..'\nimport type { ObjectApiName } from '../api'\n\nexport const objectReference: Record<ObjectApiName, FunctionReference<'Object'>> = {\n 'dissoc': {\n title: 'dissoc',\n category: 'Object',\n linkName: 'dissoc',\n returns: {\n type: 'object',\n },\n args: {\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Return shallow copy of $obj with $key deleted.',\n examples: [\n '(dissoc (object :x 10 :y 20) :x)',\n '(dissoc { :x 10 } :y)',\n `\n(def o { :a 5 }) (dissoc o :a)\no`,\n ],\n },\n 'object': {\n title: 'object',\n category: 'Object',\n linkName: 'object',\n clojureDocs: null,\n returns: {\n type: 'object',\n },\n args: {\n kvps: {\n type: 'any',\n rest: true,\n description: 'key - value pairs, where key is a string',\n },\n },\n variants: [\n { argumentNames: ['kvps'] },\n ],\n description: 'Constructs a new object. Object members are created from the $kvps key-value pairs. Requires an even number of arguments.',\n examples: [\n '(object)',\n '(object :x 10 :y true :z \"A string\")',\n '{}',\n '{:a 1 :b 2}',\n ],\n },\n 'keys': {\n title: 'keys',\n category: 'Object',\n linkName: 'keys',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all keys in $obj.',\n examples: [\n '(keys (object))',\n '(keys (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'vals': {\n title: 'vals',\n category: 'Object',\n linkName: 'vals',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all values in $obj.',\n examples: [\n '(vals (object))',\n '(vals (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'entries': {\n title: 'entries',\n category: 'Object',\n linkName: 'entries',\n clojureDocs: null,\n returns: {\n type: 'array',\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns nested array of all key - value pairs in $obj.',\n examples: [\n '(entries (object))',\n '(entries (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'find': {\n title: 'find',\n category: 'Object',\n linkName: 'find',\n returns: {\n type: ['array', 'nil'],\n },\n args: {\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Returns entry (key-value pair) for $key, or `nil` if $key not present in $obj.',\n examples: [\n '(find (object :a 1 :b 2) :b)',\n '(find (object :a 1 :b 2) :c)',\n ],\n },\n 'merge': {\n title: 'merge',\n category: 'Object',\n linkName: 'merge',\n returns: {\n type: 'object',\n },\n args: {\n objs: {\n type: 'object',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['objs'] },\n ],\n description: `Returns a new object created by merging together all arguments.\n\nIf two keys appears in more than one object the value from the last object is used. \nIf no arguments are provided \\`nil\\` is returned.`,\n examples: [\n '(merge (object :x 10) (object :y 20))',\n '(merge (object :x 10) (object :x 15 :y 20))',\n ],\n },\n 'merge-with': {\n title: 'merge-with',\n category: 'Object',\n linkName: 'merge-with',\n returns: {\n type: 'object',\n },\n args: {\n fn: {\n type: 'function',\n },\n objs: {\n type: 'object',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn', 'objs'] },\n ],\n description: `\nReturns a new object created by merging together all arguments.\nIf two keys appears in more than one object $fn is used to calculate the new value.\n\nIf no arguments are provided \\`nil\\` is returned.`,\n examples: [\n '(merge-with + (object :x 10) (object :y 20))',\n '(merge-with + (object :x 10) (object :x 15 :y 20))',\n '(merge-with - (object :x 10) (object :x 20) (object :x 30) (object :x 40))',\n ],\n },\n 'zipmap': {\n title: 'zipmap',\n category: 'Object',\n linkName: 'zipmap',\n returns: {\n type: 'object',\n },\n args: {\n keys: {\n type: 'string',\n array: true,\n },\n values: {\n type: 'any',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['keys', 'values'] },\n ],\n description: 'Returns a new object created by mapping $keys to $values.',\n examples: [\n '(zipmap [:a :b :c] [10 nil [1 2 3]])',\n '(zipmap [:a :b :c] [1])',\n '(zipmap [] [10 nil [1 2 3]])',\n ],\n },\n 'select-keys': {\n title: 'select-keys',\n category: 'Object',\n linkName: 'select-keys',\n returns: {\n type: 'object',\n },\n args: {\n obj: {\n type: 'object',\n },\n keys: {\n type: 'string',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['obj', 'keys'] },\n ],\n description: 'Returns an object containing only those entries in $obj whose key is in $keys.',\n examples: [\n '(select-keys {:a 1 :b 2 :c 3} [:a :b])',\n '(select-keys {:a 1} [:a :b])',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { PredicateApiName } from '../api'\n\nexport const predicateReference: Record<PredicateApiName, FunctionReference<'Predicate'>> = {\n 'boolean?': {\n title: 'boolean?',\n category: 'Predicate',\n linkName: 'boolean_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a `boolean`, otherwise `false`.',\n examples: [\n '(boolean? true)',\n '(boolean? false)',\n '(boolean? [1 2 3])',\n '(boolean? 0)',\n '(boolean? \"A string\")',\n ],\n },\n 'nil?': {\n title: 'nil?',\n category: 'Predicate',\n linkName: 'nil_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `nil`, otherwise `false`.',\n examples: [\n '(nil? nil)',\n '(nil? false)',\n '(nil? [1 2 3])',\n '(nil? 0)',\n '(nil? \"A string\")',\n ],\n },\n 'number?': {\n title: 'number?',\n category: 'Predicate',\n linkName: 'number_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a number, otherwise `false`.',\n examples: [\n '(number? 0)',\n '(number? 2)',\n '(number? -0.12)',\n '(number? false)',\n '(number? [1 2 3])',\n '(number? \"A string\")',\n ],\n },\n 'string?': {\n title: 'string?',\n category: 'Predicate',\n linkName: 'string_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a string, otherwise `false`.',\n examples: [\n '(string? \"\")',\n '(string? \"A string\")',\n '(string? (if true \"A string\" false))',\n '(string? false)',\n '(string? [1 2 3])',\n '(string? 100)',\n ],\n },\n 'function?': {\n title: 'function?',\n category: 'Predicate',\n linkName: 'function_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a function, otherwise `false`.',\n examples: [\n '(function? +)',\n '(function? /)',\n '(function? (fn [x y] (+ x y)))',\n '(function? false)',\n '(function? \"false\")',\n '(function? [1 2 3])',\n ],\n },\n 'integer?': {\n title: 'integer?',\n category: 'Predicate',\n linkName: 'integer_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an integer, otherwise `false`.',\n examples: [\n '(integer? 0)',\n '(integer? -12)',\n '(integer? 42)',\n '(integer? 10.1)',\n '(integer? (fn [x y] (+ x y)))',\n '(integer? false)',\n '(integer? \"false\")',\n '(integer? [1 2 3])',\n ],\n },\n 'array?': {\n title: 'array?',\n category: 'Predicate',\n linkName: 'array_question',\n clojureDocs: 'vector_q',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an array, otherwise `false`.',\n examples: [\n '(array? [])',\n '(array? [1 2 3])',\n '(array? (object :a 10))',\n '(array? 42)',\n '(array? 10.1)',\n '(array? (fn [x y] (+ x y)))',\n ],\n },\n 'object?': {\n title: 'object?',\n category: 'Predicate',\n linkName: 'object_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an object, otherwise `false`.',\n examples: [\n '(object? (object :a 10))',\n '(object? (object))',\n '(object? 42)',\n '(object? 10.1)',\n '(object? (fn [x y] (+ x y)))',\n '(object? #\"^start\")',\n '(object? \"false\")',\n '(object? [1 2 3])',\n ],\n },\n 'coll?': {\n title: 'coll?',\n category: 'Predicate',\n linkName: 'coll_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Coll i.e. an array, an object or a string, otherwise `false`.',\n examples: [\n '(coll? [])',\n '(coll? [1 2 3])',\n '(coll? (object :a 10))',\n '(coll? \"Albert\")',\n '(coll? 42)',\n '(coll? 10.1)',\n '(coll? (fn [x y] (+ x y)))',\n ],\n },\n 'seq?': {\n title: 'seq?',\n category: 'Predicate',\n linkName: 'seq_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Seq i.e. an array or a string, otherwise `false`.',\n examples: [\n '(seq? [])',\n '(seq? [1 2 3])',\n '(seq? (object :a 10))',\n '(seq? \"Albert\")',\n '(seq? 42)',\n '(seq? 10.1)',\n '(seq? (fn [x y] (+ x y)))',\n ],\n },\n 'regexp?': {\n title: 'regexp?',\n category: 'Predicate',\n linkName: 'regexp_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a regexp, otherwise `false`.',\n examples: [\n '(regexp? (regexp \"^start\"))',\n '(regexp? #\"^start\")',\n '(regexp? -12)',\n '(regexp? (object))',\n '(regexp? 10.1)',\n '(regexp? (fn [x y] (+ x y)))',\n '(regexp? false)',\n '(regexp? \"false\")',\n '(regexp? [1 2 3])',\n ],\n },\n 'zero?': {\n title: 'zero?',\n category: 'Predicate',\n linkName: 'zero_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `0`, otherwise `false`.',\n examples: [\n '(zero? 0)',\n '(zero? -0.0)',\n '(zero? 1)',\n '(zero? 0.1)',\n ],\n },\n 'pos?': {\n title: 'pos?',\n category: 'Predicate',\n linkName: 'pos_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is greater than `0`, otherwise `false`.',\n examples: [\n '(pos? 0)',\n '(pos? -0.0)',\n '(pos? 1)',\n '(pos? -0.1)',\n ],\n },\n 'neg?': {\n title: 'neg?',\n category: 'Predicate',\n linkName: 'neg_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is less than `0`, otherwise `false`.',\n examples: [\n '(neg? 0)',\n '(neg? -0.0)',\n '(neg? 1)',\n '(neg? -0.1)',\n ],\n },\n 'even?': {\n title: 'even?',\n category: 'Predicate',\n linkName: 'even_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is even, otherwise `false`.',\n examples: [\n '(even? 0)',\n '(even? -0.0)',\n '(even? -1)',\n '(even? 2.1)',\n ],\n },\n 'odd?': {\n title: 'odd?',\n category: 'Predicate',\n linkName: 'odd_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is odd, otherwise `false`.',\n examples: [\n '(odd? 1.0)',\n '(odd? 1.001)',\n '(odd? -1)',\n '(odd? 2.1)',\n ],\n },\n 'finite?': {\n title: 'finite?',\n category: 'Predicate',\n linkName: 'finite_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is finite, otherwise `false`.',\n examples: [\n '(finite? 1.0)',\n '(finite? (/ 1 0))',\n '(finite? (/ -1 0))',\n '(finite? (sqrt -1))',\n ],\n },\n 'nan?': {\n title: 'nan?',\n category: 'Predicate',\n linkName: 'nan_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is NaN (not a number), otherwise `false`.',\n examples: [\n '(nan? 1.0)',\n '(nan? (/ 1 0))',\n '(nan? (/ -1 0))',\n '(nan? (sqrt -1))',\n ],\n },\n 'negative-infinity?': {\n title: 'negative-infinity?',\n category: 'Predicate',\n linkName: 'negative-infinity_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals negative infinity, otherwise `false`.',\n examples: [\n '(negative-infinity? 1.0)',\n '(negative-infinity? (/ 1 0))',\n '(negative-infinity? (/ -1 0))',\n '(negative-infinity? (sqrt -1))',\n ],\n },\n 'positive-infinity?': {\n title: 'positive-infinity?',\n category: 'Predicate',\n linkName: 'positive-infinity_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals positive infinity, otherwise `false`.',\n examples: [\n '(positive-infinity? 1.0)',\n '(positive-infinity? (/ 1 0))',\n '(positive-infinity? (/ -1 0))',\n '(positive-infinity? (sqrt -1))',\n ],\n },\n 'false?': {\n title: 'false?',\n category: 'Predicate',\n linkName: 'false_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n '(false? false)',\n '(false? true)',\n '(false? 1)',\n '(false? 0)',\n ],\n },\n 'true?': {\n title: 'true?',\n category: 'Predicate',\n linkName: 'true_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n '(true? false)',\n '(true? true)',\n '(true? 1)',\n '(true? 0)',\n ],\n },\n 'empty?': {\n title: 'empty?',\n category: 'Predicate',\n linkName: 'empty_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is empty or `nil`, otherwise `false`.',\n examples: [\n '(empty? [])',\n '(empty? [1 2 3])',\n '(empty? {})',\n '(empty? {:a 2})',\n '(empty? \"\")',\n '(empty? \"Albert\")',\n '(empty? nil)',\n ],\n },\n 'not-empty?': {\n title: 'not-empty?',\n category: 'Predicate',\n linkName: 'not-empty_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `false` if $x is empty or `nil`, otherwise `true`.',\n examples: [\n '(not-empty? [])',\n '(not-empty? [1 2 3])',\n '(not-empty? {})',\n '(not-empty? {:a 2})',\n '(not-empty? \"\")',\n '(not-empty? \"Albert\")',\n '(not-empty? nil)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { RegularExpressionApiName } from '../api'\n\nexport const regularExpressionReference: Record<RegularExpressionApiName, FunctionReference<'Regular expression'>> = {\n regexp: {\n title: 'regexp',\n category: 'Regular expression',\n linkName: 'regexp',\n clojureDocs: null,\n returns: {\n type: 'regexp',\n },\n args: {\n pattern: {\n type: 'string',\n },\n flags: {\n type: 'string',\n description: 'Optional flags for the regular expression. Possible values are the same as Javascript RegExp takes.',\n },\n },\n variants: [\n { argumentNames: ['pattern'] },\n { argumentNames: ['pattern', 'flags'] },\n ],\n description: 'Creates a RegExp from $pattern and $flags.',\n examples: [\n '(regexp \"^\\\\s*(.*)$\")',\n '#\"^\\\\s*(.*)$\"',\n '(regexp \"albert\" :i)',\n '#\"albert\"ig',\n ],\n },\n match: {\n title: 'match',\n category: 'Regular expression',\n linkName: 'match',\n clojureDocs: null,\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n r: {\n type: 'regexp',\n },\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['r', 's'] },\n ],\n description: `Matches $s against regular expression $r.\nIf $s is a string and matches the regular expression, a \\`match\\`-array is returned, otherwise \\`nil\\` is returned.`,\n examples: [\n '(match (regexp \"^\\\\s*(.*)$\") \" A string\")',\n '(match #\"albert\"i \"My name is Albert\")',\n '(match #\"albert\"i \"My name is Ben\")',\n '(match #\"albert\"i nil)',\n '(match #\"albert\"i 1)',\n '(match #\"albert\"i {})',\n ],\n },\n replace: {\n title: 'replace',\n category: 'Regular expression',\n linkName: 'replace',\n clojureDocs: null,\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n s: {\n type: 'string',\n },\n r: {\n type: 'regexp',\n },\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'r', 'x'] },\n ],\n description: 'Returns a new string with some or all matches of regular expression $r replaced by $x.',\n examples: [\n '(replace \"Duck\" (regexp :u) :i)',\n '(replace \"abcABC\" (regexp :a \"gi\") \"-\")',\n '(replace \"abcABC\" #\"a\"gi \"-\")',\n ],\n },\n}\n","import type { SpecialExpressionsApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const specialExpressionsReference: Record<SpecialExpressionsApiName, FunctionReference<'Special expression'>> = {\n 'and': {\n title: 'and',\n category: 'Special expression',\n linkName: 'and',\n returns: {\n type: 'boolean',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: `\nComputes logical \\`and\\` function. Evaluation of $expressions starts from left.\nAs soon as a \\`expression\\` evaluates to a falsy value, the result is returned.\n\nIf all expressions evaluate to truthy values, the value of the last expression is returned.`,\n examples: [\n '(and 1 1)',\n '(and (> 3 2) \"string\")',\n '(and (< 3 2) \"string\")',\n '(and true true true true)',\n '(and true true 0 true)',\n ],\n },\n\n 'or': {\n title: 'or',\n category: 'Special expression',\n linkName: 'or',\n returns: {\n type: 'boolean',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: `\nComputes logical \\`or\\` function. Evaluation of $expressions evaluation starts from left.\nAs soon as a \\`expression\\` evaluates to a truthy value, the result is returned.\n\nIf all expressions evaluate to falsy values, the value of the last expression is returned.`,\n examples: [\n '(or 1 1)',\n '(or (> 3 2) \"string\")',\n '(or (< 3 2) \"string\")',\n '(or true true true true)',\n '(or 1 2 3 4)',\n ],\n },\n 'def': {\n title: 'def',\n category: 'Special expression',\n linkName: 'def',\n returns: {\n type: 'any',\n },\n args: {\n n: {\n type: '*name',\n },\n value: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['n', 'value'] },\n ],\n description: `Bind $value to variable $n.\n\nIf $n is already defined, an error is thrown.`,\n examples: [\n '(def a (object))',\n '(def a (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'defs': {\n title: 'defs',\n category: 'Special expression',\n linkName: 'defs',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n name: {\n type: '*expression',\n },\n value: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['name', 'value'] },\n ],\n description: `\nCreates a variable with name set to $name evaluated and value set to $value.\n\nIf a variable with name $name is already defined, an error is thrown.`,\n examples: [\n '(defs :a :b)',\n `\n(defs (str :a :1) (object :x 10 :y true :z \"A string\"))\na1`,\n `\n(defs :a :b)\n(defs a :c)\nb`,\n ],\n },\n 'let': {\n title: 'let',\n category: 'Special expression',\n linkName: 'let',\n returns: {\n type: 'any',\n },\n args: {\n bindings: {\n type: '*binding',\n rest: true,\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['bindings', 'expressions'] },\n ],\n description: `\nBinds local variables. The variables lives only within $expressions.\nIt returns evaluation of the last expression in $expressions.`,\n examples: [`\n (let [a (+ 1 2 3 4) \n b (* 1 2 3 4)]\n (write! a b))`],\n },\n 'if-let': {\n title: 'if-let',\n category: 'Special expression',\n linkName: 'if-let',\n returns: {\n type: 'any',\n },\n args: {\n 'binding': {\n type: '*binding',\n },\n 'then-expr': {\n type: '*expression',\n },\n 'else-expr': {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['binding', 'then-expr'] },\n { argumentNames: ['binding', 'then-expr', 'else-expr'] },\n ],\n description: `\nBinds one local variable. If it evaluates to a truthy value\n$then-expr is executed with the variable accessable.\nIf the bound variable evaluates to false, the $else-expr is evaluated\n(without variable accessable).`,\n examples: [\n `\n(if-let [a (> (count \"Albert\") 4)]\n (write! (str a \", is big enough\"))\n (write! \"Sorry, not big enough.\"))`,\n `\n(if-let [a (> (count \"Albert\") 10)]\n (write! (str a \", is big enough\"))\n (write! \"Sorry, not big enough.\"))`,\n ],\n },\n 'when-let': {\n title: 'when-let',\n category: 'Special expression',\n linkName: 'when-let',\n returns: {\n type: 'any',\n },\n args: {\n binding: {\n type: '*binding',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['binding', 'expressions'] },\n ],\n description: `\nBinds one local variable. If it evaluates to a truthy value\n$expressions is executed with the variable accessable.\nIf the bound variable evaluates to a falsy value, \\`nil\\` is returned.`,\n examples: [\n `\n(when-let [a (> (count \"Albert\") 4)]\n (write! a))`,\n ],\n },\n 'when-first': {\n title: 'when-first',\n category: 'Special expression',\n linkName: 'when-first',\n returns: {\n type: 'any',\n },\n args: {\n binding: {\n type: '*binding',\n rest: true,\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['binding', 'expressions'] },\n ],\n description: 'When the binding value in $binding is a non empty sequence, the first element of that sequence (instead of the sequence itself) is bound to the variable.',\n examples: [\n `\n(when-first [x [1 2 3]]\n (write! x)\n x)`,\n `\n(when-first [x \"Albert\"]\n (write! x)\n x)`,\n `\n(when-first [x [0]]\n (write! x)\n x)`,\n `\n(when-first [x [nil]]\n (write! x)\n x)`,\n `\n(when-first [x []]\n (write! x)\n x)`,\n ],\n },\n\n 'fn': {\n title: 'fn',\n category: 'Special expression',\n linkName: 'fn',\n returns: {\n type: 'function',\n },\n args: {\n args: {\n type: '*arguments',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['args', 'expressions'] },\n ],\n description: 'Creates a function. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\n(fn [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))`,\n `\n(\n (fn [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\n 3\n 4)`,\n ],\n },\n 'defn': {\n title: 'defn',\n category: 'Special expression',\n linkName: 'defn',\n returns: {\n type: 'function',\n },\n args: {\n n: {\n type: '*name',\n },\n args: {\n type: '*arguments',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['n', 'args', 'expressions'] },\n ],\n description: 'Creates a named global function. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\n(defn hyp [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\nhyp`,\n `\n(defn hyp [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\n(hyp 3 4)`,\n `\n(defn sumOfSquares [& s]\n (apply\n +\n (map\n (fn [x] (* x x))\n s)))\n(sumOfSquares 1 2 3 4 5)`,\n ],\n },\n 'defns': {\n title: 'defns',\n category: 'Special expression',\n linkName: 'defns',\n clojureDocs: null,\n returns: {\n type: 'function',\n },\n args: {\n name: {\n type: '*expression',\n },\n args: {\n type: '*arguments',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['name', 'args', 'expressions'] },\n ],\n description: 'Creates a named global function with its name set to $name evaluated. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\n(defns \"hyp\" [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\nhyp`,\n `\n(defns\n (str :h :y :p)\n [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\n(hyp 3 4)`,\n `\n(defns \"sumOfSquares\" [& s]\n (apply\n +\n (map\n (fn [x] (* x x))\n s)))\n(sumOfSquares 1 2 3 4 5)`,\n ],\n },\n 'try': {\n title: 'try',\n category: 'Special expression',\n linkName: 'try',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n exp: {\n type: '*expression',\n },\n catch: {\n type: '*catch-expression',\n },\n },\n variants: [\n { argumentNames: ['exp', 'catch'] },\n ],\n description: 'Executes $exp. If that throws, the $catch `body` gets executed. See examples for details.',\n examples: [\n `\n(try\n (/ 2 4)\n (catch error \"Oops!\"))`,\n `\n(try\n (foo)\n (catch error \"Oops!\"))`,\n `\n(try\n (foo)\n (catch error error))`,\n ],\n },\n 'throw': {\n title: 'throw',\n category: 'Special expression',\n linkName: 'throw',\n clojureDocs: null,\n returns: {\n type: 'never',\n },\n args: {\n expr: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['expr'] },\n ],\n description: 'Throws `UserDefinedError` with message set to $expr evaluated. $expr must evaluate to a string.',\n examples: [\n '(throw \"You shall not pass!\")',\n '(throw (subs \"You shall not pass!\" 0 3))',\n ],\n },\n 'if': {\n title: 'if',\n category: 'Special expression',\n linkName: 'if',\n returns: {\n type: 'any',\n },\n args: {\n 'test': {\n type: 'any',\n },\n 'then-expr': {\n type: 'any',\n },\n 'else-expr': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['test', 'then-expr'] },\n { argumentNames: ['test', 'then-expr', 'else-expr'] },\n ],\n description: 'Either $then-expr or $else-expr branch is taken. $then-expr is selected when $test is truthy. If $test is falsy $else-expr is executed, if no $else-expr exists, `nil` is returned.',\n examples: [\n '(if true (write! \"TRUE\") (write! \"FALSE\"))',\n '(if false (write! \"TRUE\") (write! \"FALSE\"))',\n '(if true (write! \"TRUE\"))',\n '(if false (write! \"TRUE\"))',\n ],\n },\n 'if-not': {\n title: 'if-not',\n category: 'Special expression',\n linkName: 'if-not',\n returns: {\n type: 'any',\n },\n args: {\n 'test': {\n type: 'any',\n },\n 'then-expr': {\n type: 'any',\n },\n 'else-expr': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['test', 'then-expr'] },\n { argumentNames: ['test', 'then-expr', 'else-expr'] },\n ],\n description: 'Either $then-expr or $else-expr branch is taken. $then-expr is selected when $test is falsy. If $test is truthy $else-expr is executed, if no $else-expr exists, `nil` is returned.',\n examples: [\n '(if-not true (write! \"TRUE\") (write! \"FALSE\"))',\n '(if-not false (write! \"TRUE\") (write! \"FALSE\"))',\n '(if-not true (write! \"TRUE\"))',\n '(if-not false (write! \"TRUE\"))',\n ],\n },\n 'cond': {\n title: 'cond',\n category: 'Special expression',\n linkName: 'cond',\n returns: {\n type: 'any',\n },\n args: {\n conds: {\n type: '*conditions',\n },\n },\n variants: [\n { argumentNames: ['conds'] },\n ],\n description: 'Used for branching. $conds are tested sequentially from the top. If no branch is tested truthy, `nil` is returned.',\n examples: [\n `\n(cond\n false (write! \"FALSE\")\n nil (write! \"nil\")\n :else (write! \"TRUE\"))`,\n `\n(cond\n false (write! \"FALSE\")\n nil (write! \"nil\")\n true (write! \"TRUE\"))`,\n `\n(cond\n false (write! \"FALSE\")\n nil (write! \"nil\"))`,\n ],\n },\n 'when': {\n title: 'when',\n category: 'Special expression',\n linkName: 'when',\n returns: {\n type: 'any',\n },\n args: {\n test: {\n type: '*expression',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['test', 'expressions'] },\n ],\n description: `If $test yields a thruthy value, the expressions are evaluated\nand the value returned by the last expression is returned.\nOtherwise, if $test yields a falsy value, the expressions are not evaluated,\nand \\`nil\\` is returned. If no $expressions are provided, \\`nil\\` is returned.`,\n examples: [\n `(when true\n (write! \"Hi\")\n (write! \"There\"))`,\n `(when false\n (write! \"Hi\")\n (write! \"There\"))`,\n '(when true)',\n '(when false)',\n ],\n },\n 'when-not': {\n title: 'when-not',\n category: 'Special expression',\n linkName: 'when-not',\n returns: {\n type: 'any',\n },\n args: {\n test: {\n type: '*expression',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['test', 'expressions'] },\n ],\n description: `If $test yields a falsy value, the expressions are evaluated\nand the value returned by the last \\`expression\\` is returned.\nOtherwise, if $test yields a truthy value, the $expressions are not evaluated,\nand \\`nil\\` is returned. If no \\`expression\\` is provided, \\`nil\\` is returned.`,\n examples: [\n '(when-not true (write! \"Hi\") (write! \"There\"))',\n '(when-not false (write! \"Hi\") (write! \"There\"))',\n '(when-not true)',\n '(when-not false)',\n ],\n },\n 'comment': {\n title: 'comment',\n category: 'Special expression',\n linkName: 'comment',\n returns: {\n type: 'nil',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: 'All $expressions are read and must be valid `lits` but they are not eveluated. `nil` is returned.',\n examples: ['(comment (write! \"Hi\") (write! \"Albert\"))', '(comment)'],\n },\n 'do': {\n title: 'do',\n category: 'Special expression',\n linkName: 'do',\n returns: {\n type: 'any',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: 'Evaluates $expressions. Resulting value is the value of the last expression.',\n examples: [\n `\n(do \n (write! \"Hi\")\n (write! \"Albert\"))`,\n '(do)',\n ],\n },\n 'recur': {\n title: 'recur',\n category: 'Special expression',\n linkName: 'recur',\n returns: {\n type: 'nil',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: 'Recursevly calls enclosing function or loop with its evaluated $expressions.',\n examples: [\n `\n(defn foo [n]\n (write! n)\n (when (not (zero? n))\n (recur\n (dec n))))\n(foo 3)`,\n `\n(\n (fn [n]\n (write! n)\n (when (not (zero? n))\n (recur\n (dec n))))\n 3)`,\n `\n(\n loop [n 3]\n (write! n)\n (when\n (not (zero? n))\n (recur (dec n))))`,\n ],\n },\n 'loop': {\n title: 'loop',\n category: 'Special expression',\n linkName: 'loop',\n returns: {\n type: 'any',\n },\n args: {\n bindings: {\n type: '*binding',\n rest: true,\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['bindings', 'expressions'] },\n ],\n description: 'Executes $expressions with initial $bindings. The $bindings will be replaced with the recur parameters for subsequent recursions.',\n examples: [\n `\n(loop [n 3]\n (write! n)\n (when\n (not (zero? n))\n (recur (dec n))))`,\n `\n(loop [n 3]\n (write! n)\n (if\n (not (zero? n))\n (recur (dec n))\n n))`,\n ],\n },\n 'time!': {\n title: 'time!',\n category: 'Special expression',\n linkName: 'time_exclamation',\n clojureDocs: 'time',\n returns: {\n type: 'any',\n },\n args: {\n expression: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['expression'] },\n ],\n description: 'Prints the time it took to evaluate $expression. Returns $expression evaluated.',\n examples: [`\n(defn fib [x]\n (if\n (<= x 2)\n 1\n (+ \n (fib (dec x))\n (fib (- x 2)))))\n(time! (fib 20))`],\n },\n\n 'doseq': {\n title: 'doseq',\n category: 'Special expression',\n linkName: 'doseq',\n returns: {\n type: 'nil',\n },\n args: {\n bindings: {\n type: '*for-binding',\n rest: true,\n },\n expr: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['vars', 'expr'] },\n ],\n description: 'Same syntax as `for`, but returns `nil`. Use for side effects. Consumes less memory than `for`.',\n examples: ['(doseq [x [1 2 4]] (write! x))'],\n },\n 'for': {\n title: 'for',\n category: 'Special expression',\n linkName: 'for',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n bindings: {\n type: '*for-binding',\n rest: true,\n },\n expr: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['vars', 'expr'] },\n ],\n description: `List comprehension. Takes one or more $bindings, each followed by zero or more modifiers, and returns an array of evaluations of $expr.\n \n Collections are iterated in a nested fashion, rightmost fastest. Supported modifiers are: &let &while and &when.`,\n examples: [\n `\n(for [x \"Al\" y [1 2]]\n (repeat y x))`,\n `\n(for [x {:a 10 :b 20} y [1 2]]\n (repeat y x))`,\n `\n(for [x [1 2] y [1 10]]\n (* x y))`,\n `\n(for\n [x [1 2]\n &let [z (* x x x)]]\n \n z)`,\n `\n(for\n [x [0 1 2 3 4 5]\n &let [y (* x 3)]\n &when (even? y)]\n \n y)`,\n `\n(for\n [x [0 1 2 3 4 5]\n &let [y (* x 3)]\n &while (even? y)]\n \n y)`,\n `\n(for\n [x [0 1 2 3 4 5]\n &let [y (* x 3)]\n &while (odd? y)]\n \n y)`,\n `\n(for\n [x [1 2 3] y [1 2 3]\n &while (<= x y)\n z [1 2 3]]\n \n [x y z])`,\n `\n(for\n [x [1 2 3] y [1 2 3] z [1 2 3]\n &while (<= x y)]\n \n [x y z])`,\n ],\n },\n 'declared?': {\n title: 'declared?',\n category: 'Special expression',\n linkName: 'declared_question',\n returns: {\n type: 'boolean',\n },\n args: {\n n: {\n type: '*name',\n },\n },\n variants: [\n { argumentNames: ['n'] },\n ],\n description: 'Returns `true` if $n is a declared variable or a builtin function, otherwise `false`.',\n examples: [\n '(declared? foo)',\n `\n(def foo :foo)\n(declared? foo)`,\n '(declared? +)',\n `\n(def foo nil)\n(declared? foo)`,\n '(declared? if)',\n ],\n },\n '??': {\n title: '??',\n category: 'Special expression',\n linkName: '_question_question',\n returns: {\n type: 'any',\n },\n args: {\n test: {\n type: '*expression',\n },\n default: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['test'] },\n { argumentNames: ['test', 'default'] },\n ],\n description: 'If $test is declared and evaluated to non `nil` value $test is result, else $default is returned. If $default is not provided, `nil` is returned.',\n examples: [\n '(?? foo)',\n `\n(def foo :foo)\n(?? foo)`,\n '(?? +)',\n `\n(def foo nil)\n(?? foo)`,\n `\n(def foo nil)\n(?? foo :bar)`,\n '(?? foo 1)',\n '(?? \"\")',\n '(?? 0)',\n '(?? 0 1)',\n '(?? 2 1)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { StringApiName } from '../api'\n\nexport const stringReference: Record<StringApiName, FunctionReference<'String'>> = {\n 'subs': {\n title: 'subs',\n category: 'String',\n linkName: 'subs',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n start: {\n type: 'integer',\n },\n end: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'start', 'end'] },\n { argumentNames: ['s', 'start'] },\n ],\n description: 'Extracts characters from $start up to but not including $end.',\n examples: [\n '(subs \"A string\" 2)',\n '(subs \"A string\" 2 5)',\n '(subs \"A string\" 2 100)',\n '(subs \"A string\" 100)',\n ],\n },\n 'string-repeat': {\n title: 'string-repeat',\n category: 'String',\n linkName: 'string-repeat',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n s: {\n type: 'string',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'n'] },\n ],\n description: 'Repeates $s $n times.',\n examples: [\n '(string-repeat \"*\" 10)',\n '(string-repeat \"***\" 0)',\n ],\n },\n 'str': {\n title: 'str',\n category: 'String',\n linkName: 'str',\n returns: {\n type: 'string',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Concatenats $values into one string. If `value` equals `nil` empty string is returned.',\n examples: [\n '(str \"A string\" \", and another string\" \" ...and more\")',\n '(str \"Just one string\")',\n '(str)',\n '(str 0 false true nil #\"^kalle\" [1 2 3] {:a :a})',\n ],\n },\n 'number': {\n title: 'number',\n category: 'String',\n linkName: 'number',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Parses $s to a number.',\n examples: [\n '(number \"10\")',\n '(number \"010\")',\n '(number \"-1.01\")',\n ],\n },\n 'number-to-string': {\n title: 'number-to-string',\n category: 'String',\n linkName: 'number-to-string',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n n: {\n type: 'number',\n },\n base: {\n type: 'number',\n description: '2, 8, 10 or 16',\n },\n },\n variants: [\n { argumentNames: ['n'] },\n { argumentNames: ['n', 'base'] },\n ],\n description: 'Converts $n to a string. If $base is not equal to `10`, $n must be a non negative integer.',\n examples: [\n '(number-to-string 10)',\n '(number-to-string -1.01)',\n '(number-to-string -.01)',\n '(number-to-string 15 2)',\n '(number-to-string 15 8)',\n '(number-to-string 15 16)',\n ],\n },\n 'lower-case': {\n title: 'lower-case',\n category: 'String',\n linkName: 'lower-case',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to lower case.',\n examples: [\n '(lower-case \"Albert\")',\n '(lower-case \"\")',\n ],\n },\n 'upper-case': {\n title: 'upper-case',\n category: 'String',\n linkName: 'upper-case',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to upper case.',\n examples: [\n '(upper-case \"Albert\")',\n '(upper-case \"\")',\n ],\n },\n 'trim': {\n title: 'trim',\n category: 'String',\n linkName: 'trim',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading and trailing whitespaces removed.',\n examples: [\n '(trim \" Albert \")',\n '(trim \" \")',\n '(trim \"\")',\n ],\n },\n 'trim-left': {\n title: 'trim-left',\n category: 'String',\n linkName: 'trim-left',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading whitespaces removed.',\n examples: [\n '(trim-left \" Albert \")',\n '(trim-left \" \")',\n '(trim-left \"\")',\n ],\n },\n 'trim-right': {\n title: 'trim-right',\n category: 'String',\n linkName: 'trim-right',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with trailing whitespaces removed.',\n examples: [\n '(trim-right \" Albert \")',\n '(trim-right \" \")',\n '(trim-right \"\")',\n ],\n },\n 'pad-left': {\n title: 'pad-left',\n category: 'String',\n linkName: 'pad-left',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given $length.',\n examples: [\n '(pad-left \"Albert\" 20)',\n '(pad-left \"Albert\" 20 \"-*-\")',\n '(pad-left \"Albert\" 5)',\n '(pad-left \"Albert\" -1)',\n ],\n },\n 'pad-right': {\n title: 'pad-right',\n category: 'String',\n linkName: 'pad-right',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given `length`.',\n examples: [\n '(pad-right \"Albert\" 20)',\n '(pad-right \"Albert\" 20 \"-*-\")',\n '(pad-right \"Albert\" 5)',\n '(pad-right \"Albert\" -1)',\n ],\n },\n 'split': {\n title: 'split',\n category: 'String',\n linkName: 'split',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n delimiter: {\n type: 'string',\n },\n limit: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'delimiter'] },\n { argumentNames: ['s', 'delimiter', 'limit'] },\n ],\n description: 'Divides $s into an array of substrings. The division is done by searching for `delimiter`. If `limit` as provided, at most `limit` number of substrings are returned.',\n examples: [\n '(split \"Albert Mojir\" \" \")',\n '(split \"abcdefghijklmnopqrstuvw\" (regexp \"[aoueiy]\"))',\n '(split \"0123456789\" \"\")',\n '(map number (split \"0123456789\" \"\" 5))',\n ],\n },\n 'template': {\n title: 'template',\n category: 'String',\n linkName: 'template',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n params: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['s', 'params'] },\n ],\n description: 'Applies placeholders to a string. Support for basic pluralization - see examples. If pluralization is used, first placeholder must be a number.',\n examples: [\n '(template \"Hi, $1 and $2\" \"Carl\" \"Larry\")',\n '(template \"Hi $1, $2, $3, $4, $5, $6, $7, $8 and $9\" :A :B :C :D :E :F :G :H :I)',\n '(template \"$1 book||||$1 books\" 0)',\n '(template \"$1 book||||$1 books\" 1)',\n '(template \"$1 book||||$1 books\" 2)',\n '(template \"No book||||$1 book||||$1 books\" 0)',\n '(template \"No book||||$1 book||||$1 books\" 1)',\n '(template \"No book||||$1 book||||$1 books\" 10)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 0)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 1)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 2)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 3)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 4)',\n ],\n },\n 'to-char-code': {\n title: 'to-char-code',\n category: 'String',\n linkName: 'to-char-code',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n c: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['c'] },\n ],\n description: 'Return code point for first character in $c.',\n examples: [\n '(to-char-code :A)',\n '(to-char-code \"Albert\")',\n ],\n },\n 'from-char-code': {\n title: 'from-char-code',\n category: 'String',\n linkName: 'from-char-code',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n code: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['code'] },\n ],\n description: 'Return character for code point $code.',\n examples: [\n '(from-char-code 65)',\n '(from-char-code 0)',\n ],\n },\n 'encode-base64': {\n title: 'encode-base64',\n category: 'String',\n linkName: 'encode-base64',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a Base64 encoded string from $s.',\n examples: [\n '(encode-base64 \"Albert\")',\n ],\n },\n 'decode-base64': {\n title: 'decode-base64',\n category: 'String',\n linkName: 'decode-base64',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n base64string: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['base64string'] },\n ],\n description: 'Returns a Base64 decoded string from $base64string.',\n examples: [\n '(decode-base64 \"QWxiZXJ0IPCfkLs=\")',\n ],\n },\n 'encode-uri-component': {\n title: 'encode-uri-component',\n category: 'String',\n linkName: 'encode-uri-component',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an escaped `URI` string.',\n examples: [\n '(encode-uri-component \"Hi everyone!?\")',\n ],\n },\n 'decode-uri-component': {\n title: 'decode-uri-component',\n category: 'String',\n linkName: 'decode-uri-component',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an un-escaped `URI` string.',\n examples: [\n '(decode-uri-component \"Hi%20everyone!%3F%20%F0%9F%91%8D\")',\n ],\n },\n\n 'join': {\n title: 'join',\n category: 'String',\n linkName: 'join',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n arr: {\n type: 'array',\n },\n delimiter: {\n type: 'string',\n },\n },\n variants: [{\n argumentNames: ['arr', 'delimiter'],\n }],\n description: 'Returns a new string by concatenating all of the elements in $arr, separated by $delimiter.',\n examples: [\n '(join [\"Albert\" \"Mojir\"] \" \")',\n '(join (map number-to-string [0 1 2 3 4 5 6 7 8 9]) \", \")',\n ],\n },\n}\n","import type { BitwiseApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const bitwiseReference: Record<BitwiseApiName, FunctionReference<'Bitwise'>> = { 'bit-shift-left': {\n title: 'bit-shift-left',\n category: 'Bitwise',\n linkName: 'bit-shift-left',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Shifts $x arithmetically left by $n bit positions.',\n examples: ['(bit-shift-left 1 10)', '(bit-shift-left -4 2)'],\n}, 'bit-shift-right': {\n title: 'bit-shift-right',\n category: 'Bitwise',\n linkName: 'bit-shift-right',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Shifts $x arithmetically right by $n bit positions.',\n examples: ['(bit-shift-right 2048 10)', '(bit-shift-right 4 10)'],\n}, 'bit-not': {\n title: 'bit-not',\n category: 'Bitwise',\n linkName: 'bit-not',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns bitwise `not` of $x.',\n examples: ['(bit-not 0)', '(bit-not 255)'],\n}, 'bit-and': {\n title: 'bit-and',\n category: 'Bitwise',\n linkName: 'bit-and',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `and` of all arguments.',\n examples: [\n '(bit-and 0b0011 0b0110)',\n '(bit-and 0b0011 0b0110 0b1001)',\n ],\n}, 'bit-and-not': {\n title: 'bit-and-not',\n category: 'Bitwise',\n linkName: 'bit-and-not',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `and` with complement.',\n examples: ['(bit-and-not 0b0011 0b0110)', '(bit-and-not 0b0011 0b0110 0b1001)'],\n}, 'bit-or': {\n title: 'bit-or',\n category: 'Bitwise',\n linkName: 'bit-or',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `or` of all arguments.',\n examples: ['(bit-or 0b0011 0b0110)', '(bit-or 0b1000 0b0100 0b0010)'],\n}, 'bit-xor': {\n title: 'bit-xor',\n category: 'Bitwise',\n linkName: 'bit-xor',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `xor` of all arguments.',\n examples: ['(bit-xor 0b0011 0b0110)', '(bit-xor 0b11110000 0b00111100 0b10101010)'],\n}, 'bit-flip': {\n title: 'bit-flip',\n category: 'Bitwise',\n linkName: 'bit-flip',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Flips bit number $n.',\n examples: ['(bit-flip 0b0011 1)', '(bit-flip 0b1100 1)'],\n}, 'bit-clear': {\n title: 'bit-clear',\n category: 'Bitwise',\n linkName: 'bit-clear',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Clears bit number $n.',\n examples: ['(bit-clear 0b0011 1)', '(bit-clear 0b1100 1)'],\n}, 'bit-set': {\n title: 'bit-set',\n category: 'Bitwise',\n linkName: 'bit-set',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Sets bit number $n.',\n examples: ['(bit-set 0b0011 1)', '(bit-set 0b1100 1)'],\n}, 'bit-test': {\n title: 'bit-test',\n category: 'Bitwise',\n linkName: 'bit-test',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Checks if bit number $n is set.',\n examples: ['(bit-test 0b0011 1)', '(bit-test 0b1100 1)'],\n} }\n","import type { ShorthandName } from './api'\nimport type { ShorthandReference } from '.'\n\nexport const shorthand: Record<ShorthandName, ShorthandReference> = {\n _short_regexp: {\n shorthand: true,\n title: '#\"pattern\"',\n category: 'Shorthand',\n linkName: '_short_regexp',\n clojureDocs: null,\n description: 'Shorthand for ``(regexp pattern)``',\n examples: [\n '#\"^\\\\s*(.*)$\"',\n '#\"albert\"ig',\n ],\n seeAlso: ['regexp'],\n },\n _short_fn: {\n shorthand: true,\n title: '#(expression)',\n category: 'Shorthand',\n linkName: '_short_fn',\n clojureDocs: null,\n description: `\nShorthand for \\`\\`(fn [args] (expression))\\`\\`.\n\\`%1, %2, %3, ...\\` are shorthand for the first, second, third, ... argument.\n\nYou can reference the first argument using either \\`%1\\` or \\`%\\`.\nHowever, please note that \\`%1\\` and \\`%\\` are mutually exclusive and cannot be used simultaneously.\nE.g. \\`\\`#(* % %1)\\`\\` is not valid.`,\n examples: [\n '#(+ %1 %2)',\n '#(* % %)',\n ],\n seeAlso: ['fn'],\n },\n _short_string: {\n shorthand: true,\n title: ':abc',\n category: 'Shorthand',\n linkName: '_short_string',\n clojureDocs: null,\n description: 'Shorthand for ``\"abc\"``. The string can only contain `name` characters',\n examples: [\n ':abc',\n ':a-b',\n ],\n },\n _short_dot: {\n shorthand: true,\n title: 'foo.bar',\n category: 'Shorthand',\n linkName: '_short_dot',\n clojureDocs: null,\n description: 'Shorthand for ``(foo \"bar\")``.',\n examples: [\n `\n(def foo {:bar {:baz 42}})\nfoo.bar.baz`,\n ],\n },\n _short_hash: {\n shorthand: true,\n title: 'foo#3',\n category: 'Shorthand',\n linkName: '_short_hash',\n clojureDocs: null,\n description: 'Shorthand for ``(foo 3)``.',\n examples: [\n `\n(def foo {:bar [1 2 3]})\nfoo.bar#2`,\n ],\n },\n}\n","import type { DatatypeName } from './api'\nimport type { DatatypeReference } from '.'\n\nexport const datatype: Record<DatatypeName, DatatypeReference> = {\n _type_number: {\n datatype: true,\n clojureDocs: null,\n title: 'number',\n category: 'Datatype',\n linkName: '_type_number',\n description: 'A number',\n examples: [\n '42',\n '3.14',\n ],\n },\n _type_string: {\n datatype: true,\n clojureDocs: null,\n title: 'string',\n category: 'Datatype',\n linkName: '_type_string',\n description: 'A string',\n examples: [\n '\"hello\"',\n '\"\"',\n ],\n },\n _type_object: {\n datatype: true,\n clojureDocs: null,\n title: 'object',\n category: 'Datatype',\n linkName: '_type_object',\n description: 'An object, a collection of key-value pairs where keys are strings',\n examples: [\n '{}',\n '{:a 1 :b 2}',\n ],\n },\n _type_array: {\n datatype: true,\n clojureDocs: null,\n title: 'array',\n category: 'Datatype',\n linkName: '_type_array',\n description: 'An array, a collection of values',\n examples: [\n '[]',\n '[1 2 3]',\n '[:a nil true]',\n ],\n },\n _type_boolean: {\n datatype: true,\n clojureDocs: null,\n title: 'boolean',\n category: 'Datatype',\n linkName: '_type_boolean',\n description: 'A boolean',\n examples: [\n 'true',\n 'false',\n ],\n },\n _type_function: {\n datatype: true,\n clojureDocs: null,\n title: 'function',\n category: 'Datatype',\n linkName: '_type_function',\n description: 'A function',\n examples: [\n '(fn [x] (+ x 1))',\n '(fn [] 42)',\n '#(+ %1 %2)',\n ],\n },\n _type_integer: {\n datatype: true,\n clojureDocs: null,\n title: 'integer',\n category: 'Datatype',\n linkName: '_type_integer',\n description: 'An integer',\n examples: [\n '42',\n '-42',\n ],\n },\n _type_any: {\n datatype: true,\n clojureDocs: null,\n title: 'any',\n category: 'Datatype',\n linkName: '_type_any',\n description: 'Any value',\n examples: [\n '42',\n '\"hello\"',\n 'true',\n 'nil',\n ],\n },\n _type_nil: {\n datatype: true,\n clojureDocs: null,\n title: 'nil',\n category: 'Datatype',\n linkName: '_type_nil',\n description: 'The value nil',\n examples: [\n 'nil',\n ],\n },\n _type_collection: {\n datatype: true,\n clojureDocs: null,\n title: 'collection',\n category: 'Datatype',\n linkName: '_type_collection',\n description: 'A collection, an object, an array or a string',\n examples: [\n '{:foo 42}',\n '[1, 2, 3]',\n '\"hello\"',\n ],\n },\n _type_sequence: {\n datatype: true,\n clojureDocs: null,\n title: 'sequence',\n category: 'Datatype',\n linkName: '_type_sequence',\n description: 'A sequence, an array or a string',\n examples: [\n '[1 2 3]',\n '\"hello\"',\n ],\n },\n _type_regexp: {\n datatype: true,\n clojureDocs: null,\n title: 'regexp',\n category: 'Datatype',\n linkName: '_type_regexp',\n description: 'A regular expression',\n examples: [\n '(regexp \"^\\\\s*(.*)$\")',\n '#\"albert\"ig',\n ],\n },\n _type_never: {\n datatype: true,\n clojureDocs: null,\n title: 'never',\n category: 'Datatype',\n linkName: '_type_never',\n description: 'A value that can never be created',\n examples: [\n '(throw \"error\")',\n ],\n },\n}\n","import { isUnknownRecord } from '../src/typeGuards'\nimport { collectionReference } from './categories/collection'\nimport { functionalReference } from './categories/functional'\nimport { arrayReference } from './categories/array'\nimport { sequenceReference } from './categories/sequence'\nimport { mathReference } from './categories/math'\nimport { miscReference } from './categories/misc'\nimport { assertReference } from './categories/assert'\nimport { objectReference } from './categories/object'\nimport { predicateReference } from './categories/predicate'\nimport { regularExpressionReference } from './categories/regularExpression'\nimport { specialExpressionsReference } from './categories/specialExpressions'\nimport { stringReference } from './categories/string'\nimport { bitwiseReference } from './categories/bitwise'\nimport { shorthand } from './shorthand'\nimport { datatype } from './datatype'\nimport type { ApiName, Category, DataType, FunctionName } from './api'\n\nexport interface TypedValue {\n type: DataType[] | DataType\n rest?: true\n array?: true\n}\n\ntype NormalExpressionArgument = TypedValue & {\n description?: string\n}\ninterface SpecialExpressionArgument {\n type: '*expression' | '*name' | '*binding' | '*arguments' | '*catch-expression' | '*conditions' | '*for-binding'\n rest?: true\n array?: true\n description?: string\n}\n\nexport type Argument = NormalExpressionArgument | SpecialExpressionArgument\n\nexport function isSpecialExpressionArgument(arg?: Argument): arg is SpecialExpressionArgument {\n return isUnknownRecord(arg) && typeof arg.type === 'string' && arg.type.startsWith('*')\n}\n\nexport function isNormalExpressionArgument(arg?: Argument): arg is NormalExpressionArgument {\n return isUnknownRecord(arg) && !isSpecialExpressionArgument(arg)\n}\n\nexport function isTypedValue(arg?: Argument): arg is TypedValue {\n return isUnknownRecord(arg) && !isSpecialExpressionArgument(arg)\n}\n\ninterface Variant {\n argumentNames: string[]\n}\n\nexport interface CommonReference<T extends Category> {\n title: string\n category: T\n linkName: string\n examples: string[]\n description: string\n clojureDocs?: string | null\n seeAlso?: ApiName[]\n}\nexport interface FunctionReference<T extends Category = Category> extends CommonReference<T> {\n returns: TypedValue\n args: Record<string, Argument>\n variants: Variant[]\n}\n\nexport interface ShorthandReference extends CommonReference<'Shorthand'> {\n shorthand: true\n linkName: `_short_${string}`\n}\n\nexport interface DatatypeReference extends CommonReference<'Datatype'> {\n datatype: true\n linkName: `_type_${string}`\n}\n\nexport type Reference<T extends Category = Category> = FunctionReference<T> | ShorthandReference | DatatypeReference\n\nexport function isFunctionReference<T extends Category>(ref: Reference<T>): ref is FunctionReference<T> {\n return 'returns' in ref && 'args' in ref && 'variants' in ref\n}\n\nexport function isShorthandReference<T extends Category>(ref: Reference<T>): ref is ShorthandReference {\n return 'shorthand' in ref\n}\n\nexport function isDatatypeReference<T extends Category>(ref: Reference<T>): ref is DatatypeReference {\n return 'datatype' in ref\n}\n\nexport const functionReference: Record<FunctionName, FunctionReference> = {\n ...collectionReference,\n ...arrayReference,\n ...sequenceReference,\n ...mathReference,\n ...functionalReference,\n ...miscReference,\n ...objectReference,\n ...predicateReference,\n ...regularExpressionReference,\n ...specialExpressionsReference,\n ...stringReference,\n ...bitwiseReference,\n ...assertReference,\n}\n\nexport const apiReference: Record<ApiName, Reference> = { ...functionReference, ...shorthand, ...datatype }\n\nObject.values(apiReference).forEach((ref) => {\n ref.title = ref.title.replace(/\"/g, '&quot;')\n})\n","import { normalExpressionKeys, specialExpressionKeys } from '../src/builtin'\n\nexport const api = {\n collection: [\n 'count',\n 'get',\n 'get-in',\n 'contains?',\n 'has?',\n 'has-some?',\n 'has-every?',\n 'assoc',\n 'assoc-in',\n 'concat',\n 'not-empty',\n 'every?',\n 'not-every?',\n 'any?',\n 'not-any?',\n 'update',\n 'update-in',\n ] as const,\n array: [\n 'array',\n 'range',\n 'repeat',\n 'flatten',\n 'mapcat',\n ] as const,\n sequence: [\n 'nth',\n 'push',\n 'pop',\n 'unshift',\n 'shift',\n 'slice',\n 'reductions',\n 'reduce',\n 'reduce-right',\n 'map',\n 'filter',\n 'position',\n 'index-of',\n 'some',\n 'reverse',\n 'first',\n 'second',\n 'last',\n 'rest',\n 'nthrest',\n 'next',\n 'nthnext',\n 'cons',\n 'take',\n 'take-last',\n 'take-while',\n 'drop',\n 'drop-last',\n 'drop-while',\n 'sort',\n 'sort-by',\n 'random-sample!',\n 'rand-nth!',\n 'shuffle!',\n 'distinct',\n 'remove',\n 'remove-at',\n 'split-at',\n 'split-with',\n 'frequencies',\n 'group-by',\n 'partition',\n 'partition-all',\n 'partition-by',\n ] as const,\n math: [\n '+',\n '-',\n '*',\n '/',\n 'mod',\n 'rem',\n 'quot',\n 'inc',\n 'dec',\n 'sqrt',\n 'cbrt',\n 'pow',\n 'exp',\n 'round',\n 'trunc',\n 'floor',\n 'ceil',\n 'min',\n 'max',\n 'abs',\n 'sign',\n 'positive-infinity',\n 'negative-infinity',\n 'max-safe-integer',\n 'min-safe-integer',\n 'max-value',\n 'min-value',\n 'epsilon',\n 'nan',\n 'e',\n 'pi',\n 'log',\n 'log2',\n 'log10',\n 'rand!',\n 'rand-int!',\n 'sin',\n 'cos',\n 'tan',\n 'asin',\n 'acos',\n 'atan',\n 'sinh',\n 'cosh',\n 'tanh',\n 'asinh',\n 'acosh',\n 'atanh',\n ] as const,\n functional: [\n 'apply',\n 'identity',\n 'partial',\n 'comp',\n 'constantly',\n 'juxt',\n 'complement',\n 'every-pred',\n 'some-pred',\n 'fnil',\n ] as const,\n misc: [\n 'not=',\n '=',\n '<',\n '>',\n '<=',\n '>=',\n 'not',\n 'write!',\n 'inst-ms!',\n 'iso-date-time->inst-ms',\n 'inst-ms->iso-date-time',\n 'boolean',\n 'compare',\n 'lits-version!',\n 'uuid!',\n 'equal?',\n 'json-parse',\n 'json-stringify',\n ] as const,\n object: [\n 'dissoc',\n 'object',\n 'keys',\n 'vals',\n 'entries',\n 'find',\n 'merge',\n 'merge-with',\n 'zipmap',\n 'select-keys',\n ] as const,\n predicate: [\n 'boolean?',\n 'nil?',\n 'number?',\n 'string?',\n 'function?',\n 'integer?',\n 'array?',\n 'object?',\n 'coll?',\n 'seq?',\n 'regexp?',\n 'zero?',\n 'pos?',\n 'neg?',\n 'even?',\n 'odd?',\n 'finite?',\n 'nan?',\n 'negative-infinity?',\n 'positive-infinity?',\n 'false?',\n 'true?',\n 'empty?',\n 'not-empty?',\n ] as const,\n regularExpression: [\n 'regexp',\n 'match',\n 'replace',\n ] as const,\n specialExpressions: [\n 'and',\n 'or',\n 'def',\n 'defs',\n 'let',\n 'if-let',\n 'when-let',\n 'when-first',\n 'fn',\n 'defn',\n 'defns',\n 'try',\n 'throw',\n 'if',\n 'if-not',\n 'cond',\n 'when',\n 'when-not',\n 'comment',\n 'do',\n 'recur',\n 'loop',\n 'time!',\n 'doseq',\n 'for',\n 'declared?',\n '??',\n ] as const,\n string: [\n 'subs',\n 'string-repeat',\n 'str',\n 'number',\n 'number-to-string',\n 'lower-case',\n 'upper-case',\n 'trim',\n 'trim-left',\n 'trim-right',\n 'pad-left',\n 'pad-right',\n 'split',\n 'template',\n 'to-char-code',\n 'from-char-code',\n 'encode-base64',\n 'decode-base64',\n 'encode-uri-component',\n 'decode-uri-component',\n 'join',\n ] as const,\n bitwise: [\n 'bit-shift-left',\n 'bit-shift-right',\n 'bit-not',\n 'bit-and',\n 'bit-and-not',\n 'bit-or',\n 'bit-xor',\n 'bit-flip',\n 'bit-clear',\n 'bit-set',\n 'bit-test',\n ] as const,\n assert: [\n 'assert',\n 'assert=',\n 'assert-not=',\n 'assert-equal',\n 'assert-not-equal',\n 'assert>',\n 'assert<',\n 'assert>=',\n 'assert<=',\n 'assert-true',\n 'assert-false',\n 'assert-truthy',\n 'assert-falsy',\n 'assert-nil',\n 'assert-throws',\n 'assert-throws-error',\n 'assert-not-throws',\n ] as const,\n shorthand: [\n '_short_regexp',\n '_short_fn',\n '_short_string',\n '_short_dot',\n '_short_hash',\n ] as const satisfies `_short_${string}`[],\n datatype: [\n '_type_number',\n '_type_string',\n '_type_object',\n '_type_array',\n '_type_boolean',\n '_type_function',\n '_type_integer',\n '_type_any',\n '_type_nil',\n '_type_collection',\n '_type_sequence',\n '_type_regexp',\n '_type_never',\n ] as const satisfies `_type_${string}`[],\n} as const\n\nexport type CollectionApiName = typeof api.collection[number]\nexport type ArrayApiName = typeof api.array[number]\nexport type SequenceApiName = typeof api.sequence[number]\nexport type MathApiName = typeof api.math[number]\nexport type FunctionalApiName = typeof api.functional[number]\nexport type MiscApiName = typeof api.misc[number]\nexport type ObjectApiName = typeof api.object[number]\nexport type PredicateApiName = typeof api.predicate[number]\nexport type RegularExpressionApiName = typeof api.regularExpression[number]\nexport type SpecialExpressionsApiName = typeof api.specialExpressions[number]\nexport type StringApiName = typeof api.string[number]\nexport type BitwiseApiName = typeof api.bitwise[number]\nexport type AssertApiName = typeof api.assert[number]\n\nexport type FunctionName =\n | CollectionApiName\n | ArrayApiName\n | SequenceApiName\n | MathApiName\n | FunctionalApiName\n | MiscApiName\n | ObjectApiName\n | PredicateApiName\n | RegularExpressionApiName\n | SpecialExpressionsApiName\n | StringApiName\n | BitwiseApiName\n | AssertApiName\n\nexport type ShorthandName = typeof api.shorthand[number]\n\nexport type DatatypeName = typeof api.datatype[number]\n\nconst functionNames = [\n ...api.collection,\n ...api.array,\n ...api.sequence,\n ...api.math,\n ...api.functional,\n ...api.misc,\n ...api.object,\n ...api.predicate,\n ...api.regularExpression,\n ...api.specialExpressions,\n ...api.string,\n ...api.bitwise,\n ...api.assert,\n] as const\n\nconst apiNames = [\n ...functionNames,\n ...api.shorthand,\n ...api.datatype,\n] as const\n\nconst functionNamesFromLitsSrc = [...normalExpressionKeys, ...specialExpressionKeys] as const\n\nfor (const functionName of functionNamesFromLitsSrc) {\n if (!apiNames.includes(functionName as ApiName))\n throw new Error(`Function name \"${functionName}\" is not included in the API`)\n}\n\nfor (const functionName of functionNames) {\n if (!functionNamesFromLitsSrc.includes(functionName as FunctionName))\n throw new Error(`Function name \"${functionName}\" is not included in the Lits source`)\n}\n\nexport type ApiName = typeof apiNames[number]\n\nexport function isApiName(arg: string): arg is ApiName {\n return apiNames.includes(arg as ApiName)\n}\n\nexport const categoryRecord = {\n 'Special expression': true,\n 'Predicate': true,\n 'Sequence': true,\n 'Collection': true,\n 'Array': true,\n 'Object': true,\n 'String': true,\n 'Math': true,\n 'Functional': true,\n 'Regular expression': true,\n 'Bitwise': true,\n 'Misc': true,\n 'Assert': true,\n 'Shorthand': true,\n 'Datatype': true,\n} as const\n\nexport type Category = keyof typeof categoryRecord\n\nexport const categories = Object.keys(categoryRecord) as Category[]\n\nconst dataTypes = [\n 'number',\n 'string',\n 'object',\n 'array',\n 'boolean',\n 'function',\n 'integer',\n 'any',\n 'nil',\n 'collection',\n 'sequence',\n 'regexp',\n 'never',\n] as const\nexport type DataType = typeof dataTypes[number]\n\nexport function isDataType(arg: string): arg is DataType {\n return dataTypes.includes(arg as DataType)\n}\n"],"names":["AstNodeType","TokenType","FunctionType","isLitsFunction","isUnknownRecord","isToken","isAstNode","analyze","_a","createLetArray"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/constants/constants.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/number.ts","../src/typeGuards/lits.ts","../src/utils/arity.ts","../src/builtin/core/bitwise.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/core/collection.ts","../src/builtin/core/array.ts","../src/builtin/core/sequence.ts","../src/typeGuards/annotatedArrays.ts","../src/builtin/core/math.ts","../src/builtin/core/misc.ts","../src/builtin/core/object.ts","../src/builtin/core/predicates.ts","../src/builtin/core/regexp.ts","../src/builtin/core/string.ts","../src/builtin/core/functional.ts","../src/builtin/core/meta.ts","../src/builtin/core/vector.ts","../src/utils/docString/generateDocString.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/switch.ts","../src/typeGuards/astNode.ts","../src/builtin/specialExpressions/defined.ts","../src/parser/types.ts","../src/builtin/bindingNode.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/block.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/unless.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/array.ts","../src/builtin/specialExpressions/object.ts","../src/builtin/specialExpressionTypes.ts","../src/builtin/index.ts","../src/getUndefinedSymbols/index.ts","../src/tokenizer/reservedNames.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts"],"sourcesContent":["import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/token'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n if (!sourceCodeInfo) {\n return message\n }\n const location = `${sourceCodeInfo.position.line}:${sourceCodeInfo.position.column}`\n const filePathLine = sourceCodeInfo.filePath\n ? `\\n${sourceCodeInfo.filePath}:${location}`\n : `\\nLocation ${location}`\n const codeLine = `\\n${sourceCodeInfo.code}`\n const codeMarker = `\\n${getCodeMarker(sourceCodeInfo)}`\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(err: unknown, sourceCodeInfo: SourceCodeInfo | undefined) {\n const message = err instanceof Error\n ? err.message\n : `${err}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","export const NodeTypes = {\n Number: 1,\n String: 2,\n NormalExpression: 3,\n SpecialExpression: 4,\n UserDefinedSymbol: 5,\n NormalBuiltinSymbol: 6,\n SpecialBuiltinSymbol: 7,\n ReservedSymbol: 8,\n Binding: 9,\n Spread: 10,\n} as const\n\nconst NodeTypesSet = new Set(Object.values(NodeTypes))\n\nexport type NodeType = typeof NodeTypes[keyof typeof NodeTypes]\n\nexport function getNodeTypeName(type: NodeType): keyof typeof NodeTypes {\n return Object.keys(NodeTypes).find(key => NodeTypes[key as keyof typeof NodeTypes] === type) as keyof typeof NodeTypes\n}\n\n// TODO, is this needed?\nexport function isNodeType(type: unknown): type is NodeType {\n return typeof type === 'number' && NodeTypesSet.has(type as NodeType)\n}\n\nconst functionTypes = [\n 'UserDefined',\n 'Partial',\n 'Comp',\n 'Constantly',\n 'Juxt',\n 'Complement',\n 'EveryPred',\n 'SomePred',\n 'Fnull',\n 'Builtin',\n 'SpecialBuiltin',\n 'NativeJsFunction',\n 'Module',\n] as const\n\nconst functionTypeSet = new Set(functionTypes)\n\nexport type FunctionType = typeof functionTypes[number]\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'string' && functionTypeSet.has(type as FunctionType)\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { getNodeTypeName, isFunctionType, isNodeType } from '../../constants/constants'\nimport type { LitsFunction, Node } from '../../parser/types'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (func === null || typeof func !== 'object')\n return false\n\n return FUNCTION_SYMBOL in func && 'functionType' in func && isFunctionType(func.functionType)\n}\n\nfunction isNode(value: unknown): value is Node {\n if (!Array.isArray(value) || value.length < 2)\n return false\n return isNodeType(value[0])\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isNode(value))\n return `${getNodeTypeName(value[0])}-node`\n\n if (value === null)\n return 'null'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo: SourceCodeInfo | undefined): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n","import type { LitsFunction, NativeJsFunction, NormalBuiltinFunction, UserDefinedFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.functionType === 'UserDefined'\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.functionType === 'NativeJsFunction'\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is NormalBuiltinFunction {\n return isUnknownRecord(value) && value.functionType === 'Builtin'\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (Number.isNaN(value))\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { FunctionLike, RegularExpression } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isFunctionLike(value: unknown): value is FunctionLike {\n if (typeof value === 'number')\n return true\n if (isColl(value))\n return true\n if (isLitsFunction(value))\n return true\n\n return false\n}\nexport function asFunctionLike(value: unknown, sourceCodeInfo?: SourceCodeInfo): FunctionLike {\n assertFunctionLike(value, sourceCodeInfo)\n return value\n}\nexport function assertFunctionLike(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is FunctionLike {\n if (!isFunctionLike(value))\n throw getAssertionError('FunctionLike', value, sourceCodeInfo)\n}\n","import type { Arity } from '../builtin/interface'\nimport { LitsError } from '../errors'\nimport type { FunctionLike } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isColl } from '../typeGuards/lits'\nimport { valueToString } from './debug/debugTools'\n\nexport function arityAccepts(arity: Arity, nbrOfParams: number): boolean {\n const { min, max } = arity\n if (typeof min === 'number' && nbrOfParams < min) {\n return false\n }\n if (typeof max === 'number' && nbrOfParams > max) {\n return false\n }\n return true\n}\n\nexport function arityAcceptsMin(arity: Arity, nbrOfParams: number): boolean {\n const { min } = arity\n if (typeof min === 'number' && nbrOfParams < min) {\n return false\n }\n return true\n}\n\nexport function getCommonArityFromFunctions(params: FunctionLike[]): Arity | null {\n return params.reduce((acc: Arity | null, param): Arity | null => {\n if (acc === null) {\n return null\n }\n const arity: Arity = (typeof param === 'number' || isColl(param)) ? toFixedArity(1) : param.arity\n const { min: aMin, max: aMax } = arity\n const { min: bMin, max: bMax } = acc\n const min = typeof aMin === 'number' && typeof bMin === 'number'\n ? Math.max(aMin, bMin)\n : typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined\n const max = typeof aMax === 'number' && typeof bMax === 'number'\n ? Math.min(aMax, bMax)\n : typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined\n\n if (typeof min === 'number' && typeof max === 'number' && min > max) {\n return null\n }\n\n return { min, max }\n }, {})\n}\n\nexport function getArityFromFunction(param: FunctionLike): Arity {\n return (typeof param === 'number' || isColl(param)) ? toFixedArity(1) : param.arity\n}\n\nexport function assertNumberOfParams(arity: Arity, length: number, sourceCodeInfo: SourceCodeInfo | undefined): void {\n const { min, max } = arity\n if (typeof min === 'number' && length < min) {\n throw new LitsError(\n `Wrong number of arguments, expected at least ${min}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n\n if (typeof max === 'number' && length > max) {\n throw new LitsError(\n `Wrong number of arguments, expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n}\n\nexport function canBeOperator(count: Arity): boolean {\n if (typeof count.max === 'number' && count.max < 2) {\n return false\n }\n\n if (typeof count.min === 'number' && count.min > 2) {\n return false\n }\n\n return true\n}\n\nexport function toFixedArity(arity: number): Arity {\n return { min: arity, max: arity }\n}\n","import { assertNumber } from '../../typeGuards/number'\nimport { toFixedArity } from '../../utils/arity'\nimport type { Argument, BuiltinNormalExpressions } from '../interface'\n\nfunction getOperatorArgs(a: 'integer', b: 'integer'): Record<string, Argument> {\n return { a: { type: a }, b: { type: b } }\n}\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n '<<': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n arity: toFixedArity(2),\n docs: {\n category: 'bitwise',\n returns: { type: 'integer' },\n args: { ...getOperatorArgs('integer', 'integer') },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Shifts $a arithmetically left by $b bit positions.',\n seeAlso: ['>>', '>>>'],\n examples: [\n '1 << 10',\n '<<(1, 10)',\n '<<(-4, 2)',\n ],\n },\n },\n '>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n arity: toFixedArity(2),\n docs: {\n category: 'bitwise',\n returns: { type: 'integer' },\n args: { ...getOperatorArgs('integer', 'integer') },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Shifts $a arithmetically right by $b bit positions.',\n seeAlso: ['<<', '>>>'],\n examples: [\n '2048 >> 10',\n '>>(2048, 10)',\n '>>>(-16, 2)',\n '>>(4, 10)',\n ],\n },\n },\n '>>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >>> count\n },\n arity: toFixedArity(2),\n docs: {\n category: 'bitwise',\n returns: { type: 'integer' },\n args: { ...getOperatorArgs('integer', 'integer') },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Shifts $a arithmetically right by $b bit positions without sign extension.',\n seeAlso: ['<<', '>>'],\n examples: [\n '-16 >>> 2',\n '>>>(2048, 10)',\n '>>>(-16, 2)',\n '>>>(4, 10)',\n '>>>(-1, 10)',\n ],\n },\n },\n '&': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n arity: { min: 2 },\n docs: {\n category: 'bitwise',\n returns: { type: 'integer' },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: { type: 'integer', rest: true },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `and` of all arguments.',\n seeAlso: ['|', 'xor', 'bitwise.bit-not', 'bitwise.bit-and-not'],\n examples: [\n '0b0011 & 0b0110',\n '&(0b0011, 0b0110)',\n '&(0b0011, 0b0110, 0b1001)',\n ],\n },\n },\n '|': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n arity: { min: 2 },\n docs: {\n category: 'bitwise',\n returns: { type: 'integer' },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: { type: 'integer', rest: true },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `or` of all arguments.',\n seeAlso: ['&', 'xor', 'bitwise.bit-not', 'bitwise.bit-and-not'],\n examples: [\n '0b0011 | 0b0110',\n '|(0b0011, 0b0110)',\n '|(0b1000, 0b0100, 0b0010)',\n ],\n },\n },\n 'xor': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n arity: { min: 2 },\n docs: {\n category: 'bitwise',\n returns: { type: 'integer' },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: { type: 'integer', rest: true },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `xor` of all arguments.',\n seeAlso: ['&', '|', 'bitwise.bit-not', 'bitwise.bit-and-not'],\n examples: [\n '0b0011 xor 0b0110',\n 'xor(0b0011, 0b0110)',\n 'xor(0b11110000, 0b00111100, 0b10101010)',\n ],\n },\n },\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Coll, Obj } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString, assertStringOrNumber } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { LitsError } from '../errors'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\nexport function compare<T extends string | number>(a: T, b: T, sourceCodeInfo: SourceCodeInfo | undefined): number {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a < b ? -1 : a > b ? 1 : 0\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.sign((a) - (b))\n }\n throw new LitsError(`Cannot compare values of different types: ${typeof a} and ${typeof b}`, sourceCodeInfo)\n}\n\nexport function deepEqual(a: unknown, b: unknown, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return approxEqual(a, b)\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(a[key], b[key], sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function joinSets<T>(...results: Set<T>[]): Set<T> {\n const result = new Set<T>()\n for (const symbols of results)\n symbols.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addToSet<T>(target: Set<T>, source: Set<T>): void {\n source.forEach(symbol => target.add(symbol))\n}\n\nexport const EPSILON = 1e-10\n\nexport function approxEqual(a: number, b: number, epsilon: number = EPSILON): boolean {\n if (a === b) {\n return true\n }\n\n const diff = Math.abs(a - b)\n\n if (a === 0 || b === 0 || diff < epsilon) {\n // Use absolute error for values near zero\n return diff < epsilon\n }\n const absA = Math.abs(a)\n const absB = Math.abs(b)\n\n // Use relative error for larger values\n return diff / (absA + absB) < epsilon\n}\n\nexport function approxZero(value: number): boolean {\n return Math.abs(value) < EPSILON\n}\n\nexport function smartTrim(str: string, minIndent = 0): string {\n const lines = str.split('\\n')\n while (lines[0]?.match(/^\\s*$/)) {\n lines.shift() // Remove leading empty lines\n }\n while (lines[lines.length - 1]?.match(/^\\s*$/)) {\n lines.pop() // Remove trailing empty lines\n }\n const indent = lines.reduce((acc, line) => {\n if (line.match(/^\\s*$/))\n return acc // Skip empty lines\n const lineIndent = line.match(/^\\s*/)![0].length\n return Math.min(acc, lineIndent)\n }, Infinity)\n return lines.map(line => ' '.repeat(minIndent) + line.slice(indent)).join('\\n').trimEnd()\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj, Seq } from '../../interface'\nimport type { SourceCodeInfo } from '../../tokenizer/token'\nimport { collHasKey, deepEqual, toAny } from '../../utils'\nimport { asAny, asFunctionLike, assertAny, assertColl, assertFunctionLike, assertObj, assertSeq, isObj, isSeq } from '../../typeGuards/lits'\nimport type { BuiltinNormalExpressions } from '../interface'\nimport { assertArray } from '../../typeGuards/array'\nimport { assertNumber, isNumber } from '../../typeGuards/number'\nimport { assertString, assertStringOrNumber, isString, isStringOrNumber } from '../../typeGuards/string'\nimport type { FunctionLike } from '../../parser/types'\nimport { LitsError } from '../../errors'\nimport { toFixedArity } from '../../utils/arity'\n\nfunction mapObjects({\n colls,\n contextStack,\n executeFunction,\n fn,\n sourceCodeInfo,\n}: {\n colls: unknown[]\n fn: FunctionLike\n sourceCodeInfo: SourceCodeInfo | undefined\n contextStack: ContextStack\n executeFunction: ExecuteFunction\n}): Obj {\n assertObj(colls[0], sourceCodeInfo)\n const keys = Object.keys(colls[0])\n const params: Record<string, unknown[]> = {}\n colls.forEach((obj) => {\n assertObj(obj, sourceCodeInfo)\n const objKeys = Object.keys(obj)\n if (objKeys.length !== keys.length) {\n throw new LitsError(`All objects must have the same keys. Expected: ${keys.join(', ')}. Found: ${objKeys.join(', ')}`, sourceCodeInfo)\n }\n if (!objKeys.every(key => keys.includes(key))) {\n throw new LitsError(`All objects must have the same keys. Expected: ${keys.join(', ')}. Found: ${objKeys.join(', ')}`, sourceCodeInfo)\n }\n Object.entries(obj).forEach(([key, value]) => {\n if (!params[key])\n params[key] = []\n params[key].push(value)\n })\n })\n\n return keys.reduce((result: Obj, key) => {\n result[key] = executeFunction(fn, params[key]!, contextStack, sourceCodeInfo)\n return result\n }, {})\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'filter': {\n evaluate: ([coll, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n if (Array.isArray(coll)) {\n const result = coll.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return result\n }\n if (isString(coll)) {\n return coll\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n }\n return Object.entries(coll)\n .filter(([, value]) => executeFunction(fn, [value], contextStack, sourceCodeInfo))\n .reduce((result: Obj, [key, value]) => {\n result[key] = value\n return result\n }, {})\n },\n arity: toFixedArity(2),\n docs: {\n category: 'collection',\n returns: { type: 'collection' },\n args: {\n a: { type: 'collection' },\n b: { type: 'function' },\n coll: { type: 'collection' },\n fun: { type: 'function' },\n },\n variants: [{ argumentNames: ['coll', 'fun'] }],\n description: 'Creates a new collection with all elements that pass the test implemented by $fun.',\n seeAlso: ['collection.filteri', 'map', 'sequence.remove'],\n examples: [\n `\nfilter(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nfilter(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n `\nfilter(\n { a: 1, b: 2 },\n odd?\n)`,\n ],\n },\n },\n 'map': {\n evaluate: (params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fn = asFunctionLike(params.at(-1), sourceCodeInfo)\n\n if (isObj(params[0])) {\n return mapObjects({\n colls: params.slice(0, -1),\n fn,\n sourceCodeInfo,\n contextStack,\n executeFunction,\n })\n }\n\n const seqs = params.slice(0, -1) as Seq[]\n assertSeq(seqs[0], sourceCodeInfo)\n\n const isStr = typeof seqs[0] === 'string'\n let len = seqs[0].length\n seqs.slice(1).forEach((seq) => {\n if (isStr) {\n assertString(seq, sourceCodeInfo)\n }\n else {\n assertArray(seq, sourceCodeInfo)\n }\n len = Math.min(len, seq.length)\n })\n\n const paramArray: unknown[][] = []\n for (let i = 0; i < len; i++) {\n paramArray.push(seqs.map(seq => seq[i]))\n }\n\n const mapped = paramArray.map(p => executeFunction(fn, p, contextStack, sourceCodeInfo))\n\n if (!isStr) {\n return mapped\n }\n mapped.forEach(char => assertString(char, sourceCodeInfo))\n return mapped.join('')\n },\n arity: { min: 2 },\n docs: {\n category: 'collection',\n returns: { type: 'collection' },\n args: {\n a: { type: 'collection' },\n b: { type: 'function' },\n colls: { type: 'collection', rest: true, description: 'At least one.' },\n fun: { type: 'function' },\n },\n variants: [{ argumentNames: ['colls', 'fun'] }],\n description: 'Creates a new collection populated with the results of calling $fun on every element in $colls.',\n seeAlso: ['collection.mapi', 'filter', 'reduce', 'mapcat', 'grid.map', 'grid.mapi'],\n examples: [\n '[1, 2, 3] map -',\n '[1, 2, 3] map -> -($)',\n 'map([\"Albert\", \"Mojir\", 42], str)',\n 'map([1, 2, 3], inc)',\n 'map([1, 2, 3], [1, 10, 100], *)',\n 'map({ a: 1, b: 2 }, inc)',\n 'map({ a: 1, b: 2 }, { a: 10, b: 20 }, +)',\n ],\n },\n },\n 'reduce': {\n evaluate: ([coll, fn, initial], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertColl(coll, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n assertAny(initial, sourceCodeInfo)\n\n if (typeof coll === 'string') {\n assertString(initial, sourceCodeInfo)\n if (coll.length === 0)\n return initial\n\n return coll.split('').reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n else if (Array.isArray(coll)) {\n if (coll.length === 0)\n return initial\n\n return coll.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n else {\n if (Object.keys(coll).length === 0)\n return initial\n\n return Object.entries(coll).reduce((result: Any, [, elem]) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n },\n arity: toFixedArity(3),\n docs: {\n category: 'collection',\n returns: { type: 'any' },\n args: {\n fun: { type: 'function' },\n coll: { type: 'collection' },\n initial: { type: 'any' },\n },\n variants: [{ argumentNames: ['coll', 'fun', 'initial'] }],\n description: 'Runs $fun function on each element of the $coll, passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $coll is a single value.',\n seeAlso: ['collection.reduce-right', 'collection.reducei', 'collection.reductions', 'map', 'grid.reduce', 'grid.reducei'],\n examples: [\n 'reduce([1, 2, 3], +, 0)',\n 'reduce([], +, 0)',\n 'reduce({ a: 1, b: 2 }, +, 0)',\n `\nreduce(\n [1, 2, 3, 4, 5, 6, 7, 8, 9],\n (result, value) -> result + (even?(value) ? value : 0),\n 0)`,\n ],\n },\n },\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n arity: { min: 2, max: 3 },\n docs: {\n category: 'collection',\n returns: { type: 'any' },\n args: {\n 'a': { type: 'collection' },\n 'b': { type: ['string', 'integer'] },\n 'not-found': { type: 'any', description: 'Default value to return if $b is not found.' },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'not-found'] },\n ],\n description: 'Returns value in $a mapped at $b.',\n seeAlso: ['collection.get-in', 'contains?', 'find', 'nth'],\n examples: [\n '[1, 2, 3] get 1',\n '{ a: 1 } get \"a\"',\n '\"Albert\" get \"3\"',\n `\nget(\n [1, 2, 3],\n 1, // Optional comma after last argument\n)`,\n `\nget(\n [],\n 1\n)`,\n `\nget(\n [],\n 1,\n \"default\"\n)`,\n `\nget(\n { a: 1 },\n \"a\"\n)`,\n `\nget(\n { a: 1 },\n \"b\"\n)`,\n `\nget(\n { a: 1 },\n \"b\",\n \"default\"\n)`,\n `\nget(\n null,\n \"a\"\n)`,\n `\nget(\n null,\n \"b\",\n \"default\"\n)`,\n ],\n },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n arity: toFixedArity(1),\n docs: {\n category: 'collection',\n returns: { type: 'number' },\n args: {\n coll: { type: ['collection', 'null'] },\n },\n variants: [{ argumentNames: ['coll'] }],\n description: 'Returns number of elements in $coll.',\n seeAlso: ['empty?'],\n examples: [\n 'count([1, 2, 3])',\n 'count([])',\n 'count({ a: 1 })',\n 'count(\"\")',\n 'count(\"Albert\")',\n 'count(null)',\n ],\n },\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isString(coll)) {\n assertString(key, sourceCodeInfo)\n return coll.includes(key)\n }\n if (isSeq(coll)) {\n assertAny(key, sourceCodeInfo)\n return !!coll.find(elem => deepEqual(asAny(elem), key, sourceCodeInfo))\n }\n assertString(key, sourceCodeInfo)\n return key in coll\n },\n arity: toFixedArity(2),\n docs: {\n category: 'collection',\n returns: { type: 'boolean' },\n args: {\n a: { type: ['collection', 'null'] },\n b: { type: ['string', 'integer'] },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Returns `true` if $a contains $b, otherwise returns `false`. For strings, it checks if substring is included.',\n seeAlso: ['get', 'find', 'index-of'],\n examples: [\n '[1, 2, 3] contains? 1',\n 'null contains? 1',\n '{ a: 1, b: 2 } contains? \"a\"',\n `\ncontains?(\n [],\n 1\n)`,\n `\ncontains?(\n [1],\n 1\n)`,\n `\ncontains?(\n [1, 2, 3],\n 1\n)`,\n `\ncontains?(\n {},\n \"a\"\n)`,\n `\ncontains?(\n { a: 1, b: 2 },\n \"a\"\n)`,\n ],\n },\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n arity: toFixedArity(3),\n docs: {\n category: 'collection',\n returns: { type: 'collection' },\n args: {\n coll: { type: 'collection' },\n key: { type: ['string', 'number'] },\n value: { type: 'any' },\n kvs: { type: 'any', description: 'Key-value pairs to associate.', rest: true },\n },\n variants: [\n { argumentNames: ['coll', 'key', 'value'] },\n { argumentNames: ['coll', 'key', 'value', 'kvs'] },\n ],\n description: `\nAdd or replace the value of element $key to $value in $coll. Repeated for all key-value pairs in $kvs.\nIf $coll is an 'array', $key must be \\`number\\` satisfying \\`0 <=\\` $key \\`<= length\\`.`,\n seeAlso: ['collection.assoc-in', 'dissoc', 'merge', 'collection.update'],\n examples: [\n `\nassoc(\n [1, 2, 3],\n 1,\n \"Two\"\n)`,\n `\nassoc(\n [1, 2, 3],\n 3,\n \"Four\"\n)`,\n `\nassoc(\n { a: 1, b: 2 },\n \"a\",\n \"One\")`,\n `\nassoc(\n { a: 1, b: 2 },\n \"c\",\n \"Three\")`,\n `\nassoc(\n \"Albert\",\n 6,\n \"a\")`,\n ],\n },\n },\n '++': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (!isNumber(params[0])) {\n assertColl(params[0], sourceCodeInfo)\n }\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isStringOrNumber(params[0])) {\n return params.reduce((result: string, s) => {\n assertStringOrNumber(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n arity: { min: 1 },\n docs: {\n category: 'collection',\n returns: { type: 'collection' },\n args: {\n a: { type: 'collection' },\n b: { type: 'collection' },\n colls: { type: 'collection', rest: true },\n },\n variants: [\n { argumentNames: ['a'] },\n { argumentNames: ['a', 'colls'] },\n ],\n description: 'Concatenates collections into one collection.',\n seeAlso: ['mapcat', 'str', 'join', 'push', 'sequence.unshift'],\n examples: [\n '\"Albert\" ++ \" \" ++ \"Mojir\"',\n '\"Albert\" ++ \"Mojir\"',\n\n '++(\"Albert\", \"-\", \"Mojir\")',\n '++(\"Albert\")',\n\n '++(\"A\", \"l\", \"b\", \"e\", \"r\", \"t\")',\n '++([1, 2], [3, 4])',\n '++([], [3, 4])',\n '++([1, 2], [])',\n '++([1, 2], [3, 4], [5, 6])',\n '++([])',\n '++({ a: 1, b: 2 }, { b: 1, c: 2 })',\n '++({}, { a: 1 })',\n ],\n },\n },\n}\n","import type { Arr } from '../../interface'\nimport { assertArray } from '../../typeGuards/array'\nimport { asNumber, assertNumber } from '../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../interface'\nimport { assertFunctionLike } from '../../typeGuards/lits'\nimport { toFixedArity } from '../../utils/arity'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n 'range': {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n arity: { min: 1, max: 3 },\n docs: {\n category: 'array',\n returns: { type: 'number', array: true },\n args: {\n a: { type: 'number' },\n b: { type: 'number' },\n step: { type: 'number' },\n },\n variants: [\n { argumentNames: ['b'] },\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'step'] },\n ],\n description: `$range creates an array with a range of numbers from $a to $b (exclusive), by $step.\n\n$a defaults to 0.\n$step defaults to 1.`,\n seeAlso: ['repeat', 'vector.linspace'],\n examples: [\n 'range(4)',\n 'range(1, 4)',\n '1 range 10',\n 'range(0.4, 4.9)',\n `\nrange(\n 0.25, // start value\n 1, // end value (exclusive)\n 0.25, // step value\n)`,\n ],\n },\n },\n\n 'repeat': {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n arity: toFixedArity(2),\n docs: {\n category: 'array',\n returns: { type: 'any', array: true },\n args: {\n a: { type: 'any' },\n b: { type: 'integer' },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Returns an array with $a repeated $b times.',\n seeAlso: ['range', 'vector.ones', 'vector.zeros', 'vector.fill', 'vector.generate', 'string.string-repeat'],\n examples: [\n 'repeat(10, 3)',\n 'repeat(10, 0)',\n '\"Albert\" repeat 5',\n ],\n },\n },\n\n 'flatten': {\n evaluate: ([seq, depth], sourceCodeInfo): Arr => {\n assertArray(seq, sourceCodeInfo)\n\n const actualDepth = depth === undefined || depth === Number.POSITIVE_INFINITY\n ? Number.POSITIVE_INFINITY\n : asNumber(depth, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return seq.flat(actualDepth)\n },\n arity: { min: 1, max: 2 },\n docs: {\n category: 'array',\n returns: { type: 'any', array: true },\n args: {\n x: { type: ['array', 'any'], description: 'If $x is not an array, `[ ]` is returned.' },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'Takes a nested array $x and flattens it.',\n seeAlso: ['mapcat'],\n examples: [\n 'flatten([1, 2, [3, 4], 5])',\n `\nlet foo = \"bar\";\nflatten([\n 1,\n \" 2 A \",\n [foo, [4, [\"ABC\"]]],\n 6,\n])`,\n ],\n hideOperatorForm: true,\n },\n },\n 'mapcat': {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n arity: toFixedArity(2),\n docs: {\n category: 'array',\n returns: { type: 'collection' },\n args: {\n a: { type: 'collection' },\n b: { type: 'function' },\n colls: { type: 'collection', array: true },\n fun: { type: 'function' },\n },\n variants: [{ argumentNames: ['colls', 'fun'] }],\n description: 'Returns the result of applying concat to the result of applying map to $fun and $colls.',\n seeAlso: ['flatten', 'map', '++'],\n examples: [\n '[[3, 2, 1, 0], [6, 5, 4], [9, 8, 7]] mapcat reverse',\n 'mapcat([[3, 2, 1, 0], [6, 5, 4], [9, 8, 7]], reverse)',\n '[[3, 2, 1, 0,], [6, 5, 4,], [9, 8, 7]] mapcat reverse',\n `\nlet foo = (n) -> do\n [n - 1, n, n + 1]\nend;\n[1, 2, 3] mapcat foo`,\n `\nmapcat(\n [[1, 2], [2, 2], [2, 3]],\n -> $ filter odd?\n)`,\n ],\n },\n },\n 'moving-fn': {\n evaluate: ([arr, windowSize, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr => {\n assertArray(arr, sourceCodeInfo)\n assertNumber(windowSize, sourceCodeInfo, { integer: true, lte: arr.length })\n assertFunctionLike(fn, sourceCodeInfo)\n\n const result = []\n for (let i = 0; i <= arr.length - windowSize; i++) {\n const window = arr.slice(i, i + windowSize)\n const value = executeFunction(fn, [window], contextStack, sourceCodeInfo)\n result.push(value)\n }\n return result\n },\n arity: toFixedArity(3),\n docs: {\n category: 'array',\n returns: { type: 'array' },\n args: {\n arr: { type: 'array' },\n windowSize: { type: 'number', description: 'The size of the moving window.' },\n fn: { type: 'function' },\n },\n variants: [{ argumentNames: ['arr', 'windowSize', 'fn'] }],\n description: 'Returns the result of applying $fn to each moving window of size $windowSize in $arr.',\n seeAlso: ['running-fn', 'vector.moving-mean'],\n examples: [\n 'moving-fn([1, 2, 3], 2, sum)',\n 'moving-fn([1, 2, 3], 1, sum)',\n 'moving-fn([1, 2, 3], 3, sum)',\n ],\n },\n },\n 'running-fn': {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr => {\n assertArray(arr, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n const result = []\n for (let i = 0; i < arr.length; i += 1) {\n const subArr = arr.slice(0, i + 1)\n result.push(executeFunction(fn, [subArr], contextStack, sourceCodeInfo))\n }\n return result\n },\n arity: toFixedArity(2),\n docs: {\n category: 'array',\n returns: { type: 'array' },\n args: {\n a: { type: 'array' },\n b: { type: 'function' },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Returns the result of applying $b to each element of $a.',\n seeAlso: ['moving-fn', 'vector.running-mean'],\n examples: [\n 'running-fn([1, 2, 3], sum)',\n 'running-fn([1, 2, 3], max)',\n 'running-fn([1, 2, 3], min)',\n ],\n },\n },\n}\n","import type { Any, Arr, Seq } from '../../interface'\nimport { assertCharArray } from '../../typeGuards/array'\nimport { asAny, assertAny, assertFunctionLike, assertSeq } from '../../typeGuards/lits'\nimport { assertNumber } from '../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../typeGuards/string'\nimport { compare, deepEqual, toAny } from '../../utils'\nimport { toFixedArity } from '../../utils/arity'\nimport type { BuiltinNormalExpressions } from '../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n if (i >= 0 && i < seq.length) {\n const result = toAny(seq[i])\n return result\n }\n else {\n return defaultValue\n }\n },\n arity: { min: 2, max: 3 },\n docs: {\n category: 'sequence',\n returns: { type: 'any' },\n args: {\n 'a': { type: 'sequence' },\n 'b': { type: 'integer' },\n 'seq': { type: ['sequence', 'null'] },\n 'n': { type: 'integer' },\n 'not-found': { type: 'any' },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'not-found'] },\n ],\n description: 'Accesses element $n of $seq. Accessing out-of-bounds indices returns $not-found, if present, else `null`.',\n seeAlso: ['first', 'second', 'last', 'get', 'slice'],\n examples: [\n '[1, 2, 3] nth 1',\n '\"A string\" nth 3',\n 'nth([1, 2, 3], 1)',\n 'nth([1, 2, 3], 3)',\n 'nth([1, 2, 3], -1)',\n 'nth([1, 2, 3], 3, 99)',\n 'nth(\"A string\", 1)',\n 'nth(\"A string\", 3)',\n 'nth(\"A string\", -3)',\n 'nth(\"A string\", 30, \"X\")',\n 'nth(null, 1)',\n 'nth(null, 1, \"Default value\")',\n ],\n },\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n const result = toAny(array[0])\n\n return result\n },\n arity: toFixedArity(1),\n docs: {\n category: 'sequence',\n returns: { type: 'any' },\n args: { seq: { type: ['sequence', 'null'] } },\n variants: [{ argumentNames: ['seq'] }],\n description: 'Returns the first element of $seq. If $seq is empty or `null`, `null` is returned.',\n seeAlso: ['second', 'last', 'nth', 'rest', 'next'],\n examples: [\n 'first([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'first([])',\n 'first(null)',\n ],\n },\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n const result = toAny(array.at(-1))\n\n return result\n },\n arity: toFixedArity(1),\n docs: {\n category: 'sequence',\n returns: { type: 'any' },\n args: { seq: { type: ['sequence', 'null'] } },\n variants: [{ argumentNames: ['seq'] }],\n description: 'Returns the last element of $seq. If $seq is empty, `null` is returned.',\n seeAlso: ['first', 'second', 'nth', 'pop'],\n examples: [\n 'last([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'last([1, 2])',\n 'last([1])',\n 'last([])',\n 'last(null)',\n ],\n },\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'sequence',\n returns: { type: ['sequence', 'null'], rest: true },\n args: { seq: { type: 'sequence' } },\n variants: [{ argumentNames: ['seq'] }],\n description: 'Returns a copy of $seq with last element removed. If $seq is empty `null` is returned.',\n seeAlso: ['push', 'sequence.shift', 'last'],\n examples: [\n 'pop([1, 2, 3])',\n 'pop([])',\n ],\n },\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n arity: toFixedArity(2),\n docs: {\n category: 'sequence',\n returns: { type: ['number', 'null'] },\n args: {\n a: { type: 'sequence' },\n b: { type: 'any' },\n seq: { type: ['sequence', 'null'] },\n x: { type: 'any' },\n },\n variants: [{ argumentNames: ['seq', 'x'] }],\n description: 'Returns the index of $x in $seq. If element is not present in $seq `null` is returned.',\n seeAlso: ['sequence.last-index-of', 'sequence.position', 'contains?'],\n examples: [\n '[[1], [2], [1], [2]] index-of [1]',\n 'index-of([\"Albert\", \"Mojir\", 160, [1, 2]], \"Mojir\")',\n 'index-of([5, 10, 15, 20], 15)',\n 'index-of([5, 10, 15, 20], 1)',\n 'index-of(null, 1)',\n ],\n },\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n arity: { min: 2 },\n docs: {\n category: 'sequence',\n returns: { type: 'sequence' },\n args: {\n a: { type: 'sequence' },\n b: { type: 'any' },\n seq: { type: 'sequence' },\n values: { type: 'any', rest: true, description: 'At least one.' },\n },\n variants: [{ argumentNames: ['seq', 'values'] }],\n description: 'Returns copy of $seq with $values added to the end of it.',\n seeAlso: ['sequence.unshift', 'pop', '++'],\n examples: [\n '[1, 2, 3] push 4',\n '\"Albert\" push \"!\"',\n 'push([1, 2, 3], 4)',\n 'push([1, 2, 3], 4, 5, 6)',\n `\nlet l = [1, 2, 3];\npush(l, 4);\nl`,\n ],\n },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'sequence',\n returns: { type: ['sequence', 'null'] },\n args: { seq: { type: 'sequence' } },\n variants: [{ argumentNames: ['seq'] }],\n description: `If $seq is an array, returns a new array with all but the first element from $seq.\nIf $seq has less than two elements, an empty array is returned.\nFor string $seq returns all but the first characters in $seq.`,\n seeAlso: ['next', 'first', 'sequence.shift'],\n examples: [\n 'rest([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'rest([\"Albert\"])',\n 'rest([])',\n 'rest(\"Albert\")',\n 'rest(\"A\",)',\n 'rest(\"\")',\n ],\n },\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'sequence',\n returns: { type: ['sequence', 'null'] },\n args: { seq: { type: 'sequence' } },\n variants: [{ argumentNames: ['seq'] }],\n description: 'If $seq is an array, returns a new array with all but the first element from $seq. If $seq has less than two elements, `null` is returned. For string $seq returns all but the first characters in $seq. If length of string $seq is less than two, `null` is returned.',\n seeAlso: ['rest', 'first'],\n examples: [\n 'next([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'next([\"Albert\"])',\n 'next([])',\n 'next(\"Albert\")',\n 'next(\"A\",)',\n 'next(\"\")',\n ],\n },\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n return [...seq].reverse()\n }\n\n return seq.split('').reverse().join('')\n },\n arity: toFixedArity(1),\n docs: {\n category: 'sequence',\n returns: { type: ['sequence', 'null'] },\n args: { seq: { type: ['sequence', 'null'] } },\n variants: [{ argumentNames: ['seq'] }],\n description: 'If $seq is an array, creates a new array with the elements from $seq in reversed order. If $seq is a string, returns new reversed string.',\n seeAlso: ['sort'],\n examples: [\n 'reverse([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'reverse([])',\n 'reverse(\"Albert\")',\n 'reverse(null)',\n ],\n },\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n arity: toFixedArity(1),\n docs: {\n category: 'sequence',\n returns: { type: 'any' },\n args: { seq: { type: ['sequence', 'null'] } },\n variants: [{ argumentNames: ['seq'] }],\n description: 'Returns the second element of $seq. If $seq has less than two elements or is `null`, `null` is returned.',\n seeAlso: ['first', 'last', 'nth'],\n examples: [\n 'second([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'second([1])',\n 'second([])',\n 'second(null)',\n ],\n },\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2) {\n if (Array.isArray(seq)) {\n return seq.slice(from)\n }\n return seq.slice(from)\n }\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n if (Array.isArray(seq)) {\n return seq.slice(from, to)\n }\n return seq.slice(from, to)\n },\n arity: { min: 2, max: 3 },\n docs: {\n category: 'sequence',\n returns: { type: 'sequence' },\n args: {\n a: { type: 'sequence' },\n b: { type: 'integer' },\n seq: { type: 'sequence', rest: true },\n start: { type: 'integer', description: 'Defaults to `0`.' },\n stop: { type: 'integer', description: 'Defaults lenght of sequence + 1.' },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'start'] },\n { argumentNames: ['seq', 'start', 'stop'] },\n ],\n description: 'Returns a copy of a portion of $seq from index $start (inclusive) to $stop (exclusive).',\n seeAlso: ['sequence.take', 'sequence.drop', 'sequence.splice', 'nth'],\n examples: [\n '[1, 2, 3, 4, 5] slice 2',\n 'slice([1, 2, 3, 4, 5], 2, 4)',\n 'slice([1, 2, 3, 4, 5], 2)',\n ],\n },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertFunctionLike(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n arity: toFixedArity(2),\n docs: {\n category: 'sequence',\n returns: { type: 'any' },\n args: {\n a: { type: 'sequence' },\n b: { type: 'function' },\n seq: { type: ['sequence', 'null'] },\n fun: { type: 'function' },\n },\n variants: [{ argumentNames: ['seq', 'fun'] }],\n description: 'Returns the first element that passes the test implemented by $fun. I no element was found, `null` is returned.',\n seeAlso: ['sequence.position', 'collection.any?', 'find'],\n examples: [\n `\nsome(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nsome(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n `\nsome(\n [1, 2, 3, 4],\n -> $ > 10\n)`,\n `\nsome(\n [],\n -> $ > 10\n)`,\n `\nsome(\n null,\n -> $ > 10\n)`,\n ],\n },\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => compare(a, b, sourceCodeInfo))\n }\n else {\n assertFunctionLike(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n })\n }\n else {\n result.sort((a, b) => {\n assertFunctionLike(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n arity: { min: 1, max: 2 },\n docs: {\n category: 'sequence',\n returns: { type: 'any', rest: true },\n args: {\n a: { type: 'sequence' },\n b: { type: 'function' },\n seq: { type: 'sequence' },\n fun: { type: 'function' },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns a new sequence with the elements from $seq sorted according to $fun. If no $fun is supplied, builtin `compare` will be used.',\n seeAlso: ['sequence.sort-by', 'compare', 'reverse', 'vector.sort-indices'],\n examples: [\n '[3, 1, 2] sort (a, b) -> b - a',\n 'sort([3, 1, 2])',\n `\nsort(\n [3, 1, 2],\n (a, b) -> cond case a < b then -1 case a > b then 1 case true then -1 end\n)`,\n `\nsort(\n [3, 1, 2],\n (a, b) -> cond case a > b then -1 case a < b then 1 case true then -1 end\n)`,\n ],\n },\n },\n}\n","import { LitsError } from '../errors'\nimport type { Any } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isNumber } from './number'\n\nconst annotatedArrays = new WeakSet<unknown[]>()\nconst vectors = new WeakSet<unknown[]>()\nconst notVectors = new WeakSet<unknown[]>()\nconst matrices = new WeakSet<unknown[]>()\nconst notMatrices = new WeakSet<unknown[]>()\nconst grids = new WeakSet<unknown[]>()\nconst notGrids = new WeakSet<unknown[]>()\n\nexport function annotate<T>(value: T): T {\n if (!Array.isArray(value)) {\n return value\n }\n if (annotatedArrays.has(value)) {\n return value\n }\n isVector(value)\n if (!isMatrix(value)) {\n isGrid(value)\n }\n\n return value\n}\nexport function isVector(vector: unknown): vector is number[] {\n if (!Array.isArray(vector)) {\n return false\n }\n\n if (vectors.has(vector)) {\n return true\n }\n if (notVectors.has(vector)) {\n return false\n }\n\n if (vector.every(elem => isNumber(elem))) {\n annotatedArrays.add(vector)\n vectors.add(vector)\n return true\n }\n notVectors.add(vector)\n return false\n}\n\nexport function assertVector(vector: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts vector is number[] {\n if (!isVector(vector)) {\n throw new LitsError(`Expected a vector, but got ${vector}`, sourceCodeInfo)\n }\n}\n\nexport function is2dVector(vector: unknown): vector is [number, number] {\n if (!isVector(vector)) {\n return false\n }\n return vector.length === 2\n}\nexport function assert2dVector(vector: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts vector is [number, number] {\n if (!is2dVector(vector)) {\n throw new LitsError(`Expected a 2d vector, but got ${vector}`, sourceCodeInfo)\n }\n}\n\nexport function is3dVector(vector: unknown): vector is [number, number, number] {\n if (!isVector(vector)) {\n return false\n }\n return vector.length === 3\n}\nexport function assert3dVector(vector: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts vector is [number, number, number] {\n if (!is3dVector(vector)) {\n throw new LitsError(`Expected a 3d vector, but got ${vector}`, sourceCodeInfo)\n }\n}\n\nexport function assertNonEmptyVector(vector: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts vector is number[] {\n assertVector(vector, sourceCodeInfo)\n if (vector.length === 0) {\n throw new LitsError(`Expected a non empty vector, but got ${vector}`, sourceCodeInfo)\n }\n}\n\nexport function isGrid(grid: unknown): grid is unknown[][] {\n if (!Array.isArray(grid)) {\n return false\n }\n if (grids.has(grid)) {\n return true\n }\n if (notGrids.has(grid)) {\n return false\n }\n if (grid.length === 0) {\n notGrids.add(grid)\n return false\n }\n if (!Array.isArray(grid[0])) {\n notGrids.add(grid)\n return false\n }\n const nbrOfCols = grid[0].length\n for (const row of grid.slice(1)) {\n if (!Array.isArray(row)) {\n notGrids.add(grid)\n return false\n }\n if (row.length !== nbrOfCols) {\n notGrids.add(grid)\n return false\n }\n }\n annotatedArrays.add(grid)\n grids.add(grid)\n return true\n}\n\nexport function assertGrid(grid: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts grid is Any[][] {\n if (!isGrid(grid)) {\n throw new LitsError(`Expected a grid, but got ${grid}`, sourceCodeInfo)\n }\n}\n\nexport function isMatrix(matrix: unknown): matrix is number[][] {\n if (!Array.isArray(matrix)) {\n return false\n }\n if (matrices.has(matrix)) {\n return true\n }\n if (notMatrices.has(matrix)) {\n return false\n }\n if (matrix.length === 0) {\n notMatrices.add(matrix)\n return false\n }\n if (!Array.isArray(matrix[0]) || matrix[0].length === 0) {\n notMatrices.add(matrix)\n return false\n }\n const nbrOfCols = matrix[0].length\n for (const row of matrix) {\n if (!Array.isArray(row) || row.length !== nbrOfCols || row.some(cell => !isNumber(cell))) {\n notMatrices.add(matrix)\n return false\n }\n }\n annotatedArrays.add(matrix)\n grids.add(matrix)\n matrices.add(matrix)\n return true\n}\n\nexport function assertMatrix(matrix: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts matrix is number[][] {\n if (!isMatrix(matrix)) {\n throw new LitsError(`Expected a matrix, but got ${matrix}`, sourceCodeInfo)\n }\n}\n\nexport function assertSquareMatrix(matrix: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts matrix is number[][] {\n if (!isMatrix(matrix)) {\n throw new LitsError(`Expected a matrix, but got ${matrix}`, sourceCodeInfo)\n }\n if (matrix.length !== matrix[0]!.length) {\n throw new LitsError(`Expected square matrix, but got ${matrix.length} and ${matrix[0]!.length}`, sourceCodeInfo)\n }\n}\n\nexport function isSquareMatrix(matrix: unknown): matrix is number[][] {\n if (!isMatrix(matrix)) {\n return false\n }\n if (matrix.length !== matrix[0]!.length) {\n return false\n }\n return true\n}\n","import { LitsError } from '../../errors'\nimport type { SourceCodeInfo } from '../../tokenizer/token'\nimport { assertNonEmptyVector, isMatrix, isVector } from '../../typeGuards/annotatedArrays'\nimport { assertNumber, isNumber } from '../../typeGuards/number'\nimport { toFixedArity } from '../../utils/arity'\nimport type { BuiltinNormalExpressions } from '../interface'\n\ntype NumberVectorOrMatrix = number | number[] | number[][]\n\nfunction getNumberVectorOrMatrixOperation(\n params: unknown[],\n sourceCodeInfo: SourceCodeInfo | undefined,\n):\n | ['number', number[]]\n | ['vector', number[][]]\n | ['matrix', number[][][]] {\n let hasVector: boolean = false\n let hasMatrix: boolean = false\n for (const param of params) {\n if (isVector(param)) {\n hasVector = true\n }\n else if (isMatrix(param)) {\n hasMatrix = true\n }\n else if (!isNumber(param)) {\n throw new LitsError(`Invalid parameter type: ${typeof param}`, sourceCodeInfo)\n }\n }\n if (hasMatrix) {\n if (hasVector) {\n throw new LitsError('Cannot mix vector and matrix types', sourceCodeInfo)\n }\n let rows: number | null = null\n let cold: number | null = null\n for (const param of params) {\n if (isMatrix(param)) {\n if (rows === null) {\n rows = param.length\n cold = param[0]!.length\n }\n else {\n if (param.length !== rows || param[0]!.length !== cold) {\n throw new LitsError('Matrix dimensions do not match', sourceCodeInfo)\n }\n }\n }\n }\n const matrices = params.map((param) => {\n if (isMatrix(param)) {\n return param\n }\n return Array.from({ length: rows as number }, () => Array.from({ length: cold as number }, () => param as number))\n })\n return ['matrix', matrices]\n }\n if (hasVector) {\n let length: number | null = null\n for (const param of params) {\n if (isVector(param)) {\n if (length === null) {\n length = param.length\n }\n else {\n if (param.length !== length) {\n throw new LitsError('Vector lengths do not match', sourceCodeInfo)\n }\n }\n }\n }\n const vectors = params.map((param) => {\n if (isVector(param)) {\n return param\n }\n return Array.from({ length: length as number }, () => param as number)\n })\n\n return ['vector', vectors]\n }\n return ['number', params as number[]]\n}\n\nfunction unaryMathOp(\n fn: (val: number) => number,\n): (params: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) => NumberVectorOrMatrix {\n return (params, sourceCodeInfo) => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return fn(operands[0]!)\n }\n else if (operation === 'vector') {\n return operands[0]!.map(val => fn(val))\n }\n else {\n return operands[0]!.map(row => row.map(val => fn(val)))\n }\n }\n}\n\nfunction binaryMathOp(\n fn: (a: number, b: number) => number,\n): (params: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) => NumberVectorOrMatrix {\n return (params, sourceCodeInfo) => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return fn(operands[0]!, operands[1]!)\n }\n else if (operation === 'vector') {\n return operands[0]!.map((val, i) => fn(val, operands[1]![i]!))\n }\n else {\n return operands[0]!.map((row, i) => row.map((val, j) => fn(val, operands[1]![i]![j]!)))\n }\n }\n}\n\nfunction reduceMathOp(\n identity: number,\n fn: (a: number, b: number) => number,\n): (params: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) => NumberVectorOrMatrix {\n return (params, sourceCodeInfo) => {\n if (params.length === 0)\n return identity\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return operands.reduce((a, b) => fn(a, b), identity)\n }\n else if (operation === 'vector') {\n const [first, ...rest] = operands\n return rest.reduce((acc, v) => acc.map((val, i) => fn(val, v[i]!)), first!)\n }\n else {\n const [first, ...rest] = operands\n return rest.reduce((acc, m) => acc.map((row, i) => row.map((val, j) => fn(val, m[i]![j]!))), first!)\n }\n }\n}\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: unaryMathOp(val => val + 1),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: 'number' },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `inc` function increments its argument by 1, working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it increases each element by 1 while preserving the original structure.',\n seeAlso: ['dec', '+'],\n examples: [\n 'inc(0)',\n 'inc(1)',\n 'inc(100.1)',\n 'inc([1, 2, 3])',\n 'inc([[1, 2], [3, 4]])',\n ],\n },\n },\n 'dec': {\n evaluate: unaryMathOp(val => val - 1),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `dec` function decrements its argument by 1, working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it decreases each element by 1 while preserving the original structure.',\n seeAlso: ['inc', '-'],\n examples: [\n 'dec(0)',\n 'dec(1)',\n 'dec(100.1)',\n 'dec([1, 2, 3])',\n 'dec([[1, 2], [3, 4]])',\n ],\n },\n },\n '+': {\n evaluate: reduceMathOp(0, (a, b) => a + b),\n arity: {},\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n xs: { type: ['number', 'vector', 'matrix'], rest: true },\n },\n variants: [{ argumentNames: ['xs'] }],\n description: 'The `+` function performs addition of numbers and element-wise addition of `vectors` and `matrices` of compatible dimensions, returning the same type as its inputs. When used with mixed types, it adds the scalar to each element of the collection.',\n seeAlso: ['-', '*', '/', 'inc'],\n examples: [\n '1 + 2',\n '1 + 20 + 30',\n '+(1, 2, 3, 4)',\n '+()',\n '+(1)',\n '[1, 2, 3] + 2',\n '[1, 2, 3] + [4, 5, 6]',\n '[[1, 2, 3], [4, 5, 6]] + [[7, 8, 9], [10, 11, 12]]',\n '[[1, 2, 3], [4, 5, 6]] + 2',\n ],\n },\n },\n '*': {\n evaluate: reduceMathOp(1, (a, b) => a * b),\n arity: {},\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n xs: { type: ['number', 'vector', 'matrix'], rest: true },\n },\n variants: [{ argumentNames: ['xs'] }],\n description: 'The `*` function performs multiplication of `numbers` and element-wise multiplication of `vectors` and `matrices` of compatible dimensions, returning the same type as its inputs. When used with mixed types, it multiplies each element of the collection by the scalar.',\n seeAlso: ['/', '+', '-', '^'],\n examples: [\n '6 * 7',\n '-1 * 4',\n '*(4, 7)',\n '*(1, 2, 3, 4, 5)',\n '*()',\n '*(8)',\n '[1, 2, 3] * 2',\n '[1, 2, 3] * [4, 5, 6]',\n '[[1, 2, 3], [4, 5, 6]] * [[7, 8, 9], [10, 11, 12]]',\n '[[1, 2, 3], [4, 5, 6]] * 2',\n ],\n },\n },\n '/': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n if (params.length === 0) {\n return 1\n }\n\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n const [first, ...rest] = operands\n if (rest.length === 0) {\n return 1 / first!\n }\n return rest.reduce((result, param) => {\n return result / param\n }, first!)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const restVectors = operands.slice(1)\n return restVectors.reduce((acc, vector) => acc.map((val, i) => val / vector[i]!), firstVector)\n }\n else {\n const firstMatrix = operands[0]!\n const restMatrices = operands.slice(1)\n return restMatrices.reduce((acc, matrix) => acc.map((row, i) => row.map((val, j) => val / matrix[i]![j]!)), firstMatrix)\n }\n },\n arity: {},\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n xs: { type: ['number', 'vector', 'matrix'], rest: true },\n },\n variants: [{ argumentNames: ['xs'] }],\n description: 'The `/` function performs division of `numbers` and element-wise division of `vectors` and `matrices` of compatible dimensions, returning the same type as its inputs. When used with mixed types, it divides each element of the collection by the scalar.',\n seeAlso: ['*', '+', '-', 'quot', 'mod', '%'],\n examples: [\n '12 / 100',\n '-1 / 4',\n '/(7, 4)',\n '/(1, 2, 4, 8)',\n '/()',\n '/(8)',\n '[1, 2, 3] / 2',\n '[1, 2, 3] / [4, 5, 6]',\n '[[1, 2, 3], [4, 5, 6]] / [[7, 8, 9], [10, 11, 12]]',\n '[[1, 2, 3], [4, 5, 6]] / 2',\n ],\n },\n },\n '-': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n if (params.length === 0) {\n return 0\n }\n\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n const [first, ...rest] = operands\n if (rest.length === 0)\n return -first!\n\n return rest.reduce((result, param) => {\n return result - param\n }, first!)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const restVectors = operands.slice(1)\n return restVectors.reduce((acc, vector) => acc.map((val, i) => val - vector[i]!), firstVector)\n }\n else {\n const firstMatrix = operands[0]!\n const restMatrices = operands.slice(1)\n return restMatrices.reduce((acc, matrix) => acc.map((row, i) => row.map((val, j) => val - matrix[i]![j]!)), firstMatrix)\n }\n },\n arity: {},\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n xs: { type: ['number', 'vector', 'matrix'], rest: true },\n },\n variants: [{ argumentNames: ['xs'] }],\n description: 'Computes difference between first value and sum of the rest. When called with only one argument, it does negation.',\n seeAlso: ['+', '*', '/', 'dec', 'abs'],\n examples: [\n '50 - 8',\n '1 - 1 - 1',\n '-()',\n '-(4, 2)',\n '-(4, 3, 2, 1,)',\n '[1, 2, 3] - 2',\n '[1, 2, 3] - [4, 5, 6]',\n '[[1, 2, 3], [4, 5, 6]] - [[7, 8, 9], [10, 11, 12]]',\n '[[1, 2, 3], [4, 5, 6]] - 2',\n ],\n },\n },\n 'quot': {\n evaluate: binaryMathOp((a, b) => Math.trunc(a / b)),\n arity: toFixedArity(2),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'The `quot` function performs integer division truncated toward zero, working on `numbers` and element-wise on `vectors` and `matrices` of compatible dimensions. When used with mixed types, it applies integer division between each element of the collection and the scalar.',\n seeAlso: ['mod', '%', '/', 'trunc'],\n examples: [\n 'quot(5, 3)',\n 'quot(5.2, 3.1)',\n 'quot(-5, 3)',\n '5 quot -3',\n '-5 quot -3',\n 'quot(5, 0)',\n 'quot(0, 5)',\n '[1, 2, 3] quot 2',\n '2 quot [1, 2, 3]',\n 'quot([1, 2, 3], [4, 5, 6])',\n '[[1, 2, 3], [4, 5, 6]] quot [[7, 8, 9], [10, 11, 12]]',\n 'quot([[1, 2, 3], [4, 5, 6]], 2)',\n '[[1, 2, 3], [4, 5, 6]] quot [[7, 8, 9], [10, 11, 12]]',\n ],\n },\n },\n 'mod': {\n evaluate: binaryMathOp((a, b) => a - b * Math.floor(a / b)),\n arity: toFixedArity(2),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'The `mod` function computes the modulo of division with the same sign as the divisor, working on `numbers` and element-wise on `vectors` and `matrices` of compatible dimensions. When used with mixed types, it applies the modulo operation between each element of the collection and the scalar.',\n seeAlso: ['%', 'quot', '/'],\n examples: [\n 'mod(5, 3)',\n 'mod(5.2, 3.1)',\n 'mod(-5, 3)',\n '5 mod -3',\n '-5 mod -3',\n '[1, 2, 3] mod 2',\n '2 mod [1, 2, 3]',\n 'mod([1, 2, 3], [4, 5, 6])',\n '[[1, 2, 3], [4, 5, 6]] mod [[7, 8, 9], [10, 11, 12]]',\n 'mod([[1, 2, 3], [4, 5, 6]], 2)',\n ],\n },\n },\n '%': {\n evaluate: binaryMathOp((a, b) => a % b),\n arity: toFixedArity(2),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'The `%` function computes the remainder of division with the same sign as the dividend, working on `numbers` and element-wise on `vectors` and `matrices` of compatible dimensions. When used with mixed types, it applies the remainder operation between each element of the collection and the scalar.',\n seeAlso: ['mod', 'quot', '/'],\n examples: [\n '5 % 3',\n '5.2 % 3.1',\n '-5 % 3',\n '%(5, -3)',\n '%(-5, -3)',\n '[1, 2, 3] % 2',\n '2 % [1, 2, 3]',\n '%([1, 2, 3], [4, 5, 6])',\n '[[1, 2, 3], [4, 5, 6]] % [[7, 8, 9], [10, 11, 12]]',\n '%([[1, 2, 3], [4, 5, 6]], 2)',\n ],\n },\n },\n 'sqrt': {\n evaluate: unaryMathOp(val => Math.sqrt(val)),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `sqrt` function calculates the square root of `numbers` and computes element-wise square roots of `vectors` and `matrices`. When applied to collections, it returns the square root of each element while preserving the original structure.',\n seeAlso: ['cbrt', '^'],\n examples: [\n 'sqrt(0)',\n 'sqrt(9)',\n 'sqrt(2)',\n 'sqrt(0)',\n 'sqrt(9)',\n 'sqrt(2)',\n 'sqrt([1, 4, 9])',\n 'sqrt([[1, 4], [9, 16]])',\n ],\n },\n },\n 'cbrt': {\n evaluate: unaryMathOp(val => Math.cbrt(val)),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `cbrt` function calculates the cube root of `numbers` and computes element-wise cube roots of `vectors` and `matrices`. When applied to collections, it returns the cube root of each element while preserving the original structure.',\n seeAlso: ['sqrt', '^'],\n examples: [\n 'cbrt(0)',\n 'cbrt(27)',\n 'cbrt(2)',\n 'cbrt(1)',\n 'cbrt(0)',\n 'cbrt(27)',\n 'cbrt(2)',\n 'cbrt(1)',\n 'cbrt([1, 8, 27])',\n 'cbrt([[1, 8], [27, 64]])',\n ],\n },\n },\n '^': {\n evaluate: binaryMathOp((a, b) => a ** b),\n arity: toFixedArity(2),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'The ^ function computes exponentiation, raising the first argument to the power of the second, working on `numbers` and element-wise on `vectors` and `matrices` of compatible dimensions. When used with mixed types, it applies the power operation between each element of the collection and the scalar.',\n seeAlso: ['sqrt', 'cbrt', '*', 'math.ln'],\n examples: [\n '2 ^ 3',\n '2 ^ 0',\n '2 ^ -3',\n '^(-2, 3)',\n '^(-2, -3)',\n '[1, 2, 3] ^ 2',\n '2 ^ [1, 2, 3]',\n '^([1, 2, 3], [4, 5, 6])',\n '[[1, 2, 3], [4, 5, 6]] ^ [[7, 8, 9], [10, 11, 12]]',\n '^([[1, 2, 3], [4, 5, 6]], 2)',\n ],\n },\n },\n 'round': {\n evaluate: ([value, decimals], sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation([value], sourceCodeInfo)\n if (operation === 'number') {\n if (decimals === undefined || decimals === 0) {\n return Math.round(operands[0]!)\n }\n else {\n assertNumber(decimals, sourceCodeInfo, { integer: true, positive: true })\n const factor = 10 ** decimals\n return Math.round(operands[0]! * factor) / factor\n }\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n if (decimals === undefined || decimals === 0) {\n return vector.map(val => Math.round(val))\n }\n else {\n assertNumber(decimals, sourceCodeInfo, { integer: true, positive: true })\n const factor = 10 ** decimals\n return vector.map(val => Math.round(val * factor) / factor)\n }\n }\n else {\n const matrix = operands[0]!\n if (decimals === undefined || decimals === 0) {\n return matrix.map(row => row.map(val => Math.round(val)))\n }\n else {\n assertNumber(decimals, sourceCodeInfo, { integer: true, positive: true })\n const factor = 10 ** decimals\n return matrix.map(row => row.map(val => Math.round(val * factor) / factor))\n }\n }\n },\n arity: { min: 1, max: 2 },\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n a: { type: ['number', 'vector', 'matrix'] },\n b: { type: 'integer' },\n },\n variants: [\n { argumentNames: ['a'] },\n { argumentNames: ['a', 'b'] },\n ],\n description: 'The `round` function rounds a `number` to the nearest `integer` or to a specified number of `decimal` places, working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it rounds each element while preserving the original structure.',\n seeAlso: ['floor', 'ceil', 'trunc'],\n examples: [\n 'round(2)',\n 'round(2.49)',\n 'round(2.5)',\n 'round(-2.49)',\n 'round(-2.5)',\n 'round(-2.501)',\n 'round(1.23456789, 4)',\n '1.123456789 round 2',\n 'round([1.23456789, 2.3456789], 1)',\n '[1.23456789, 2.3456789] round 4',\n '[[1.23456789, 2.3456789], [3.456789, 4.56789]] round 4',\n 'round([[1.23456789, 2.3456789], [3.456789, 4.56789]], 2)',\n ],\n },\n },\n 'trunc': {\n evaluate: unaryMathOp(val => Math.trunc(val)),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['integer', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `trunc` function truncates `numbers` toward zero (removing decimal portions without rounding), working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it truncates each element while preserving the original structure.',\n seeAlso: ['round', 'floor', 'ceil', 'quot'],\n examples: [\n 'trunc(2)',\n 'trunc(2.49)',\n 'trunc(2.5)',\n 'trunc(-2.49)',\n 'trunc(-2.5)',\n 'trunc(-2.501)',\n 'trunc([1.23456789, 2.3456789])',\n 'trunc([[1.23456789, 2.3456789], [3.456789, 4.56789]])',\n ],\n },\n },\n 'floor': {\n evaluate: unaryMathOp(val => Math.floor(val)),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['integer', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `floor` function returns the largest `integer` less than or equal to a `number`, working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it returns the floor of each element while preserving the original structure.',\n seeAlso: ['ceil', 'round', 'trunc'],\n examples: [\n 'floor(2)',\n 'floor(2.49)',\n 'floor(2.5)',\n 'floor(-2.49)',\n 'floor(-2.5)',\n 'floor(-2.501)',\n 'floor([1.23456789, 2.3456789])',\n 'floor([[1.23456789, 2.3456789], [3.456789, 4.56789]])',\n ],\n },\n },\n 'ceil': {\n evaluate: unaryMathOp(val => Math.ceil(val)),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['integer', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `ceil` function returns the smallest `integer` greater than or equal to a `number`, working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it returns the ceiling of each element while preserving the original structure.',\n seeAlso: ['floor', 'round', 'trunc'],\n examples: [\n 'ceil(2)',\n 'ceil(2.49)',\n 'ceil(2.5)',\n 'ceil(-2.49)',\n 'ceil(-2.5)',\n 'ceil(-2.501)',\n 'ceil([1.23456789, 2.3456789])',\n 'ceil([[1.23456789, 2.3456789], [3.456789, 4.56789]])',\n ],\n },\n },\n 'min': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 1 && isVector(params[0])) {\n const vector = params[0]\n assertNonEmptyVector(vector, sourceCodeInfo)\n return vector.reduce((m, val) => Math.min(m, val), Infinity)\n }\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n return rest.reduce((m: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(m, value)\n }, first)\n },\n arity: { min: 1 },\n docs: {\n category: 'math',\n returns: { type: 'number' },\n args: {\n a: { type: 'number' },\n b: { type: 'number' },\n xs: { type: 'number', rest: true },\n vector: { type: 'vector' },\n },\n variants: [\n { argumentNames: ['xs'] },\n { argumentNames: ['vector'] },\n ],\n description: 'Returns the smallest value. Accepts either multiple numbers or a single vector of numbers.',\n seeAlso: ['max', 'vector.span', 'vector.min-index'],\n examples: [\n '2 min 3',\n 'min(2, 0, 1)',\n 'min(2, -1, 1)',\n 'min([2, 0, -1])',\n '12 min 14',\n ],\n },\n },\n 'max': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 1 && isVector(params[0])) {\n const vector = params[0]\n assertNonEmptyVector(vector, sourceCodeInfo)\n return vector.reduce((m, val) => Math.max(m, val), -Infinity)\n }\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n return rest.reduce((m: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(m, value)\n }, first)\n },\n arity: { min: 1 },\n docs: {\n category: 'math',\n returns: { type: 'number' },\n args: {\n a: { type: 'number' },\n b: { type: 'number' },\n xs: { type: 'number', rest: true },\n vector: { type: 'vector' },\n },\n variants: [\n { argumentNames: ['xs'] },\n { argumentNames: ['vector'] },\n ],\n description: 'Returns the largest value. Accepts either multiple numbers or a single vector of numbers.',\n seeAlso: ['min', 'vector.span', 'vector.max-index'],\n examples: [\n '2 max 3',\n 'max(2, 0, 1)',\n 'max(2, -1, 1)',\n 'max([2, 0, -1])',\n '4 max 2',\n ],\n },\n },\n 'abs': {\n evaluate: unaryMathOp(val => Math.abs(val)),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The abs function returns the absolute value (magnitude) of a `number`, working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it returns the absolute value of each element while preserving the original structure.',\n seeAlso: ['sign', '-'],\n examples: [\n 'abs(-2.3)',\n 'abs(0)',\n 'abs(2.5)',\n 'abs([1, -2, 3])',\n 'abs([[1, -2], [3, -4]])',\n ],\n },\n },\n 'sign': {\n evaluate: unaryMathOp(val => Math.sign(val)),\n arity: toFixedArity(1),\n docs: {\n category: 'math',\n returns: { type: ['number', 'vector', 'matrix'] },\n args: {\n x: { type: ['number', 'vector', 'matrix'] },\n },\n variants: [{ argumentNames: ['x'] }],\n description: 'The `sign` function returns the `sign` of a `number` (-1 for negative, 0 for zero, 1 for positive), working on `numbers` and element-wise on `vectors` and `matrices`. When applied to collections, it returns the sign of each element while preserving the original structure.',\n seeAlso: ['abs'],\n examples: [\n 'sign(-2.3)',\n 'sign(-0)',\n 'sign(0)',\n 'sign(12312)',\n 'sign([1, -2, 3])',\n 'sign([[1, -2], [3, -4]])',\n ],\n },\n },\n}\n","import { LitsError } from '../../errors'\nimport type { Any } from '../../interface'\nimport type { ModuleFunction } from '../../parser/types'\nimport type { SourceCodeInfo } from '../../tokenizer/token'\nimport { asAny, assertAny } from '../../typeGuards/lits'\nimport { assertNumber } from '../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../typeGuards/string'\nimport { compare, deepEqual } from '../../utils'\nimport { toFixedArity } from '../../utils/arity'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../interface'\n\nfunction isEqual([first, ...rest]: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) {\n const firstAny = asAny(first, sourceCodeInfo)\n for (const param of rest) {\n if (!deepEqual(firstAny, asAny(param, sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n}\n\nfunction isIdentical([first, ...rest]: unknown[]) {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n return true\n}\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '==': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return isEqual(params, sourceCodeInfo)\n },\n arity: { min: 1 },\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: {\n a: { type: 'any' },\n b: { type: 'any' },\n x: { type: 'any' },\n ys: { type: 'any', rest: true },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if all `values` are structaul equal to each other, otherwise result is `false`.',\n seeAlso: ['≠', 'identical?'],\n examples: [\n '1 == 1',\n '[1, 2] == [1, 2]',\n `\n{\n a: 1,\n b: 2,\n} == {\n b: 2,\n a: 1,\n}`,\n '==(1, 1)',\n '==(1.01, 1)',\n '==(\"1\", 1)',\n '==(\"2\", \"2\", \"2\", \"2\")',\n '==(2, 2, 1, 2)',\n '==([1, 2], [1, 2])',\n '==({ a: 1, b: 2 }, { b: 2, a: 1 })',\n ],\n },\n },\n '≠': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return !isEqual(params, sourceCodeInfo)\n },\n arity: { min: 1 },\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: {\n a: { type: 'any' },\n b: { type: 'any' },\n x: { type: 'any' },\n ys: { type: 'any', rest: true },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if all `values` are not equal to each other, otherwise result is `false`. `(≠ a b c)` is same as `(! (== a b c))`.',\n seeAlso: ['==', 'identical?'],\n examples: [\n '1 ≠ 2',\n '3 ≠ 3',\n '≠(3)',\n '≠(3, 3, 2)',\n '≠(\"3\", \"2\", \"1\", \"0\",)',\n '≠(0, -0)',\n ],\n },\n },\n 'identical?': {\n evaluate: (params): boolean => {\n return isIdentical(params)\n },\n arity: { min: 1 },\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: {\n a: { type: 'any' },\n b: { type: 'any' },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Returns true if $a and $b are referential equal.',\n seeAlso: ['==', '≠'],\n examples: [\n 'identical?({ a: 10, b: 20 }, { b: 20, a: 10 })',\n 'identical?([1, true, null], [1, true, null])',\n 'identical?(0.3, 0.1 + 0.2)',\n ],\n },\n },\n '>': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) <= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n arity: { min: 1 },\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: {\n a: { type: ['number', 'string'] },\n b: { type: ['number', 'string'] },\n x: { type: ['number', 'string'] },\n ys: { type: ['number', 'string'], rest: true },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in decreasing order, `false` otherwise.',\n seeAlso: ['<', '>=', '<=', 'compare'],\n examples: [\n '>(1, 0)',\n '>(1.01, 1)',\n '>(1, 1)',\n '>(4, 3, 2, 1)',\n '>(3, 2, 2, 1)',\n ],\n },\n },\n\n '<': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) >= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n arity: { min: 1 },\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: {\n a: { type: ['number', 'string'] },\n b: { type: ['number', 'string'] },\n x: { type: ['number', 'string'] },\n ys: { type: ['number', 'string'], rest: true },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in increasing order, `false` otherwise.',\n seeAlso: ['>', '>=', '<=', 'compare'],\n examples: [\n '<(0, 1)',\n '<(1, 1.01)',\n '<(1, 1)',\n '<(1, 2, 2, 3)',\n '<(\"a\", \"b\")',\n ],\n },\n },\n '>=': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) < 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n arity: { min: 1 },\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: {\n a: { type: ['number', 'string'] },\n b: { type: ['number', 'string'] },\n x: { type: ['number', 'string'] },\n ys: { type: ['number', 'string'], rest: true },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in non increasing order, `false` otherwise.',\n seeAlso: ['>', '<', '<=', 'compare'],\n examples: [\n '1 >= 1',\n '0 >= 1',\n '>=(1, 0)',\n '>=(1.01, 1)',\n '>=(1, 1)',\n '>=(4, 3, 2, 1)',\n '>=(3, 2, 2, 1)',\n ],\n },\n },\n '<=': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) > 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n arity: { min: 1 },\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: {\n a: { type: ['number', 'string'] },\n b: { type: ['number', 'string'] },\n x: { type: ['number', 'string'] },\n ys: { type: ['number', 'string'], rest: true },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in non decreasing order, `false` otherwise.',\n seeAlso: ['>', '<', '>=', 'compare'],\n examples: [\n '1 <= 1',\n '<=(0, 1)',\n '<=(1, 1.01)',\n '<=(1, 1)',\n '<=(1, 2, 3, 4)',\n '<=(1, 2, 2, 3)',\n ],\n },\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n arity: toFixedArity(1),\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Computes logical negation. Note that any other $x than `false`, `0`, `null` and `\\'\\'` is truthy.',\n seeAlso: ['boolean'],\n examples: [\n '!(3)',\n '!(true)',\n '!(\"A string\")',\n '!(0)',\n '!(false)',\n '!(null)',\n '!(\"\")',\n ],\n },\n },\n 'epoch->iso-date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n arity: toFixedArity(1),\n docs: {\n category: 'misc',\n returns: { type: 'string' },\n args: { ms: { type: 'number' } },\n variants: [{ argumentNames: ['ms'] }],\n description: 'Returns IOS date time string from `ms` (milliseconds elapsed since the UNIX epoch).',\n seeAlso: ['iso-date->epoch'],\n examples: [\n 'epoch->iso-date(1649756230899)',\n 'epoch->iso-date(0)',\n ],\n },\n },\n 'iso-date->epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n arity: toFixedArity(1),\n docs: {\n category: 'misc',\n returns: { type: 'number' },\n args: { iso: { type: 'string' } },\n variants: [{ argumentNames: ['iso'] }],\n description: 'Returns milliseconds elapsed since the UNIX epoch to `iso`.',\n seeAlso: ['epoch->iso-date'],\n examples: [\n 'iso-date->epoch(\"2022-04-12T09:37:10.899Z\")',\n 'iso-date->epoch(\"1980-01-01\")',\n ],\n },\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n arity: {},\n docs: {\n category: 'misc',\n returns: { type: 'any' },\n args: { values: { type: 'any', rest: true } },\n variants: [{ argumentNames: ['values'] }],\n description: 'It logs the $values and then returns the last argument. If called with no arguments `null` is returned.',\n examples: [\n 'write!(\"A string\")',\n 'write!(100, \"items\")',\n 'write!(object(\"a\", 10))',\n 'write!([\"a\", \"b\", \"c\"])',\n 'write!(#\"^start\")',\n 'write!(null, true, false)',\n ],\n hideOperatorForm: true,\n },\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n arity: toFixedArity(1),\n docs: {\n category: 'misc',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Coerces $x to boolean.',\n seeAlso: ['!', 'boolean?', 'true?', 'false?'],\n examples: [\n 'boolean(0)',\n 'boolean(1)',\n 'boolean(null)',\n 'boolean(\"Albert\")',\n ],\n },\n },\n 'compare': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n },\n arity: toFixedArity(2),\n docs: {\n category: 'misc',\n returns: { type: 'number' },\n args: {\n a: { type: ['number', 'string'] },\n b: { type: ['number', 'string'] },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Compares two values. Returns `-1` if $a < $b, `1` if $a > $b and `0` if $a and $b have the same sort order.',\n seeAlso: ['<', '>', '<=', '>=', 'sort', 'sequence.sort-by'],\n examples: [\n 'compare(0, 1)',\n 'compare(0, 0)',\n 'compare(1, 0)',\n 'compare(\"Albert\", \"Mojir\")',\n ],\n },\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'misc',\n returns: { type: 'any' },\n args: { x: { type: 'string' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `JSON.parse(`$x`)`.',\n seeAlso: ['json-stringify'],\n examples: [\n 'json-parse(\"[1, 2, 3]\")',\n ],\n },\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n arity: { min: 1, max: 2 },\n docs: {\n category: 'misc',\n returns: { type: 'string' },\n args: {\n x: { type: 'any' },\n indent: { type: 'integer', description: 'Number of spaces to use for indentation.' },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'indent'] },\n ],\n description: 'Returns `JSON.stringify(`$x`)`. If second argument is provided, returns `JSON.stringify(`$x`, null, `$indent`)`.',\n seeAlso: ['json-parse'],\n examples: [\n 'json-stringify([1, 2, 3])',\n 'json-stringify({ a: { b: 10 }}, 2)',\n ],\n hideOperatorForm: true,\n },\n },\n 'import': {\n evaluate: ([importPath], sourceCodeInfo, contextStack): ModuleFunction | Record<string, ModuleFunction> => {\n assertString(importPath, sourceCodeInfo)\n\n // Check if importing a specific function (e.g., \"grid.row\")\n const dotIndex = importPath.indexOf('.')\n if (dotIndex !== -1) {\n const moduleName = importPath.substring(0, dotIndex)\n const functionName = importPath.substring(dotIndex + 1)\n\n const module = contextStack.getModule(moduleName)\n if (!module) {\n throw new LitsError(`Unknown module: '${moduleName}'`, sourceCodeInfo)\n }\n\n const expression = module.functions[functionName]\n\n if (!expression) {\n throw new LitsError(`Function '${functionName}' not found in module '${moduleName}'`, sourceCodeInfo)\n }\n\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Module',\n moduleName,\n functionName,\n arity: expression.arity,\n }\n }\n\n // Import entire module\n const moduleName = importPath\n const module = contextStack.getModule(moduleName)\n if (!module) {\n throw new LitsError(`Unknown module: '${moduleName}'`, sourceCodeInfo)\n }\n\n // Create an object where each key is a function name and value is a ModuleFunction\n const result: Record<string, ModuleFunction> = {}\n for (const [functionName, expression] of Object.entries(module.functions)) {\n result[functionName] = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Module',\n moduleName,\n functionName,\n arity: expression.arity,\n }\n }\n return result\n },\n arity: toFixedArity(1),\n docs: {\n category: 'misc',\n returns: { type: 'any' },\n args: {\n path: {\n type: 'string',\n description: 'The module path to import. Can be a module name (e.g., \"vector\", \"grid\") or a fully qualified function name (e.g., \"vector.mean\", \"grid.row\").',\n },\n },\n variants: [{ argumentNames: ['path'] }],\n description: 'Imports module functions. Use a module name (e.g., \"vector\") to import all functions as an object, or a fully qualified name (e.g., \"vector.mean\") to import a single function directly.',\n examples: [\n 'let v = import(\"vector\"); v.mean([1, 2, 3, 4])',\n 'let v-sum = import(\"vector.sum\"); v-sum([1, 2, 3])',\n 'let g = import(\"grid\"); g.row([[1, 2], [3, 4]], 0)',\n ],\n },\n },\n}\n","import type { Any, Arr, Obj } from '../../interface'\nimport { assertArray, assertStringArray } from '../../typeGuards/array'\nimport { assertFunctionLike, assertObj } from '../../typeGuards/lits'\nimport { asString, assertString } from '../../typeGuards/string'\nimport { collHasKey, toAny } from '../../utils'\nimport { toFixedArity } from '../../utils/arity'\nimport type { BuiltinNormalExpressions } from '../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'object',\n returns: { type: 'any', array: true },\n args: { obj: { type: 'object' } },\n variants: [{ argumentNames: ['obj'] }],\n description: 'Returns array of all keys in $obj.',\n seeAlso: ['vals', 'entries', 'zipmap', 'select-keys'],\n examples: [\n 'keys({})',\n 'keys({ x: 10, y: true, z: \"A string\" })',\n 'keys(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'object',\n returns: { type: 'any', array: true },\n args: { obj: { type: 'object' } },\n variants: [{ argumentNames: ['obj'] }],\n description: 'Returns array of all values in $obj.',\n seeAlso: ['keys', 'entries', 'zipmap'],\n examples: [\n 'vals({})',\n 'vals({ x: 10, y: true, z: \"A string\" })',\n 'vals(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'object',\n returns: { type: 'array' },\n args: { obj: { type: 'object' } },\n variants: [{ argumentNames: ['obj'] }],\n description: 'Returns nested array of all key - value pairs in $obj.',\n seeAlso: ['keys', 'vals', 'zipmap', 'find'],\n examples: [\n 'entries({})',\n 'entries({ x: 10, y: true, z: \"A string\" })',\n 'entries(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n arity: toFixedArity(2),\n docs: {\n category: 'object',\n returns: { type: ['array', 'null'] },\n args: {\n a: { type: 'object' },\n b: { type: 'string' },\n obj: { type: 'object' },\n key: { type: 'string' },\n },\n variants: [{ argumentNames: ['obj', 'key'] }],\n description: 'Returns entry (key-value pair) for $key, or `null` if $key not present in $obj.',\n seeAlso: ['get', 'contains?', 'entries', 'sequence.position', 'some'],\n examples: [\n '{ a: 1, \"b\": 2 } find \"a\"',\n 'find(object(\"a\", 1, \"b\", 2), \"b\")',\n 'find(object(\"a\", 1, \"b\", 2), \"c\")',\n ],\n },\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n arity: toFixedArity(2),\n docs: {\n category: 'object',\n returns: { type: 'object' },\n args: {\n a: { type: 'object' },\n b: { type: 'string' },\n obj: { type: 'object' },\n key: { type: 'string' },\n },\n variants: [{ argumentNames: ['obj', 'key'] }],\n description: 'Return shallow copy of $obj with $key deleted.',\n seeAlso: ['assoc', 'select-keys'],\n examples: [\n '{ x: 10, y: 20 } dissoc \"y\"',\n 'dissoc({ x: 10, y: 20 }, \"x\")',\n 'dissoc({ x: 10 }, \"y\")',\n `\nlet o = { a: 5 };\ndissoc(o, \"a\");\no`,\n ],\n },\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n arity: { min: 0 },\n docs: {\n category: 'object',\n returns: { type: 'object' },\n args: {\n a: { type: 'object' },\n b: { type: 'object' },\n objs: { type: 'object', rest: true },\n },\n variants: [{ argumentNames: ['objs'] }],\n description: `Returns a new object created by merging together all arguments.\n\nIf two keys appears in more than one object the value from the last object is used.\nIf no arguments are provided \\`null\\` is returned.`,\n seeAlso: ['merge-with', 'assoc'],\n examples: [\n '{ x: 10 } merge { y: 20 }',\n 'merge(object(\"x\", 10), object(\"y\", 20))',\n 'merge(object(\"x\", 10), object(\"x\", 15, \"y\", 20))',\n ],\n },\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n arity: { min: 2 },\n docs: {\n category: 'object',\n returns: { type: 'object' },\n args: {\n objs: { type: 'object', rest: true },\n fun: { type: 'function' },\n },\n variants: [{ argumentNames: ['objs', 'fun'] }],\n description: `\nReturns a new object created by merging together all arguments.\nIf two keys appears in more than one object $fun is used to calculate the new value.\n\nIf no arguments are provided \\`null\\` is returned.`,\n seeAlso: ['merge'],\n examples: [\n 'merge-with(object(\"x\", 10), object(\"y\", 20), +)',\n 'merge-with(object(\"x\", 10), object(\"x\", 15, \"y\", 20), +)',\n 'merge-with({ x: 10 }, { x: 20 }, { x: 30 }, { x: 40 }, -)',\n ],\n hideOperatorForm: true,\n },\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n arity: toFixedArity(2),\n docs: {\n category: 'object',\n returns: { type: 'object' },\n args: {\n a: { type: 'array' },\n b: { type: 'array' },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Returns a new object created by mapping $a to $b.',\n seeAlso: ['entries', 'keys', 'vals', 'sequence.interleave'],\n examples: [\n '[\"a\", \"b\", \"c\"] zipmap [1, 2, 3]',\n 'zipmap([\"a\", \"b\", \"c\"], [10, null, [1, 2, 3]])',\n 'zipmap([\"a\", \"b\", \"c\"], [1])',\n 'zipmap([], [10, null, [1, 2, 3]])',\n ],\n },\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n arity: toFixedArity(2),\n docs: {\n category: 'object',\n returns: { type: 'object' },\n args: {\n a: { type: 'object' },\n b: { type: 'array' },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Returns an object containing only those entries in $a whose key is in $b.',\n seeAlso: ['dissoc', 'keys'],\n examples: [\n '{ a: 1, b: 2, c: 3 } select-keys [\"a\", \"b\"]',\n 'select-keys({ a: 1, b: 2, c: 3 }, [\"a\", \"b\"])',\n 'select-keys({ a: 1 }, [\"a\", \"b\"])',\n ],\n },\n },\n}\n","import { isLitsFunction } from '../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../interface'\nimport { isGrid, isMatrix, isVector } from '../../typeGuards/annotatedArrays'\nimport { EPSILON } from '../../utils'\nimport { toFixedArity } from '../../utils/arity'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is a function, otherwise `false`.',\n seeAlso: ['string?', 'number?', 'boolean?', 'null?', 'array?', 'object?', 'regexp?'],\n examples: [\n 'function?(+)',\n 'function?(/)',\n 'function?((x, y) -> x + y)',\n 'function?(false)',\n 'function?(\"false\")',\n 'function?([1, 2, 3])',\n ],\n },\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is a string, otherwise `false`.',\n seeAlso: ['blank?', 'number?', 'boolean?', 'null?', 'array?', 'object?', 'regexp?', 'function?', 'collection?', 'sequence?'],\n examples: [\n 'string?(\"\")',\n 'string?(\"A string\")',\n 'string?(true ? \"A string\" : false)',\n 'string?(false)',\n 'string?([1, 2, 3])',\n 'string?(100)',\n ],\n },\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is a number, otherwise `false`.',\n seeAlso: ['integer?', 'zero?', 'pos?', 'neg?', 'finite?', 'number', 'string?', 'boolean?', 'null?', 'function?'],\n examples: [\n 'number?(0)',\n 'number?(2)',\n 'number?(-0.12)',\n 'number?(false)',\n 'number?([1, 2, 3])',\n 'number?(\"A string\")',\n ],\n },\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is an integer, otherwise `false`.',\n seeAlso: ['number?', 'number', 'even?', 'odd?'],\n examples: [\n 'integer?(0)',\n 'integer?(-12)',\n 'integer?(42)',\n 'integer?(10.1)',\n 'integer?((x, y) -> x + y)',\n 'integer?(false)',\n 'integer?(\"false\")',\n 'integer?([1, 2, 3])',\n ],\n },\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is a `boolean`, otherwise `false`.',\n seeAlso: ['true?', 'false?', 'boolean', 'string?', 'number?', 'null?', 'function?'],\n examples: [\n 'boolean?(true)',\n 'boolean?(false)',\n 'boolean?([1, 2, 3])',\n 'boolean?(0)',\n 'boolean?(\"A string\")',\n ],\n },\n },\n\n 'null?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is `null`, otherwise `false`.',\n seeAlso: ['empty?', 'not-empty?', 'string?', 'number?', 'boolean?', 'function?'],\n examples: [\n 'null?(null)',\n 'null?(false)',\n 'null?([1, 2, 3])',\n 'null?(0)',\n 'null?(\"A string\")',\n ],\n },\n },\n\n 'zero?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo, { finite: true })\n return Math.abs(value) < EPSILON\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is `0`, otherwise `false`.',\n seeAlso: ['pos?', 'neg?', 'even?', 'number?'],\n examples: [\n 'zero?(0)',\n 'zero?(-0.0)',\n 'zero?(1)',\n 'zero?(0.1)',\n ],\n },\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is greater than `0`, otherwise `false`.',\n seeAlso: ['neg?', 'zero?', 'number?'],\n examples: [\n 'pos?(0)',\n 'pos?(-0.0)',\n 'pos?(1)',\n 'pos?(-0.1)',\n ],\n },\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is less than `0`, otherwise `false`.',\n seeAlso: ['pos?', 'zero?', 'number?'],\n examples: [\n 'neg?(0)',\n 'neg?(-0.0)',\n 'neg?(1)',\n 'neg?(-0.1)',\n ],\n },\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is even, otherwise `false`.',\n seeAlso: ['odd?', 'integer?', 'zero?'],\n examples: [\n 'even?(0)',\n 'even?(-0.0)',\n 'even?(-1)',\n 'even?(2.1)',\n ],\n },\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is odd, otherwise `false`.',\n seeAlso: ['even?', 'integer?'],\n examples: [\n 'odd?(1.0)',\n 'odd?(1.001)',\n 'odd?(-1)',\n 'odd?(2.1)',\n ],\n },\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is an array, otherwise `false`.',\n seeAlso: ['sequence?', 'collection?', 'object?', 'string?', 'vector?', 'matrix?', 'grid?', 'function?'],\n examples: [\n 'array?([])',\n 'array?([1, 2, 3])',\n 'array?(object(\"a\", 10))',\n 'array?(42)',\n 'array?(10.1)',\n 'array?((x, y) -> x + y)',\n ],\n },\n },\n\n 'collection?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is a collection i.e. an array, an object or a string, otherwise `false`.',\n seeAlso: ['sequence?', 'array?', 'object?', 'string?'],\n examples: [\n 'collection?([])',\n 'collection?([1, 2, 3])',\n 'collection?(object(\"a\", 10))',\n 'collection?(\"Albert\")',\n 'collection?(42)',\n 'collection?(10.1)',\n 'collection?((x, y) -> x + y)',\n ],\n },\n },\n\n 'sequence?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is a sequence i.e. an array or a string, otherwise `false`.',\n seeAlso: ['collection?', 'array?', 'string?'],\n examples: [\n 'sequence?([])',\n 'sequence?([1, 2, 3])',\n 'sequence?(object(\"a\", 10))',\n 'sequence?(\"Albert\")',\n 'sequence?(42)',\n 'sequence?(10.1)',\n 'sequence?((x, y) -> x + y)',\n ],\n },\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is an object, otherwise `false`.',\n seeAlso: ['collection?', 'array?', 'string?', 'function?'],\n examples: [\n 'object?(object(\"a\", 10))',\n 'object?(42)',\n 'object?(10.1)',\n 'object?((x, y) -> x + y)',\n 'object?(#\"^start\")',\n 'object?(\"false\")',\n 'object?([1, 2, 3])',\n ],\n },\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is a regexp, otherwise `false`.',\n seeAlso: ['regexp', 'match', 'string?', 'function?'],\n examples: [\n 'regexp?(regexp(\"^start\"))',\n 'regexp?(#\"^start\")',\n 'regexp?(-12)',\n 'regexp?({})',\n 'regexp?(10.1)',\n 'regexp?((x, y) -> x + y)',\n 'regexp?(false)',\n 'regexp?(\"false\")',\n 'regexp?([1, 2, 3])',\n ],\n },\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is finite, otherwise `false`.',\n seeAlso: ['positive-infinity?', 'negative-infinity?', 'number?'],\n examples: [\n 'finite?(1.0)',\n 'finite?(1 / 0)',\n 'finite?(-1 / 0)',\n ],\n },\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x equals positive infinity, otherwise `false`.',\n seeAlso: ['negative-infinity?', 'finite?'],\n examples: [\n 'positive-infinity?(1.0)',\n 'positive-infinity?(1 / 0)',\n 'positive-infinity?(-1 / 0)',\n ],\n },\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'number' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x equals negative infinity, otherwise `false`.',\n seeAlso: ['positive-infinity?', 'finite?'],\n examples: [\n 'negative-infinity?(1.0)',\n 'negative-infinity?(1 / 0)',\n 'negative-infinity?(-1 / 0)',\n ],\n },\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n seeAlso: ['false?', 'boolean?', 'boolean'],\n examples: [\n 'true?(false)',\n 'true?(true)',\n 'true?(1)',\n 'true?(0)',\n ],\n },\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n seeAlso: ['true?', 'boolean?', 'boolean'],\n examples: [\n 'false?(false)',\n 'false?(true)',\n 'false?(1)',\n 'false?(0)',\n ],\n },\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: ['collection', 'string', 'null'] } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `true` if $x is empty or `null`, otherwise `false`.',\n seeAlso: ['not-empty?', 'collection.not-empty', 'null?', 'blank?', 'count'],\n examples: [\n 'empty?([])',\n 'empty?([1, 2, 3])',\n 'empty?({})',\n 'empty?({ a: 2 })',\n 'empty?(\"\")',\n 'empty?(\"Albert\")',\n 'empty?(null)',\n ],\n },\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n returns: { type: 'boolean' },\n args: { x: { type: ['collection', 'string', 'null'] } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns `false` if $x is empty or `null`, otherwise `true`.',\n seeAlso: ['empty?', 'collection.not-empty', 'null?'],\n examples: [\n 'not-empty?([])',\n 'not-empty?([1, 2, 3])',\n 'not-empty?({})',\n 'not-empty?({ a: 2 })',\n 'not-empty?(\"\")',\n 'not-empty?(\"Albert\")',\n 'not-empty?(null)',\n ],\n },\n },\n 'vector?': {\n evaluate: ([vector]): boolean => isVector(vector),\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n description: 'Checks if a value is a `vector`. A `vector` is an array of `numbers`.',\n seeAlso: ['matrix?', 'grid?', 'array?'],\n returns: { type: 'boolean' },\n args: { value: { type: 'any', description: 'The value to check.' } },\n variants: [{ argumentNames: ['value'] }],\n examples: [\n 'vector?(1)',\n 'vector?([1, 2, 3])',\n 'vector?([1, 2, \"3\"])',\n ],\n },\n },\n 'matrix?': {\n evaluate: ([matrix]): boolean => isMatrix(matrix),\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n description: 'Checks if a value is a `matrix`. A `matrix` is an array of arrays of `numbers`.',\n seeAlso: ['vector?', 'grid?', 'array?'],\n returns: { type: 'boolean' },\n args: { value: { type: 'any', description: 'The value to check.' } },\n variants: [{ argumentNames: ['value'] }],\n examples: [\n 'matrix?(1)',\n 'matrix?([1, 2, 3])',\n 'matrix?([[1, 2], [3, 4]])',\n 'matrix?([[1, 2], [3, \"4\"]])',\n 'matrix?([[1, 2], [3]])',\n ],\n },\n },\n 'grid?': {\n evaluate: ([table]): boolean => isGrid(table),\n arity: toFixedArity(1),\n docs: {\n category: 'predicate',\n description: 'Checks if a `value` is a `grid`. A `grid` is an `array` of `arrays` where all inner `arrays` have the same length.',\n seeAlso: ['vector?', 'matrix?', 'array?'],\n returns: { type: 'boolean' },\n args: { value: { type: 'any', description: 'The value to check.' } },\n variants: [{ argumentNames: ['value'] }],\n examples: [\n 'grid?(\"1\")',\n 'grid?([\"1\", 2, 3])',\n 'grid?([[\"1\", 2], [3, 4]])',\n 'grid?([[\"1\", 2], [3, \"4\"]])',\n 'grid?([[\"1\", 2], [3]])',\n ],\n },\n },\n\n}\n","import { LitsError } from '../../errors'\nimport type { RegularExpression } from '../../parser/types'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../typeGuards/lits'\nimport { assertString, isString } from '../../typeGuards/string'\nimport { toFixedArity } from '../../utils/arity'\nimport { REGEXP_SYMBOL } from '../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n 'regexp': {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n\n try {\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n }\n catch (e) {\n throw new LitsError(`Invalid regular expression: ${source} ${flags}`, sourceCodeInfo)\n }\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n arity: { min: 1, max: 2 },\n docs: {\n category: 'regular-expression',\n returns: { type: 'regexp' },\n args: {\n pattern: { type: 'string' },\n flags: { type: 'string', description: 'Optional flags for the regular expression. Possible values are the same as Javascript RegExp takes.' },\n },\n variants: [\n { argumentNames: ['pattern'] },\n { argumentNames: ['pattern', 'flags'] },\n ],\n description: 'Creates a RegExp from $pattern and $flags.',\n examples: [\n 'regexp(\"^\\\\s*(.*)$\")',\n '#\"^\\\\s*(.*)$\"',\n 'regexp(\"albert\", \"ig\")',\n '#\"albert\"ig',\n ],\n seeAlso: ['-short-regexp', 'match', 'replace', 'replace-all', 'regexp?'],\n hideOperatorForm: true,\n },\n },\n 'match': {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n arity: toFixedArity(2),\n docs: {\n category: 'regular-expression',\n returns: { type: 'any', array: true },\n args: {\n a: { type: 'regexp' },\n b: { type: 'string' },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: `Matches $b against regular expression $a.\nIf $b is a string and matches the regular expression, a \\`match\\`-array is returned, otherwise \\`null\\` is returned.`,\n seeAlso: ['regexp', 'replace', 'replace-all', '-short-regexp', 'regexp?'],\n examples: [\n 'match(\" A string\", regexp(\"^\\\\\\\\s*(.*)$\"))',\n 'match(\" A string\", #\"^\\\\s*(.*)$\")',\n 'match(\"My name is Albert\", #\"albert\"i)',\n 'match(\"My name is Ben\", #\"albert\"i)',\n 'match(null, #\"albert\"i)',\n 'match(1, #\"albert\"i)',\n 'match({}, #\"albert\"i)',\n ],\n },\n },\n 'replace': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n arity: toFixedArity(3),\n docs: {\n category: 'regular-expression',\n returns: { type: 'any', array: true },\n args: {\n a: { type: 'string' },\n b: { type: ['regexp', 'string'] },\n x: { type: 'string' },\n },\n variants: [{ argumentNames: ['a', 'b', 'x'] }],\n description: 'Returns a new string with first match of regular expression $b replaced by $x.',\n seeAlso: ['replace-all', 'regexp', 'match', '-short-regexp'],\n examples: [\n 'replace(\"Duck duck\", \"u\", \"i\")',\n 'replace(\"Duck duck\", #\"u\", \"i\")',\n 'replace(\"abcABC\", regexp(\"a\", \"i\"), \"-\")',\n 'replace(\"abcABC\", regexp(\"a\", \"gi\"), \"-\")',\n 'replace(\"abcABC\", #\"a\"i, \"-\")',\n 'replace(\"abcABC\", #\"a\"gi, \"-\")',\n ],\n },\n },\n 'replace-all': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n return str.replaceAll(matcher, value)\n },\n arity: toFixedArity(3),\n docs: {\n category: 'regular-expression',\n returns: { type: 'any', array: true },\n args: {\n a: { type: 'string' },\n b: { type: ['regexp', 'string'] },\n x: { type: 'string' },\n },\n variants: [{ argumentNames: ['a', 'b', 'x'] }],\n description: 'Returns a new string with all matches of regular expression $b replaced by $x.',\n seeAlso: ['replace', 'regexp', 'match', '-short-regexp'],\n examples: [\n 'replace-all(\"Duck duck\", \"u\", \"i\")',\n 'replace-all(\"Duck duck\", regexp(\"u\"), \"i\")',\n 'replace-all(\"abcABC\", regexp(\"a\", \"i\"), \"-\")',\n 'replace-all(\"abcABC\", regexp(\"a\", \"gi\"), \"-\")',\n 'replace-all(\"abcABC\", #\"a\"i, \"-\")',\n 'replace-all(\"abcABC\", #\"a\"gi, \"-\")',\n ],\n },\n },\n}\n","import { LitsError } from '../../errors'\nimport type { Arr } from '../../interface'\nimport { assertArray } from '../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../typeGuards/lits'\nimport { assertNumber } from '../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../typeGuards/string'\nimport { toFixedArity } from '../../utils/arity'\nimport type { BuiltinNormalExpressions } from '../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n arity: {},\n docs: {\n category: 'string',\n returns: { type: 'string' },\n args: { values: { type: 'any', rest: true } },\n variants: [{ argumentNames: ['values'] }],\n description: 'Concatenats $values into one string. If `value` equals `null` empty string is returned.',\n seeAlso: ['++', 'join', 'string.template', 'string.string-repeat', 'number'],\n examples: [\n 'str(\"A string\", \", and another string\", \" ...and more\")',\n 'str(\"Just one string\")',\n 'str()',\n 'str(0, false, true, null, #\"^kalle\", [1, 2, 3], {a: \"a\"})',\n ],\n hideOperatorForm: true,\n },\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n arity: toFixedArity(1),\n docs: {\n category: 'string',\n returns: { type: 'number' },\n args: { s: { type: 'string' } },\n variants: [{ argumentNames: ['s'] }],\n description: 'Parses $s to a number.',\n seeAlso: ['str', 'number?', 'integer?'],\n examples: [\n 'number(\"10\")',\n 'number(\"010\")',\n 'number(\"-1.01\")',\n ],\n },\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n arity: toFixedArity(1),\n docs: {\n category: 'string',\n returns: { type: 'string' },\n args: { s: { type: 'string' } },\n variants: [{ argumentNames: ['s'] }],\n description: 'Returns $s converted to lower case.',\n seeAlso: ['upper-case', 'string.capitalize'],\n examples: [\n 'lower-case(\"Albert\")',\n 'lower-case(\"\")',\n ],\n },\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n arity: toFixedArity(1),\n docs: {\n category: 'string',\n returns: { type: 'string' },\n args: { s: { type: 'string' } },\n variants: [{ argumentNames: ['s'] }],\n description: 'Returns $s converted to upper case.',\n seeAlso: ['lower-case', 'string.capitalize'],\n examples: [\n 'upper-case(\"Albert\")',\n 'upper-case(\"\")',\n ],\n },\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n arity: toFixedArity(1),\n docs: {\n category: 'string',\n returns: { type: 'string' },\n args: { s: { type: 'string' } },\n variants: [{ argumentNames: ['s'] }],\n description: 'Returns a new string with leading and trailing whitespaces removed.',\n seeAlso: ['string.trim-left', 'string.trim-right', 'blank?'],\n examples: [\n 'trim(\" Albert \")',\n 'trim(\" \")',\n 'trim(\"\")',\n ],\n },\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertStringOrNumber(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n arity: toFixedArity(2),\n docs: {\n category: 'string',\n returns: { type: 'string' },\n args: {\n a: { type: 'array' },\n b: { type: 'string' },\n arr: { type: 'array' },\n delimiter: { type: 'string' },\n },\n variants: [{ argumentNames: ['arr', 'delimiter'] }],\n description: 'Returns a new string by concatenating all of the elements in $arr, separated by $delimiter.',\n seeAlso: ['split', 'str', '++', 'sequence.interpose'],\n examples: [\n 'map([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], str) join \", \"',\n '([0, 1, 2, 3, 4, 5, 6, 7, 8, 9] map str) join \", \"',\n 'join([\"Albert\", 10], \", \")',\n 'join([\"Albert\", \"Mojir\"], \" \")',\n 'join(map([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], str), \", \")',\n ],\n },\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n arity: { min: 2, max: 3 },\n docs: {\n category: 'string',\n returns: { type: 'string' },\n args: {\n a: { type: 'string' },\n b: { type: 'string' },\n s: { type: 'string' },\n delimiter: { type: 'string' },\n limit: { type: 'integer' },\n },\n variants: [\n { argumentNames: ['s', 'delimiter'] },\n { argumentNames: ['s', 'delimiter', 'limit'] },\n ],\n description: 'Divides $s into an array of substrings. The division is done by searching for `delimiter`. If `limit` as provided, at most `limit` number of substrings are returned.',\n seeAlso: ['join', 'string.split-lines'],\n examples: [\n '\"Albert Mojir\" split \" \"',\n 'split(\"Albert Mojir\", \" \")',\n 'split(\"abcdefghijklmnopqrstuvw\", #\"[aoueiy]\")',\n 'split(\"0123456789\", \"\")',\n 'split(\"0123456789\", \"\", 5) map number',\n ],\n },\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'string',\n returns: { type: 'boolean' },\n args: { s: { type: ['string', 'null'] } },\n variants: [{ argumentNames: ['s'] }],\n description: 'Returns true if $s is null or only contains whitespace characters.',\n seeAlso: ['trim', 'empty?', 'string?'],\n examples: [\n 'blank?(\"\")',\n 'blank?(null)',\n 'blank?(\"\\n\")',\n 'blank?(\" \")',\n 'blank?(\".\")',\n ],\n },\n },\n}\n","import type { Any, Arr } from '../../interface'\nimport type {\n CompFunction,\n ConstantlyFunction,\n FunctionLike,\n} from '../../parser/types'\nimport { toAny } from '../../utils'\nimport { getArityFromFunction, toFixedArity } from '../../utils/arity'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../interface'\nimport { assertArray } from '../../typeGuards/array'\nimport { assertFunctionLike } from '../../typeGuards/lits'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n '|>': {\n evaluate: ([value, func], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertFunctionLike(func, sourceCodeInfo)\n return executeFunction(func, [value], contextStack, sourceCodeInfo)\n },\n arity: toFixedArity(2),\n docs: {\n category: 'functional',\n returns: { type: 'any' },\n args: {\n a: { type: 'any' },\n b: { type: 'function' },\n },\n variants: [{ argumentNames: ['a', 'b'] }],\n description: 'Takes a value $a and a function $b, and returns the result of applying $b to $a.',\n seeAlso: ['apply', 'comp'],\n examples: [\n `\n1 |> inc |> inc`,\n `range(10)\n |> map(_, -> $ ^ 2) // [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\n |> filter(_, odd?) // [1, 9, 25, 49, 81]\n |> reduce(_, +, 0) // 165\n |> sqrt // 12.84523257866513\n |> round(_, 2)`,\n ],\n },\n },\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertFunctionLike(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n arity: { min: 2 },\n docs: {\n category: 'functional',\n returns: { type: 'any' },\n args: {\n a: { type: 'function' },\n b: { type: 'array' },\n fun: { type: 'function' },\n args: { type: 'array' },\n },\n variants: [{ argumentNames: ['fun', 'args'] }],\n description: 'Call supplied function $fun with specified arguments $args.',\n seeAlso: ['|>'],\n examples: [\n `\napply(+, [1, 2, 3])`,\n `\napply(\n (x, y) -> sqrt(x ^ 2 + y ^ 2),\n [3, 4]\n)`,\n `\n(x, y) -> sqrt(x ^ 2 + y ^ 2) apply [3, 4]`,\n ],\n },\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'functional',\n returns: { type: 'any' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns $x.',\n seeAlso: ['constantly', 'functional.fnull'],\n examples: ['identity(1)', 'identity(\"Albert\")', 'identity({ a: 1 })', 'identity(null)'],\n },\n },\n\n 'comp': {\n evaluate: (params, sourceCodeInfo): CompFunction => {\n params.forEach(param => assertFunctionLike(param, sourceCodeInfo))\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Comp',\n params,\n arity: params.length > 0 ? getArityFromFunction(params.at(-1) as FunctionLike) : { min: 1, max: 1 },\n }\n },\n arity: {},\n docs: {\n category: 'functional',\n returns: { type: 'function' },\n args: {\n a: { type: 'function' },\n b: { type: 'function' },\n fns: { type: 'function', rest: true },\n },\n variants: [{ argumentNames: ['fns'] }],\n description: `Takes a variable number of functions and returns a function that is the composition of those.\n\n The returned function takes a variable number of arguments,\n applies the rightmost function to the args,\n the next function (right-to-left) to the result, etc.`,\n seeAlso: ['|>', 'functional.juxt', 'functional.complement'],\n examples: [\n `\nlet negative-quotient = comp(-, /);\nnegative-quotient(9, 3)`,\n `\nlet x = { bar: { foo: 42 } };\ncomp(\"foo\", \"bar\")(x)`,\n ],\n },\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Constantly',\n value: toAny(value),\n arity: {},\n }\n },\n arity: toFixedArity(1),\n docs: {\n category: 'functional',\n returns: { type: 'function' },\n args: { x: { type: 'any' } },\n variants: [{ argumentNames: ['x'] }],\n description: 'Returns a function that takes any number of arguments and always returns $x.',\n seeAlso: ['identity', 'functional.fnull'],\n examples: [\n `\nlet always-true = constantly(true);\nalways-true(9, 3)`,\n ],\n },\n },\n\n}\n","import type { FunctionReference } from '../../../reference'\nimport { assertNonUndefined } from '../../typeGuards'\nimport { assertFunctionLike } from '../../typeGuards/lits'\nimport { isLitsFunction } from '../../typeGuards/litsFunction'\nimport { toFixedArity } from '../../utils/arity'\nimport { generateDocString } from '../../utils/docString/generateDocString'\nimport type { Arity, BuiltinNormalExpressions } from '../interface'\n\nexport function getMetaNormalExpression(normalExpressionReference: Record<string, FunctionReference>): BuiltinNormalExpressions {\n return {\n doc: {\n evaluate: ([fn], sourceCodeInfo): string => {\n assertNonUndefined(normalExpressionReference)\n assertFunctionLike(fn, sourceCodeInfo)\n if (!isLitsFunction(fn)) {\n return ''\n }\n if (fn.functionType === 'Builtin') {\n const reference = normalExpressionReference[fn.name]\n return reference ? generateDocString(reference) : ''\n }\n if (fn.functionType === 'UserDefined' || fn.functionType === 'NativeJsFunction') {\n return fn.docString\n }\n return ''\n },\n arity: toFixedArity(1),\n docs: {\n category: 'meta',\n returns: { type: 'string' },\n args: { fun: { type: 'function' } },\n variants: [{ argumentNames: ['fun'] }],\n description: 'Returns documentation string of the $fun.',\n seeAlso: ['arity'],\n examples: [\n 'doc(+)',\n `\nlet add = (x, y) -> do\n \"\"\"\n Adds two numbers.\n Args:\n x: First number.\n y: Second number.\n Returns:\n Sum of x and y.\n \"\"\"\n x + y;\nend;\n\ndoc(add)`,\n ],\n },\n },\n arity: {\n evaluate: ([fn], sourceCodeInfo): Arity => {\n assertFunctionLike(fn, sourceCodeInfo)\n return isLitsFunction(fn) ? fn.arity : toFixedArity(1)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'meta',\n returns: { type: 'object' },\n args: { fun: { type: 'function' } },\n variants: [{ argumentNames: ['fun'] }],\n description: 'Returns arity of the $fun. The arity is an object with the properties: `min` and `max`. If the function has fixed arity, `min` and `max` are equal to the number of required parameters. If no restrictions apply, empty object is returned.',\n seeAlso: ['doc'],\n examples: [\n 'arity(+)',\n 'arity(defined?)',\n `\nlet add = (x, y = 0) -> do\n x + y;\nend;\n\narity(add)`,\n `\nlet foo = (k, ...x) -> do\n k + x;\nend;\n arity(foo)`,\n ],\n },\n },\n }\n}\n","import { assertNonEmptyVector, assertVector } from '../../typeGuards/annotatedArrays'\nimport { toFixedArity } from '../../utils/arity'\nimport type { BuiltinNormalExpressions } from '../interface'\n\nfunction calcMedian(vector: number[]): number {\n const sorted = [...vector].sort((a, b) => a - b)\n const mid = Math.floor(sorted.length / 2)\n return sorted.length % 2 === 0\n ? (sorted[mid - 1]! + sorted[mid]!) / 2\n : sorted[mid]!\n}\n\nexport const vectorNormalExpression: BuiltinNormalExpressions = {\n sum: {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertVector(vector, sourceCodeInfo)\n return vector.reduce((acc, val) => acc + val, 0)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'vector',\n returns: { type: 'number' },\n args: {\n vector: { type: 'vector', description: 'The vector to sum.' },\n },\n variants: [{ argumentNames: ['vector'] }],\n description: 'Returns the **sum** of all elements in the `vector`. Returns `0` for an empty vector.',\n seeAlso: ['prod', 'mean', 'median', 'vector.sum'],\n examples: [\n 'sum([1, 2, 3, 4, 5])',\n 'sum([1, -2, 3])',\n 'sum([])',\n ],\n },\n },\n\n prod: {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertVector(vector, sourceCodeInfo)\n return vector.reduce((acc, val) => acc * val, 1)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'vector',\n returns: { type: 'number' },\n args: {\n vector: { type: 'vector', description: 'The vector to multiply.' },\n },\n variants: [{ argumentNames: ['vector'] }],\n description: 'Returns the **product** of all elements in the `vector`. Returns `1` for an empty vector.',\n seeAlso: ['sum', 'mean', 'median', 'vector.prod'],\n examples: [\n 'prod([1, 2, 3, 4, 5])',\n 'prod([1, -2, 3])',\n 'prod([])',\n ],\n },\n },\n\n mean: {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n return vector.reduce((acc, val) => acc + val, 0) / vector.length\n },\n arity: toFixedArity(1),\n docs: {\n category: 'vector',\n returns: { type: 'number' },\n args: {\n vector: { type: 'vector', description: 'The vector to calculate the mean of.' },\n },\n variants: [{ argumentNames: ['vector'] }],\n description: 'Returns the arithmetic **mean** of all elements in the `vector`. Throws for an empty vector.',\n seeAlso: ['median', 'sum', 'prod', 'vector.mean'],\n examples: [\n 'mean([1, 2, 3, 4, 5])',\n 'mean([1, -2, 3])',\n ],\n },\n },\n\n median: {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n return calcMedian(vector)\n },\n arity: toFixedArity(1),\n docs: {\n category: 'vector',\n returns: { type: 'number' },\n args: {\n vector: { type: 'vector', description: 'The vector to calculate the median of.' },\n },\n variants: [{ argumentNames: ['vector'] }],\n description: 'Returns the **median** of all elements in the `vector`. For even-length vectors, returns the average of the two middle values. Throws for an empty vector.',\n seeAlso: ['mean', 'sum', 'prod', 'vector.median'],\n examples: [\n 'median([1, 2, 3, 4, 5])',\n 'median([1, 2, 3, 4])',\n 'median([3, 1, 4, 1, 5])',\n ],\n },\n },\n}\n","import { smartTrim } from '..'\nimport type { Argument, FunctionReference, TypedValue } from '../../../reference'\n\nexport function generateDocString(reference: FunctionReference): string {\n return smartTrim(`\n ${reference.title}\n\n ${reference.description\n .replace(/`(.+?)`/g, '$1')\n .replace(/\\$(\\w+)/g, '$1')\n .replace(/\\*\\*\\*(.+)\\*\\*\\*/g, '$1')\n .replace(/\\*\\*(.+)\\*\\*/g, '$1')\n }\n\n Signature:\n ${signature(reference).join('\\n ')}\n\n Arguments:\n ${argStrings(reference).join('\\n ')}\n\n Examples:\n${reference.examples.map(example => smartTrim(example, 4)).join('\\n\\n')}`)\n}\n\nfunction signature({ title, variants, args, returns, _isOperator }: FunctionReference): string[] {\n const functionForms = variants.map((variant) => {\n const form = ` ${title}(${variant.argumentNames.map((argName) => {\n let result = ''\n const arg = args[argName]!\n if (arg.rest) {\n result += '...'\n }\n result += argName\n return result\n }).join(', ')})`\n\n return `${form} -> ${type(returns)}`\n })\n\n const operatorForm = _isOperator ? ['', 'Operator:', ` a ${title} b -> ${type(returns)}`] : []\n\n return [\n ...functionForms,\n ...operatorForm,\n ]\n}\n\nfunction type(arg: Argument | TypedValue) {\n const argType = arg.type\n const types = Array.isArray(argType) ? argType : [argType]\n const typeString = types.join(' | ')\n return arg.array || arg.rest ? `Array<${typeString}>` : typeString\n}\n\nfunction argStrings(reference: FunctionReference): string[] {\n return Object.entries(reference.args).map(([argName, arg]) => `${argName}: ${type(arg)}`)\n}\n","import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface'\nimport type { Any } from '../../interface'\nimport type { FunctionReference } from '../../../reference'\nimport type { CoreNormalExpressionName } from '../../../reference/api'\n\n// Core categories - always available\nimport { bitwiseNormalExpression } from '../core/bitwise'\nimport { collectionNormalExpression } from '../core/collection'\nimport { arrayNormalExpression } from '../core/array'\nimport { sequenceNormalExpression } from '../core/sequence'\nimport { mathNormalExpression } from '../core/math'\nimport { miscNormalExpression } from '../core/misc'\nimport { objectNormalExpression } from '../core/object'\nimport { predicatesNormalExpression } from '../core/predicates'\nimport { regexpNormalExpression } from '../core/regexp'\nimport { stringNormalExpression } from '../core/string'\nimport { functionalNormalExpression } from '../core/functional'\nimport { getMetaNormalExpression } from '../core/meta'\nimport { vectorNormalExpression } from '../core/vector'\n\nconst normalExpressionReference: Record<string, FunctionReference> = {}\n\nexport function setNormalExpressionReference(reference: Record<CoreNormalExpressionName, FunctionReference>) {\n Object.assign(normalExpressionReference, reference)\n}\n\nconst expressions: BuiltinNormalExpressions = {\n // Core categories\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...getMetaNormalExpression(normalExpressionReference),\n ...miscNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n ...vectorNormalExpression,\n}\n\nObject.entries(expressions).forEach(([name, expression]) => {\n expression.name = name\n})\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...expressions,\n}\n\nexport const normalExpressionTypes: Record<string, number> = {}\nexport const allNormalExpressions: BuiltinNormalExpression<Any>[] = []\n\nObject.entries(normalExpressions).forEach(([key, value], index) => {\n normalExpressionTypes[key] = index\n allNormalExpressions.push(value)\n})\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression, FunctionDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>\n\nconst docs: FunctionDocs = {\n category: 'special-expression',\n returns: {\n type: 'any',\n },\n args: {\n a: { type: 'any' },\n b: { type: 'any' },\n c: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: `\nComputes logical \\`and\\`. Evaluation of expressions starts from left.\nAs soon as an \\`expression\\` evaluates to a falsy value, the result is returned.\n\nIf all expressions evaluate to truthy values, the value of the last expression is returned.`,\n examples: [\n 'true && 1',\n '&&(1, 1)',\n '&&(3 > 2, \"string\")',\n '&&(3 < 2, \"string\")',\n '&&(true, true, true, true)',\n '&&(true, true, 0, true)',\n ],\n}\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = true\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = true\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (!value)\n break\n }\n return value\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['cond cond-branch cond-branch ... end'],\n details: [\n ['cond-branch', 'case test then body', 'A branch of the cond expression.'],\n ['test', 'expression', 'The condition to test.'],\n ['body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Used for branching. `cond-branches` are tested sequentially from the top. If no branch is tested truthy, `null` is returned.',\n examples: [\n `\ncond\n case false then write!(\"FALSE\")\n case true then write!(\"TRUE\")\nend`,\n `\ncond\n case false then write!(\"FALSE\")\n case null then write!(\"null\")\nend ?? write!(\"TRUE\")`,\n `\ncond\n case false then write!(\"FALSE\")\n case null then write!(\"null\")\nend ?? write!(\"TRUE\")`,\n ],\n}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n for (const [test, form] of params) {\n const value = evaluateNode(test, contextStack)\n if (!value)\n continue\n\n return evaluateNode(form, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].flat(), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['switch value switch-branch switch-branch ... end'],\n details: [\n ['value', 'any', 'The value to test.'],\n ['switch-branch', 'case test then body', 'A branch of the switch expression.'],\n ['test', 'expression', 'The condition to test.'],\n ['body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Used for branching. `switch-branches` are tested sequentially from the top against `value`. If no branch is tested truthy, `null` is returned.',\n examples: [\n `\nswitch 1\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n `\nswitch 2\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n `\nswitch 3\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n ],\n}\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, switchValueNode, cases] = node[1]\n const switchValue = evaluateNode(switchValueNode, contextStack)\n for (const [test, form] of cases) {\n const value = evaluateNode(test, contextStack)\n if (value === switchValue) {\n return evaluateNode(form, contextStack)\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1], ...node[1][2].flat()], contextStack, builtin, evaluateNode),\n}\n","import { NodeTypes } from '../constants/constants'\nimport type {\n ExpressionNode,\n Node,\n NormalBuiltinSymbolNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n SpecialBuiltinSymbolNode,\n SpreadNode,\n SymbolNode,\n UserDefinedSymbolNode,\n} from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isSymbolNode(node: Node): node is SymbolNode {\n const nodeType = node[0]\n return NodeTypes.UserDefinedSymbol === nodeType\n || NodeTypes.NormalBuiltinSymbol === nodeType\n || NodeTypes.SpecialBuiltinSymbol === nodeType\n}\nexport function asSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is SymbolNode {\n if (!isSymbolNode(node))\n throw getAssertionError('SymbolNode', node, sourceCodeInfo)\n}\n\nexport function isUserDefinedSymbolNode(node: Node): node is UserDefinedSymbolNode {\n return NodeTypes.UserDefinedSymbol === node[0]\n}\nexport function asUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): UserDefinedSymbolNode {\n assertUserDefinedSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is UserDefinedSymbolNode {\n if (!isUserDefinedSymbolNode(node))\n throw getAssertionError('UserDefinedSymbolNode', node, sourceCodeInfo)\n}\n\nexport function isNormalBuiltinSymbolNode(node: Node): node is NormalBuiltinSymbolNode {\n return NodeTypes.NormalBuiltinSymbol === node[0]\n}\n\nexport function isSpecialBuiltinSymbolNode(node: Node): node is SpecialBuiltinSymbolNode {\n return NodeTypes.SpecialBuiltinSymbol === node[0]\n}\n\nexport function isNormalExpressionNode(node: Node): node is NormalExpressionNode {\n return node[0] === NodeTypes.NormalExpression\n}\nexport function asNormalExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNode(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNode {\n if (!isNormalExpressionNode(node))\n throw getAssertionError('NormalExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(node: Node): node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNode(node)) {\n return false\n }\n return isSymbolNode(node[1][0])\n}\nexport function asNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(node))\n throw getAssertionError('NormalExpressionNodeWithName', node, sourceCodeInfo)\n}\n\nexport function isExpressionNode(node: Node): node is ExpressionNode {\n return isNormalExpressionNode(node)\n || node[0] === NodeTypes.SpecialExpression\n || node[0] === NodeTypes.Number\n || node[0] === NodeTypes.String\n}\nexport function asExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is ExpressionNode {\n if (!isExpressionNode(node))\n throw getAssertionError('ExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isSpreadNode(node: Node): node is SpreadNode {\n return node[0] === NodeTypes.Spread\n}\n","import type { SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { assertSymbolNode, isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport { toFixedArity } from '../../utils/arity'\nimport type { BuiltinSpecialExpression, FunctionDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefinedNode = SpecialExpressionNode<[typeof specialExpressionTypes['defined?'], SymbolNode]>\n\nconst docs: FunctionDocs = {\n category: 'special-expression',\n returns: {\n type: 'boolean',\n },\n args: {\n symbol: { type: 'any' },\n },\n variants: [\n { argumentNames: ['symbol'] },\n ],\n description: `Returns \\`true\\` if \\`symbol\\` is defined, \\`false\\` otherwise.\n\nBuilt-in symbols are always considered defined. For user-defined symbols, checks if the symbol exists in the current scope.`,\n examples: [\n 'let x = 42; defined?(x)',\n 'defined?(x)',\n 'defined?(+)',\n ],\n}\n\nexport const definedSpecialExpression: BuiltinSpecialExpression<boolean, DefinedNode> = {\n arity: toFixedArity(1),\n docs,\n evaluate: (node, contextStack) => {\n const symbolNode = node[1][1]\n assertSymbolNode(symbolNode)\n if (!isUserDefinedSymbolNode(symbolNode)) {\n return true // If the symbol is not a user defined symbol, it is defined. normal or special builtin\n }\n const lookUpResult = contextStack.lookUp(symbolNode)\n return lookUpResult !== null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { JsFunction } from '../Lits/Lits'\nimport type { SpecialExpressionType } from '../builtin'\nimport type { Arity } from '../builtin/interface'\nimport type { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport type { FunctionType, NodeType, NodeTypes } from '../constants/constants'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Arr, Coll } from '../interface'\nimport type { ReservedSymbol } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo, Token } from '../tokenizer/token'\nimport type { FUNCTION_SYMBOL, REGEXP_SYMBOL } from '../utils/symbols'\n\nexport interface ParseState {\n position: number\n}\n\nexport type EvaluatedFunction = [BindingTarget[], Node[], Context]\n\ninterface GenericLitsFunction {\n [FUNCTION_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n functionType: FunctionType\n arity: Arity\n}\n\nexport interface RegularExpression {\n [REGEXP_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n s: string\n f: string\n}\n\nexport interface NativeJsFunction extends GenericLitsFunction {\n functionType: 'NativeJsFunction'\n name: string | undefined // name\n nativeFn: JsFunction\n docString: string // documentation string\n}\n\nexport function isJsFunction(fn: unknown): fn is JsFunction {\n return typeof fn === 'object' && fn !== null && 'fn' in fn && typeof (fn as JsFunction).fn === 'function'\n}\n\nexport function assertJsFunction(fn: unknown): asserts fn is JsFunction {\n if (!isJsFunction(fn)) {\n throw new TypeError('Expected a NativeJsFunction')\n }\n}\n\nexport interface NativeJsModule {\n [key: string]: NativeJsFunction | NativeJsModule\n}\n\nexport interface UserDefinedFunction extends GenericLitsFunction {\n functionType: 'UserDefined'\n name: string | undefined // name\n evaluatedfunction: EvaluatedFunction\n docString: string // documentation string\n}\n\nexport interface PartialFunction extends GenericLitsFunction {\n functionType: 'Partial'\n function: FunctionLike\n params: Arr\n placeholders: number[] // indexes of the placeholders\n}\n\nexport interface CompFunction extends GenericLitsFunction {\n functionType: 'Comp'\n params: Arr\n}\n\nexport interface ConstantlyFunction extends GenericLitsFunction {\n functionType: 'Constantly'\n value: Any\n}\n\nexport interface JuxtFunction extends GenericLitsFunction {\n functionType: 'Juxt'\n params: Arr\n}\n\nexport interface ComplementFunction extends GenericLitsFunction {\n functionType: 'Complement'\n function: FunctionLike\n}\n\nexport interface EveryPredFunction extends GenericLitsFunction {\n functionType: 'EveryPred'\n params: Arr\n}\n\nexport interface SomePredFunction extends GenericLitsFunction {\n functionType: 'SomePred'\n params: Arr\n}\n\nexport interface FNullFunction extends GenericLitsFunction {\n functionType: 'Fnull'\n function: FunctionLike\n params: Arr\n}\n\nexport interface NormalBuiltinFunction extends GenericLitsFunction {\n functionType: 'Builtin'\n normalBuiltinSymbolType: number\n name: string\n}\n\nexport interface SpecialBuiltinFunction extends GenericLitsFunction {\n functionType: 'SpecialBuiltin'\n specialBuiltinSymbolType:\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['recur']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['??']\n}\n\nexport interface ModuleFunction extends GenericLitsFunction {\n functionType: 'Module'\n moduleName: string\n functionName: string\n}\n\nexport type LitsFunction =\n | NativeJsFunction\n | UserDefinedFunction\n | NormalBuiltinFunction\n | SpecialBuiltinFunction\n | ModuleFunction\n | PartialFunction\n | CompFunction\n | ConstantlyFunction\n | JuxtFunction\n | ComplementFunction\n | EveryPredFunction\n | SomePredFunction\n | FNullFunction\n\nexport type LitsFunctionType = LitsFunction['functionType']\n\nexport type FunctionLike = LitsFunction | Coll | number\n\nexport type DebugData = {\n token: Token\n nameToken?: Token\n}\nexport type Node<T extends NodeType = NodeType, Payload = unknown> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type ExpressionNode = NormalExpressionNode | SpecialExpressionNode | NumberNode | StringNode\n\nexport type SpreadNode = Node<typeof NodeTypes.Spread, Node> // Payload should be array or object depending on context\nexport type NumberNode = Node<typeof NodeTypes.Number, number>\nexport type StringNode = Node<typeof NodeTypes.String, string>\nexport type UserDefinedSymbolNode = Node<typeof NodeTypes.UserDefinedSymbol, string>\nexport type NormalBuiltinSymbolNode = Node<typeof NodeTypes.NormalBuiltinSymbol, number>\nexport type SpecialBuiltinSymbolNode = Node<typeof NodeTypes.SpecialBuiltinSymbol, SpecialExpressionType>\nexport type SymbolNode = UserDefinedSymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode\nexport type ReservedSymbolNode = Node<typeof NodeTypes.ReservedSymbol, ReservedSymbol>\nexport type SpecialExpressionNode<T extends [SpecialExpressionType, ...unknown[]] = [SpecialExpressionType, ...unknown[]]> = Node<typeof NodeTypes.SpecialExpression, T> // [name, params]\n\nexport type NormalExpressionNodeWithName = Node<typeof NodeTypes.NormalExpression, [NormalBuiltinSymbolNode | UserDefinedSymbolNode, Node[]]> // [params, name]\nexport type NormalExpressionNodeExpression = Node<typeof NodeTypes.NormalExpression, [Node, Node[]]> // [name, node as function] node can be string number object or array\nexport type NormalExpressionNode = NormalExpressionNodeWithName | NormalExpressionNodeExpression\nexport const bindingTargetTypes = {\n symbol: 11,\n rest: 12,\n object: 13,\n array: 14,\n} as const\n\nexport type BindingTargetType = typeof bindingTargetTypes[keyof typeof bindingTargetTypes]\n\ntype GenericTarget<T extends BindingTargetType, Payload extends unknown[]> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type SymbolBindingTarget = GenericTarget<typeof bindingTargetTypes.symbol, [SymbolNode, Node | undefined /* default value */]>\nexport type RestBindingTarget = GenericTarget<typeof bindingTargetTypes.rest, [string, Node | undefined /* default value */]>\nexport type ObjectBindingTarget = GenericTarget<typeof bindingTargetTypes.object, [Record<string, BindingTarget>, Node | undefined /* default value */]>\nexport type ArrayBindingTarget = GenericTarget<typeof bindingTargetTypes.array, [(BindingTarget | null)[], Node | undefined /* default value */]>\n\nexport type BindingTarget = SymbolBindingTarget | RestBindingTarget | ObjectBindingTarget | ArrayBindingTarget\n\nexport type BindingNode = Node<typeof NodeTypes.Binding, [BindingTarget, Node]> // [target, value]\n\ntype AstBody = Node[]\nexport interface Ast {\n body: AstBody // body\n hasDebugData: boolean\n}\n","import { LitsError } from '../errors'\nimport type { Any } from '../interface'\nimport { type BindingTarget, type Node, type RestBindingTarget, type UserDefinedSymbolNode, bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { assertUnknownRecord } from '../typeGuards'\nimport { assertArray } from '../typeGuards/array'\nimport { asAny, assertAny } from '../typeGuards/lits'\n\nexport function walkDefaults(\n bindingTarget: BindingTarget,\n onDefault: (Node: Node) => void,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n Object.values(bindingTarget[1][0]).forEach((element) => {\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n })\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n }\n }\n}\n\nexport function evaluateBindingNodeValues(\n target: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n): Record<string, Any> {\n const sourceCodeInfo = target[2]\n const record: Record<string, Any> = {}\n createRecord(target, value, evaluate, sourceCodeInfo, record)\n return record\n}\n\nfunction createRecord(\n bindingTarget: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n sourceCodeInfo: SourceCodeInfo | undefined,\n record: Record<string, Any>,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n assertUnknownRecord(value, sourceCodeInfo)\n const capturedKeys = new Set<string>()\n let restElement: RestBindingTarget | undefined\n Object.entries(bindingTarget[1][0]).forEach(([key, element]) => {\n if (element[0] === bindingTargetTypes.rest) {\n restElement = element\n return\n }\n capturedKeys.add(key)\n const val = (value[key] !== undefined ? value[key] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n })\n if (restElement) {\n const restValues = Object.entries(value)\n .filter(([key]) => !capturedKeys.has(key))\n .reduce((acc: Record<string, Any>, [key, val]) => {\n acc[key] = asAny(val)\n return acc\n }, {})\n\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n let restIndex: number | null = null\n assertArray(value, sourceCodeInfo)\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[0] === bindingTargetTypes.rest) {\n restIndex = index\n break\n }\n const val = (value[index] !== undefined ? value[index] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n }\n if (restIndex !== null) {\n const restValues = value.slice(restIndex)\n const restElement = bindingTarget[1][0][restIndex]! as RestBindingTarget\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.rest) {\n record[bindingTarget[1][0]] = asAny(value)\n }\n else {\n record[(bindingTarget[1][0] as UserDefinedSymbolNode)[1]] = asAny(value)\n }\n}\n\nexport function getAllBindingTargetNames(bindingTarget: BindingTarget): Record<string, true> {\n const names: Record<string, true> = {}\n getNamesFromBindingTarget(bindingTarget, names)\n return names\n}\n\nfunction getNamesFromBindingTarget(target: BindingTarget | null, names: Record<string, true>): void {\n if (target === null) {\n return\n }\n if (target[0] === bindingTargetTypes.array) {\n for (const element of target[1][0]) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.object) {\n for (const element of Object.values(target[1][0])) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.rest) {\n if (names[target[1][0]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0]] = true\n }\n else {\n if (names[target[1][0][1]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0][1]] = true\n }\n}\n","import type { Any } from '../../interface'\nimport type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evaluateBindingNodeValues as evaluateBindingTargetValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_def'], BindingNode]> // binding, value\n\nexport const defSpecialExpression: BuiltinSpecialExpression<Any, DefNode> = {\n arity: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evaluateBindingTargetValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.exportValues(values, target[2])\n return bindingValue\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DoNode = SpecialExpressionNode<[typeof specialExpressionTypes['block'], Node[]]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['do body end'],\n details: [\n ['body', 'expressions', 'The expressions to evaluate.'],\n ],\n description: 'Evaluates `body`. Resulting value is the value of the last expression.',\n examples: [\n `\ndo\n let a = 1 + 2 + 3 + 4;\n let b = -> $ * ( $ + 1 );\n b(a)\nend`,\n ],\n}\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node[1][1])\n result = evaluateNode(form, newContextStack)\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n return getUndefinedSymbols(node[1][1], contextStack.create({}), builtin, evaluateNode)\n },\n}\n","import type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport {\n type EvaluatedFunction,\n type LitsFunction,\n type SpecialExpressionNode,\n bindingTargetTypes,\n} from '../../parser/types'\nimport { isAny } from '../../typeGuards/lits'\nimport { addToSet } from '../../utils'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport { getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport type { Function } from '../utils'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LambdaNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_lambda'], Function, string]>\n\nexport const lambdaSpecialExpression: BuiltinSpecialExpression<LitsFunction, LambdaNode> = {\n arity: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const fn = node[1][1]\n const docString = node[1][2]\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const min = evaluatedFunction[0].filter(arg => arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined).length\n const max = evaluatedFunction[0].some(arg => arg[0] === bindingTargetTypes.rest) ? undefined : evaluatedFunction[0].length\n const arity = { min: min > 0 ? min : undefined, max }\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: undefined,\n evaluatedfunction: evaluatedFunction,\n arity,\n docString,\n }\n\n return litsFunction\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const fn = node[1][1]\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode)\n },\n\n}\n\nfunction evaluateFunction(\n fn: Function,\n contextStack: ContextStack,\n builtin: Builtin,\n getUndefinedSymbols: GetUndefinedSymbols,\n evaluateNode: EvaluateNode,\n): EvaluatedFunction {\n const functionContext: Context = {}\n\n const context = fn[0].reduce((ctx: Context, arg) => {\n Object.keys(getAllBindingTargetNames(arg)).forEach((name) => {\n ctx[name] = { value: null }\n })\n return ctx\n }, {})\n const undefinedSymbols = getUndefinedSymbols(fn[1], contextStack.new(context), builtin, evaluateNode)\n undefinedSymbols.forEach((name) => {\n const value = contextStack.getValue(name)\n if (isAny(value)) {\n functionContext[name] = { value }\n }\n })\n\n const evaluatedFunction: EvaluatedFunction = [\n fn[0],\n fn[1],\n functionContext,\n ]\n\n return evaluatedFunction\n}\n\nfunction getFunctionUnresolvedSymbols(\n fn: Function,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n): UndefinedSymbols {\n const result = new Set<string>()\n const newContext: Context = { self: { value: null } }\n\n fn[0].forEach((arg) => {\n Object.assign(newContext, getAllBindingTargetNames(arg))\n\n walkDefaults(arg, (defaultNode) => {\n addToSet(result, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n })\n\n const newContextStack = contextStack.create(newContext)\n const overloadResult = getUndefinedSymbols(fn[1], newContextStack, builtin, evaluateNode)\n addToSet(result, overloadResult)\n return result\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type IfNode = SpecialExpressionNode<[typeof specialExpressionTypes['if'], [Node, Node, Node?]]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['if test then true-expr else false-expr', 'if test then true-expr'],\n details: [\n ['test', 'expression', 'The condition to test.'],\n ['true-expr', 'expression', 'The expression to evaluate if the test is truthy.'],\n ['false-expr', 'expression', 'The expression to evaluate if the test is falsy.'],\n ],\n description: 'Either `true-expr` or `false-expr` branch is taken. `true-expr` is selected when $test is truthy. If $test is falsy `false-expr` is executed, if no `false-expr` exists, `null` is returned.',\n examples: [\n `\nif true then\n write!(\"TRUE\")\nelse\n write!(\"FALSE\")\nend`,\n 'if false then write!(\"TRUE\") else write!(\"FALSE\") end',\n 'if true then write!(\"TRUE\") end',\n 'if false then write!(\"TRUE\") end',\n ],\n}\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n arity: { min: 2, max: 3 },\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type UnlessNode = SpecialExpressionNode<[typeof specialExpressionTypes['unless'], [Node, Node, Node?]]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['unless test then true-expr else false-expr end', 'unless test true-expr end'],\n details: [\n ['test', 'expression', 'The condition to test.'],\n ['true-expr', 'expression', 'The expressions to evaluate if the test is falsy.'],\n ['false-expr', 'expression', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Either `true-expr` or `false-expr` branch is taken. `true-expr` is selected when $test is falsy. If $test is truthy `false-expr` is executed, if no `false-expr` exists, `null` is returned.',\n examples: [\n `\nunless true then\n write!(\"TRUE\")\nelse\n write!(\"FALSE\")\nend`,\n 'unless false then write!(\"TRUE\") else write!(\"FALSE\") end',\n 'unless true then write!(\"TRUE\") end',\n 'unless false then write!(\"TRUE\") end',\n ],\n}\n\nexport const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (!evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { toFixedArity } from '../../utils/arity'\nimport { evaluateBindingNodeValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LetNode = SpecialExpressionNode<[typeof specialExpressionTypes['let'], BindingNode]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['let s = value;'],\n details: [\n ['s', 'symbol', 'The name of the variable to bind.'],\n ['value', 'any', 'The value to bind to the variable.'],\n ],\n description: `\n Binds local variables s to \\`value\\`. \\`value\\` can be any expression. The scope of the variables is the body of the let expression.`,\n examples: [`\nlet a = 1 + 2 + 3 + 4;\nlet b = -> $ * ( $ + 1 );\nwrite!(\"a\", a, \"b\", b)`],\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n arity: toFixedArity(0),\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evaluateBindingNodeValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.addValues(values, target[2])\n return bindingValue\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport { joinSets } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { evaluateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopNode = SpecialExpressionNode<[typeof specialExpressionTypes['loop'], BindingNode[], Node]> // bindings, body\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['loop (bindings) -> body'],\n details: [\n ['bindings', 'binding pairs', 'Comma-separated bindings with initial values, e.g. `n = 10, acc = 0`.'],\n ['body', 'expression', 'The expression to evaluate repeatedly. Use `recur` to loop back with new values.'],\n ],\n description: `Creates a loop with initial bindings. Use \\`recur\\` inside the body to jump back to the loop head with new binding values.\n\nIf \\`recur\\` is not called, the loop terminates and returns the value of the body expression.`,\n examples: [\n `loop (n = 10, acc = 0) -> do\n if n == 0 then\n acc\n else\n recur(n - 1, acc + n)\n end\nend`,\n `loop (n = 5, acc = 1) -> do\n if n <= 1 then\n acc\n else\n recur(n - 1, acc * n)\n end\nend`,\n ],\n}\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNodes = node[1][1]\n const bindingContext: Context = bindingNodes.reduce((result: Context, bindingNode) => {\n const val = evaluateNode(bindingNode[1][1], contextStack.create(result))\n const valueRecord = evaluateBindingNodeValues(bindingNode[1][0], val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n result[name] = { value }\n })\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n const body = node[1][2]\n for (;;) {\n let result: Any = null\n try {\n result = evaluateNode(body, newContextStack)\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== bindingNodes.length) {\n throw new LitsError(\n `recur expected ${bindingNodes.length} parameters, got ${valueToString(params.length)}`,\n node[2],\n )\n }\n bindingNodes.forEach((bindingNode, index) => {\n const valueRecord = evaluateBindingNodeValues(bindingNode[1][0], asAny(params[index]), Node => evaluateNode(Node, contextStack))\n for (const [name, value] of Object.entries(valueRecord)) {\n bindingContext[name]!.value = value\n }\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNodes = node[1][1]\n\n const newContext = bindingNodes\n .reduce((context: Context, bindingNode) => {\n const names = getAllBindingTargetNames(bindingNode[1][0])\n\n Object.keys(names).forEach((name) => {\n context[name] = { value: true }\n })\n return context\n }, {})\n\n const bindingValueNodes = bindingNodes.map(bindingNode => bindingNode[1][1])\n const bindingsResult = getUndefinedSymbols(bindingValueNodes, contextStack, builtin, evaluateNode)\n const paramsResult = getUndefinedSymbols([node[1][2]], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(bindingsResult, paramsResult)\n },\n}\n","import type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport { evaluateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\nimport { toFixedArity } from '../../utils/arity'\n\nexport type LoopBindingNode = [BindingNode, BindingNode[], Node?, Node?] // Binding, Let-Bindings, When, While\n\nexport type ForNode = SpecialExpressionNode<[typeof specialExpressionTypes['for'], LoopBindingNode[], Node]> // LoopBindings, body\nexport type DoSeqNode = SpecialExpressionNode<[typeof specialExpressionTypes['doseq'], LoopBindingNode[], Node]> // LoopBindings, body\n\ntype LoopNode = ForNode | DoSeqNode\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n for (const bindingNode of bindings) {\n const [target, bindingValue] = bindingNode[1]\n const val = evaluateNode(bindingValue, contextStack)\n const valueRecord = evaluateBindingNodeValues(target, val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n }\n}\n\nfunction evaluateLoop(\n returnResult: boolean,\n loopNode: LoopNode,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n const sourceCodeInfo = loopNode[2]\n const [, loopBindings, body] = loopNode[1]\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindings[bindingIndex]!\n const [targetNode, valueNode] = bindingNode[1]\n const coll = asColl(evaluateNode(valueNode, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n\n const val = asAny(seq[index], sourceCodeInfo)\n const valueRecord = evaluateBindingNodeValues(targetNode, val, Node => evaluateNode(Node, newContextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n if (letBindings) {\n addToContext(\n letBindings,\n context,\n newContextStack,\n evaluateNode,\n )\n }\n if (whenNode && !evaluateNode(whenNode, newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n if (whileNode && !evaluateNode(whileNode, newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n }\n if (!skip) {\n const value: Any = evaluateNode(body, newContextStack)\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n\n return returnResult ? result : null\n}\n\nfunction analyze(\n loopNode: LoopNode,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n): UndefinedSymbols {\n const result = new Set<string>()\n const newContext: Context = {}\n const [, loopBindings, body] = loopNode[1]\n loopBindings.forEach((loopBindingNode) => {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindingNode\n const [target, value] = bindingNode[1]\n getUndefinedSymbols([value], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(target))\n if (letBindings) {\n letBindings.forEach((letBindingNode) => {\n const [letTarget, letValue] = letBindingNode[1]\n\n getUndefinedSymbols([letValue], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(letTarget))\n })\n }\n if (whenNode) {\n getUndefinedSymbols([whenNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n getUndefinedSymbols([whileNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n getUndefinedSymbols([body], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nconst forDocs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['for (...binding) -> body'],\n details: [\n ['binding', 'loop-var in collection [...let-binding] [where whereExpr] [while whileExp]', 'A for loop binding'],\n ['loop-var', 'symbol', 'The name of the loop variable.'],\n ['collection', 'any', 'The collection to iterate over.'],\n ['let-binding', 'let binding', 'A let binding to create a local variable.'],\n ['whereExpr', 'expression', 'An expression that must evaluate to truthy for the loop body to be executed.'],\n ['whileExp', 'expression', 'An expression that must evaluate to truthy for the loop to continue.'],\n ['body', 'expressions', 'The expressions to evaluate for each iteration of the loop.'],\n ],\n returns: {\n type: 'any',\n array: true,\n },\n description: 'Iterates over `bindings`, evaluates `body` for each `binding` and returns an `array` of results.',\n examples: [\n `\nfor (i in [1, 2, 3]) -> i * 2\n `,\n `\nfor (\n i in range(10) let ii = i ^ 2 while ii < 40 when ii % 3 == 0,\n j in range(10) when j % 2 == 1\n) -> ii + j\n `,\n ],\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n arity: toFixedArity(1),\n docs: forDocs,\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateNode),\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n\nconst doseqDocs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['doseq (...binding) -> body'],\n details: [\n ['binding', 'loop-var in collection [...let-binding] [where whereExpr] [while whileExp]', 'A doseq loop binding'],\n ['loop-var', 'symbol', 'The name of the loop variable.'],\n ['collection', 'any', 'The collection to iterate over.'],\n ['let-binding', 'let binding', 'A let binding to create a local variable.'],\n ['whereExpr', 'expression', 'An expression that must evaluate to truthy for the loop body to be executed.'],\n ['whileExp', 'expression', 'An expression that must evaluate to truthy for the loop to continue.'],\n ['body', 'expressions', 'The expressions to evaluate for each iteration of the loop.'],\n ],\n returns: {\n type: 'null',\n },\n description: 'Iterates over `bindings`, evaluates `body` for each `binding` and returns `null`. This is useful for side effects.',\n examples: [\n `\ndoseq (i in [1, 2, 3]) -> write!(i * 2)\n `,\n ],\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n arity: toFixedArity(1),\n docs: doseqDocs,\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateNode)\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression, FunctionDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type OrNode = SpecialExpressionNode<[typeof specialExpressionTypes['||'], Node[]]>\n\nconst docs: FunctionDocs = {\n category: 'special-expression',\n returns: {\n type: 'boolean',\n },\n args: {\n a: { type: 'any' },\n b: { type: 'any' },\n c: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: `\n Computes logical \\`or\\`. Evaluation of expressions evaluation starts from left.\n As soon as a \\`expression\\` evaluates to a truthy value, the result is returned.\n\n If all expressions evaluate to falsy values, the value of the last expression is returned.`,\n examples: [\n 'false || 1',\n '||(1, 1)',\n '||(3 > 2, \"string\")',\n '||(3 < 2, \"string\")',\n '||(false, false, false, true)',\n '||(1, 2, 3, 4)',\n ],\n}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = false\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = false\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (value)\n break\n }\n return value\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression, FunctionDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type QqNode = SpecialExpressionNode<[typeof specialExpressionTypes['??'], Node[]]>\n\nconst docs: FunctionDocs = {\n category: 'special-expression',\n returns: {\n type: 'any',\n },\n args: {\n a: { type: 'any' },\n b: { type: 'any' },\n c: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a'] },\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: `Nullish coalescing operator. Returns the first non-\\`null\\` value.\n\nEvaluation is short-circuited — as soon as a non-\\`null\\` value is found, the remaining expressions are not evaluated.\n\nIf all values are \\`null\\`, returns \\`null\\`.\n\nAlso works with undefined symbols — if a symbol is undefined, it is treated as \\`null\\`.`,\n examples: [\n '1 ?? 2',\n 'null ?? 2',\n '??(null)',\n '??(null, \"default\")',\n '??(1, \"default\")',\n 'false ?? \"default\"',\n '??(null, null, 3)',\n ],\n}\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n arity: { min: 1 },\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n for (const param of node[1][1]) {\n if (isUserDefinedSymbolNode(param) && contextStack.lookUp(param) === null) {\n continue\n }\n const result = evaluateNode(param, contextStack)\n if (result !== null) {\n return result\n }\n }\n return null\n },\n\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n for (const param of params) {\n const value = asAny(param, sourceCodeInfo)\n if (value !== null) {\n return value\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { RecurSignal } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type RecurNode = SpecialExpressionNode<[typeof specialExpressionTypes['recur'], Node[]]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['recur(...recur-args)'],\n description: 'Recursevly calls enclosing function or loop with its evaluated `recur-args`.',\n examples: [\n `\nlet foo = (n) -> do\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend;\nfoo(3)`,\n `\n(n -> do\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend)(3)`,\n `\nloop (n = 3) -> do\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend`,\n ],\n}\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n const evaluatedParams = params.map(paramNode => evaluateNode(paramNode, contextStack))\n throw new RecurSignal(evaluatedParams)\n },\n evaluateAsNormalExpression: (params) => {\n throw new RecurSignal(params)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { UserDefinedError } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asString } from '../../typeGuards/string'\nimport { toFixedArity } from '../../utils/arity'\nimport type { BuiltinSpecialExpression, FunctionDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ThrowNode = SpecialExpressionNode<[typeof specialExpressionTypes['throw'], Node]>\n\nconst docs: FunctionDocs = {\n category: 'special-expression',\n returns: {\n type: 'never',\n },\n args: {\n expr: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['expr'] },\n ],\n description: 'Throws `UserDefinedError` with message set to $expr evaluated. $expr must evaluate to a string.',\n examples: [\n 'try throw(\"You shall not pass!\") catch(error) \"Error: \" ++ error.message end',\n 'try throw(slice(\"You shall not pass!\", 0, 3)) catch(error) \"Error: \" ++ error.message end',\n ],\n}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n arity: toFixedArity(1),\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const message = asString(evaluateNode(node[1][1], contextStack), node[2], {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node[2])\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const message = asString(params[0], sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, undefined)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { joinSets } from '../../utils'\nimport type { BuiltinSpecialExpression, CustomDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type TryNode = SpecialExpressionNode<[typeof specialExpressionTypes['try'], Node, SymbolNode | undefined, Node]>\n\nconst docs: CustomDocs = {\n category: 'special-expression',\n customVariants: ['try { try-body } catch { catch-body }', 'try { try-body } catch(error) { catch-body }'],\n details: [\n ['try-body', 'expressions', 'The expressions to try.'],\n ['error', 'symbol', 'The error variable to bind.'],\n ['catch-body', 'expression', 'The expressions to evaluate if the try-body throws an error.'],\n ],\n description: 'Executes `try-body`. If that throws, the `catch-body` gets executed. See examples for details.',\n examples: [\n `\ntry\n 2 / 4\ncatch\n \"Oops!\"\nend`,\n `\ntry\n foo()\ncatch(error)\n \"Error: \" ++ error.message\nend`,\n `\ntry\n foo()\ncatch\n 42\nend`,\n ],\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n try {\n return evaluateNode(tryExpression, contextStack)\n }\n catch (error) {\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: error as Any },\n }\n : {}\n return evaluateNode(catchExpression, contextStack.create(newContext))\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n const tryResult = getUndefinedSymbols([tryExpression], contextStack, builtin, evaluateNode)\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: true },\n }\n : {}\n const catchResult = getUndefinedSymbols([catchExpression], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(tryResult, catchResult)\n },\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Arr } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression, FunctionDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ArrayNode = SpecialExpressionNode<[typeof specialExpressionTypes['array'], Node[]]>\n\nconst docs: FunctionDocs = {\n category: 'special-expression',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Makes new array from $values.',\n examples: [\n 'array(1, 2, 3)',\n 'array(array(null, false, true))',\n '[]',\n '[1, 2, 3]',\n '[1, 2, ...[3, 4, 5], 6]',\n '[[null, false, true]]',\n '[1, 2, 3][1]',\n ],\n hideOperatorForm: true,\n}\n\nexport const arraySpecialExpression: BuiltinSpecialExpression<Any, ArrayNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Arr = []\n\n for (const param of node[1][1]) {\n if (isSpreadNode(param)) {\n const spreadValue = evaluateNode(param[1], contextStack)\n if (!Array.isArray(spreadValue)) {\n throw new LitsError('Spread value is not an array', param[2])\n }\n result.push(...spreadValue)\n }\n else {\n result.push(evaluateNode(param, contextStack))\n }\n }\n\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Arr = []\n\n for (const param of params) {\n result.push(asAny(param, sourceCodeInfo))\n }\n\n return result\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Obj } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUnknownRecord } from '../../typeGuards'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression, FunctionDocs } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ObjectNode = SpecialExpressionNode<[typeof specialExpressionTypes['object'], Node[]]>\n\nconst docs: FunctionDocs = {\n category: 'special-expression',\n returns: {\n type: 'object',\n },\n args: {\n kvps: {\n type: 'any',\n rest: true,\n description: 'key - value pairs, where key is a string',\n },\n },\n variants: [\n { argumentNames: ['kvps'] },\n ],\n description: 'Constructs a new object. Object members are created from the $kvps key-value pairs. Requires an even number of arguments.',\n examples: [\n 'object()',\n `\nlet default = {\n type: \"Person\",\n name: \"John Doe\",\n age: 42\n};\n\n{\n ...default,\n name: \"Lisa\"\n}`,\n 'object(\"x\", 10, \"y\", true, \"z\", \"A string\")',\n '{}',\n '{ a: 1, b: 2 }',\n ],\n hideOperatorForm: true,\n}\n\nexport const objectSpecialExpression: BuiltinSpecialExpression<Any, ObjectNode> = {\n arity: {},\n docs,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Obj = {}\n\n const params = node[1][1]\n for (let i = 0; i < params.length; i += 2) {\n const keyNode = params[i]!\n if (isSpreadNode(keyNode)) {\n const spreadObject = evaluateNode(keyNode[1], contextStack)\n if (!isUnknownRecord(spreadObject)) {\n throw new LitsError('Spread value is not an object', keyNode[2])\n }\n Object.assign(result, spreadObject)\n i -= 1\n }\n else {\n const key = evaluateNode(keyNode, contextStack)\n const valueNode = params[i + 1]\n if (valueNode === undefined) {\n throw new LitsError('Missing value for key', keyNode[2])\n }\n const value = evaluateNode(valueNode, contextStack)\n assertString(key, keyNode[2])\n result[key] = value\n }\n }\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Obj = {}\n\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value ?? null\n }\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","export const specialExpressionTypes = {\n '??': 0,\n '&&': 1,\n '||': 2,\n 'array': 3,\n 'cond': 4,\n '0_def': 5,\n 'defined?': 6,\n // '0_defn': 7,\n 'block': 7,\n 'doseq': 8,\n '0_lambda': 9,\n 'for': 10,\n // 'function': 10,\n 'if': 11,\n 'let': 12,\n 'loop': 13,\n 'object': 14,\n 'recur': 15,\n 'switch': 16,\n 'throw': 17,\n 'try': 18,\n 'unless': 19,\n} as const\n\nexport type SpecialExpressionTypes = typeof specialExpressionTypes\n","import type { Builtin } from './interface'\nimport { allNormalExpressions, normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { switchSpecialExpression } from './specialExpressions/switch'\nimport { definedSpecialExpression } from './specialExpressions/defined'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { doSpecialExpression } from './specialExpressions/block'\nimport { lambdaSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { unlessSpecialExpression } from './specialExpressions/unless'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { arraySpecialExpression } from './specialExpressions/array'\nimport { objectSpecialExpression } from './specialExpressions/object'\nimport { specialExpressionTypes } from './specialExpressionTypes'\n\nexport const specialExpressions = [\n qqSpecialExpression,\n andSpecialExpression,\n orSpecialExpression,\n arraySpecialExpression,\n condSpecialExpression,\n defSpecialExpression,\n definedSpecialExpression,\n doSpecialExpression,\n doseqSpecialExpression,\n lambdaSpecialExpression,\n forSpecialExpression,\n ifSpecialExpression,\n letSpecialExpression,\n loopSpecialExpression,\n objectSpecialExpression,\n recurSpecialExpression,\n switchSpecialExpression,\n throwSpecialExpression,\n trySpecialExpression,\n unlessSpecialExpression,\n] as const\n\nexport type SpecialExpressions = typeof specialExpressions\nexport type SpecialExpression = SpecialExpressions[number]\nexport type SpecialExpressionName = keyof typeof specialExpressionTypes\nexport type CommonSpecialExpressionType = [\n | typeof specialExpressionTypes['??']\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['cond']\n | typeof specialExpressionTypes['switch']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['block']\n | typeof specialExpressionTypes['if']\n | typeof specialExpressionTypes['unless']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object'],\n]\n\nexport type SpecialExpressionType = typeof specialExpressionTypes[SpecialExpressionName]\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n allNormalExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressionTypes)\nexport const specialExpressionNameSet = new Set(specialExpressionKeys)\n","import type { Builtin } from '../builtin/interface'\nimport type { DoNode } from '../builtin/specialExpressions/block'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { EvaluateNode } from '../evaluator/interface'\nimport type { Ast, Node, NormalExpressionNode, SpecialExpressionNode, SpreadNode, UserDefinedSymbolNode } from '../parser/types'\nimport { isNormalExpressionNodeWithName, isUserDefinedSymbolNode } from '../typeGuards/astNode'\n\nexport type UndefinedSymbols = Set<string>\n\nexport const getUndefinedSymbols: GetUndefinedSymbols = (ast, contextStack, builtin, evaluateNode) => {\n const nodes: Node[] = Array.isArray(ast)\n ? ast\n : [[NodeTypes.SpecialExpression, [specialExpressionTypes.block, ast.body]] satisfies DoNode]\n\n const unresolvedSymbols = new Set<string>()\n\n for (const subNode of nodes) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)\n ?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n}\n\nexport type GetUndefinedSymbols = (ast: Ast | Node[], contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode) => UndefinedSymbols\n\nfunction findUnresolvedSymbolsInNode(node: Node, contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode): UndefinedSymbols | null {\n const nodeType = node[0]\n switch (nodeType) {\n case NodeTypes.UserDefinedSymbol: {\n const symbolNode = node as UserDefinedSymbolNode\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n return new Set([symbolNode[1]])\n\n return null\n }\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.String:\n case NodeTypes.Number:\n case NodeTypes.ReservedSymbol:\n case NodeTypes.Binding:\n return null\n case NodeTypes.NormalExpression: {\n const normalExpressionNode = node as NormalExpressionNode\n const unresolvedSymbols = new Set<string>()\n if (isNormalExpressionNodeWithName(normalExpressionNode)) {\n const [, [symbolNode]] = normalExpressionNode\n if (isUserDefinedSymbolNode(symbolNode)) {\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n unresolvedSymbols.add(symbolNode[1])\n }\n }\n else {\n const [, [expressionNode]] = normalExpressionNode\n findUnresolvedSymbolsInNode(expressionNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n for (const subNode of normalExpressionNode[1][1]) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n }\n case NodeTypes.SpecialExpression: {\n const specialExpressionNode = node as SpecialExpressionNode\n const specialExpressionType = specialExpressionNode[1][0]\n const specialExpression = builtin.specialExpressions[specialExpressionType]\n\n const castedGetUndefinedSymbols = specialExpression.getUndefinedSymbols as Function\n\n return castedGetUndefinedSymbols(specialExpressionNode, contextStack, {\n getUndefinedSymbols,\n builtin,\n evaluateNode,\n }) as UndefinedSymbols\n }\n case NodeTypes.Spread:\n return findUnresolvedSymbolsInNode((node as SpreadNode)[1], contextStack, builtin, evaluateNode)\n\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unhandled node type: ${nodeType satisfies never}`, node[2])\n }\n}\n","import type { Any } from '../interface'\n\nconst nonNumberReservedSymbolRecord = {\n true: true,\n false: false,\n null: null,\n do: null,\n else: null,\n case: null,\n each: null,\n in: null,\n when: null,\n while: null,\n catch: null,\n function: null,\n export: null,\n as: null,\n then: null,\n end: null,\n _: null,\n} as const satisfies Record<string, Any>\n\nconst phi = (1 + Math.sqrt(5)) / 2\nexport const numberReservedSymbolRecord = {\n 'E': Math.E,\n '-E': -Math.E,\n 'ε': Math.E,\n '-ε': -Math.E,\n 'PI': Math.PI,\n '-PI': -Math.PI,\n 'π': Math.PI,\n '-π': -Math.PI,\n 'PHI': phi,\n '-PHI': -phi,\n 'φ': phi,\n '-φ': -phi,\n 'POSITIVE_INFINITY': Number.POSITIVE_INFINITY,\n '∞': Number.POSITIVE_INFINITY,\n 'NEGATIVE_INFINITY': Number.NEGATIVE_INFINITY,\n '-∞': Number.NEGATIVE_INFINITY,\n 'MAX_SAFE_INTEGER': Number.MAX_SAFE_INTEGER,\n 'MIN_SAFE_INTEGER': Number.MIN_SAFE_INTEGER,\n 'MAX_VALUE': Number.MAX_VALUE,\n 'MIN_VALUE': Number.MIN_VALUE,\n 'NaN': Number.NaN,\n} as const satisfies Record<string, number>\n\nexport const reservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport type ReservedSymbol = keyof typeof reservedSymbolRecord\n\nexport function isReservedSymbol(symbol: string): symbol is keyof typeof reservedSymbolRecord {\n return symbol in reservedSymbolRecord\n}\n\nexport function isNumberReservedSymbol(symbol: string): symbol is keyof typeof numberReservedSymbolRecord {\n return symbol in numberReservedSymbolRecord\n}\n","import { specialExpressions } from '../builtin'\nimport { evaluateBindingNodeValues } from '../builtin/bindingNode'\nimport { allNormalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport { arityAcceptsMin, assertNumberOfParams } from '../utils/arity'\nimport type { Any, Arr } from '../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n LitsFunctionType,\n ModuleFunction,\n NativeJsFunction,\n NormalBuiltinFunction,\n PartialFunction,\n SomePredFunction,\n SpecialBuiltinFunction,\n UserDefinedFunction,\n} from '../parser/types'\nimport { bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny, asFunctionLike } from '../typeGuards/lits'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport type { Context, EvaluateNode, ExecuteFunction } from './interface'\n\ntype FunctionExecutors = Record<LitsFunctionType, (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateNode: EvaluateNode, executeFunction: ExecuteFunction },\n) => Any>\n\nexport const functionExecutors: FunctionExecutors = {\n NativeJsFunction: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n return toAny(fn.nativeFn.fn(...params))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function threw: \"${message}\"`, sourceCodeInfo)\n }\n },\n UserDefined: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateNode }) => {\n for (;;) {\n if (!arityAcceptsMin(fn.arity, params.length)) {\n throw new LitsError(`Expected ${fn.arity} arguments, got ${params.length}.`, sourceCodeInfo)\n }\n const evaluatedFunction = fn.evaluatedfunction\n const args = evaluatedFunction[0]\n const nbrOfNonRestArgs: number = args.filter(arg => arg[0] !== bindingTargetTypes.rest).length\n\n const newContextStack = contextStack.create(fn.evaluatedfunction[2])\n const newContext: Context = { self: { value: fn } }\n\n const rest: Arr = []\n for (let i = 0; i < params.length; i += 1) {\n if (i < nbrOfNonRestArgs) {\n const param = toAny(params[i])\n const valueRecord = evaluateBindingNodeValues(args[i]!, param, node =>\n evaluateNode(node, newContextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n for (let i = params.length; i < nbrOfNonRestArgs; i++) {\n const arg = args[i]!\n const defaultValue = evaluateNode(arg[1][1]!, contextStack.create(newContext))\n const valueRecord = evaluateBindingNodeValues(arg, defaultValue, node =>\n evaluateNode(node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n const restArgument = args.find(arg => arg[0] === bindingTargetTypes.rest)\n if (restArgument !== undefined) {\n const valueRecord = evaluateBindingNodeValues(restArgument, rest, node => evaluateNode(node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n try {\n let result: Any = null\n const newContextStack2 = newContextStack.create(newContext)\n for (const node of evaluatedFunction[1]) {\n result = evaluateNode(node, newContextStack2)\n }\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n Partial: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const actualParams = [...fn.params]\n if (params.length !== fn.placeholders.length) {\n throw new LitsError(`(partial) expects ${fn.placeholders.length} arguments, got ${params.length}.`, sourceCodeInfo)\n }\n const paramsCopy = [...params]\n for (const placeholderIndex of fn.placeholders) {\n actualParams.splice(placeholderIndex, 0, paramsCopy.shift())\n }\n return executeFunction(fn.function, actualParams, contextStack, sourceCodeInfo)\n },\n Comp: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { params: f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(asFunctionLike(fun, sourceCodeInfo), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n Constantly: (fn: ConstantlyFunction) => {\n return fn.value\n },\n Juxt: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.params.map(fun => executeFunction(asFunctionLike(fun, sourceCodeInfo), params, contextStack, sourceCodeInfo))\n },\n Complement: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.function, params, contextStack, sourceCodeInfo)\n },\n EveryPred: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(asFunctionLike(f, sourceCodeInfo), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n SomePred: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(asFunctionLike(f, sourceCodeInfo), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n Fnull: (fn: FNullFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fnulledParams = params.map((param, index) => (param === null ? toAny(fn.params[index]) : param))\n return executeFunction(asFunctionLike(fn.function, sourceCodeInfo), fnulledParams, contextStack, sourceCodeInfo)\n },\n Builtin: (fn: NormalBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(allNormalExpressions[fn.normalBuiltinSymbolType], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n SpecialBuiltin: (fn: SpecialBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const specialExpression = asNonUndefined(specialExpressions[fn.specialBuiltinSymbolType], sourceCodeInfo)\n if (specialExpression.evaluateAsNormalExpression) {\n return specialExpression.evaluateAsNormalExpression(params, sourceCodeInfo, contextStack, { executeFunction })\n }\n else {\n throw new LitsError(`Special builtin function ${fn.specialBuiltinSymbolType} is not supported as normal expression.`, sourceCodeInfo)\n }\n },\n Module: (fn: ModuleFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const module = contextStack.getModule(fn.moduleName)\n if (!module) {\n throw new LitsError(`Module '${fn.moduleName}' not found.`, sourceCodeInfo)\n }\n const expression = module.functions[fn.functionName]\n if (!expression) {\n throw new LitsError(`Function '${fn.functionName}' not found in module '${fn.moduleName}'.`, sourceCodeInfo)\n }\n assertNumberOfParams(expression.arity, params.length, sourceCodeInfo)\n return expression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n}\n","import type { SpecialExpression } from '../builtin'\nimport { builtin } from '../builtin'\nimport { NodeTypes, getNodeTypeName } from '../constants/constants'\nimport { LitsError, UndefinedSymbolError } from '../errors'\nimport { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport type { Any, Arr, Obj } from '../interface'\nimport type {\n Ast,\n FunctionLike,\n Node,\n NormalExpressionNode,\n NumberNode,\n PartialFunction,\n ReservedSymbolNode,\n SpecialExpressionNode,\n StringNode,\n SymbolNode,\n} from '../parser/types'\nimport { reservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { annotate } from '../typeGuards/annotatedArrays'\nimport { isNormalBuiltinSymbolNode, isNormalExpressionNodeWithName, isSpreadNode } from '../typeGuards/astNode'\nimport { asFunctionLike, assertSeq, isObj } from '../typeGuards/lits'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { assertString } from '../typeGuards/string'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { toFixedArity } from '../utils/arity'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n for (const node of ast.body) {\n result = evaluateNode(node, contextStack)\n }\n\n return result\n}\n\nexport function evaluateNode(node: Node, contextStack: ContextStack): Any {\n switch (node[0]) {\n case NodeTypes.Number:\n return evaluateNumber(node as NumberNode)\n case NodeTypes.String:\n return evaluateString(node as StringNode)\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.UserDefinedSymbol:\n return contextStack.evaluateSymbol(node as SymbolNode)\n case NodeTypes.ReservedSymbol:\n return evaluateReservedSymbol(node as ReservedSymbolNode)\n case NodeTypes.NormalExpression: {\n const result = evaluateNormalExpression(node as NormalExpressionNode, contextStack)\n if (typeof result === 'number' && Number.isNaN(result)) {\n throw new LitsError('Number is NaN', node[2])\n }\n return annotate(result)\n }\n case NodeTypes.SpecialExpression:\n return annotate(evaluateSpecialExpression(node as SpecialExpressionNode, contextStack))\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`${getNodeTypeName(node[0])}-node cannot be evaluated`, node[2])\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node[1]\n}\n\nfunction evaluateString(node: StringNode): string {\n return node[1]\n}\n\nfunction evaluateReservedSymbol(node: ReservedSymbolNode): Any {\n const reservedName = node[1]\n if (!['true', 'false', 'null'].includes(reservedName)) {\n throw new LitsError(`Reserved symbol ${reservedName} cannot be evaluated`, node[2])\n }\n const value = reservedSymbolRecord[reservedName]\n return asNonUndefined(value, node[2])\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const sourceCodeInfo = node[2]\n const paramNodes: Node[] = node[1][1]\n const params: Arr = []\n const placeholders: number[] = []\n paramNodes.forEach((paramNode, index) => {\n if (isSpreadNode(paramNode)) {\n const spreadValue = evaluateNode(paramNode[1], contextStack)\n if (Array.isArray(spreadValue)) {\n params.push(...spreadValue)\n }\n else {\n throw new LitsError(`Spread operator requires an array, got ${valueToString(paramNode)}`, paramNode[2])\n }\n }\n else if (paramNode[0] === NodeTypes.ReservedSymbol && paramNode[1] === '_') {\n placeholders.push(index)\n }\n else {\n params.push(evaluateNode(paramNode, contextStack))\n }\n })\n if (isNormalExpressionNodeWithName(node)) {\n const nameSymbol = node[1][0]\n if (placeholders.length > 0) {\n const fn = evaluateNode(nameSymbol, contextStack)\n const partialFunction: PartialFunction = {\n [FUNCTION_SYMBOL]: true,\n function: asFunctionLike(fn, sourceCodeInfo),\n functionType: 'Partial',\n params,\n placeholders,\n sourceCodeInfo,\n arity: toFixedArity(placeholders.length),\n }\n return partialFunction\n }\n\n if (isNormalBuiltinSymbolNode(nameSymbol)) {\n const type = nameSymbol[1]\n const normalExpression = builtin.allNormalExpressions[type]!\n return normalExpression.evaluate(params, node[2], contextStack, { executeFunction })\n }\n else {\n const fn = contextStack.getValue(nameSymbol[1])\n if (fn !== undefined) {\n return executeFunction(asFunctionLike(fn, sourceCodeInfo), params, contextStack, sourceCodeInfo)\n }\n throw new UndefinedSymbolError(nameSymbol[1], node[2])\n }\n }\n else {\n const fnNode: Node = node[1][0]\n const fn = asFunctionLike(evaluateNode(fnNode, contextStack), sourceCodeInfo)\n if (placeholders.length > 0) {\n const partialFunction: PartialFunction = {\n [FUNCTION_SYMBOL]: true,\n function: fn,\n functionType: 'Partial',\n params,\n placeholders,\n sourceCodeInfo,\n arity: toFixedArity(placeholders.length),\n }\n return partialFunction\n }\n return executeFunction(fn, params, contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: FunctionLike, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.functionType](fn, params, sourceCodeInfo, contextStack, { evaluateNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn)) {\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n /* v8 ignore next 4 */\n }\n throw new LitsError('Unexpected function type', sourceCodeInfo)\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpressionType = node[1][0]\n const specialExpression: SpecialExpression = asNonUndefined(builtin.specialExpressions[specialExpressionType], node[2])\n const castedEvaluate = specialExpression.evaluate as Function\n\n return castedEvaluate(node, contextStack, { evaluateNode, builtin, getUndefinedSymbols }) as Any\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n"],"names":["getCodeMarker","sourceCodeInfo","position","code","leftPadding","column","rightPadding","length","repeat","Math","max","RecurSignal","Error","params","constructor","super","Object","setPrototypeOf","this","prototype","name","LitsError","shortMessage","err","message","location","line","filePath","getLitsErrorMessage","UserDefinedError","userMessage","UndefinedSymbolError","symbol","symbolName","NodeTypes","Number","String","NormalExpression","SpecialExpression","UserDefinedSymbol","NormalBuiltinSymbol","SpecialBuiltinSymbol","ReservedSymbol","Binding","Spread","NodeTypesSet","Set","values","getNodeTypeName","type","keys","find","key","functionTypeSet","FUNCTION_SYMBOL","REGEXP_SYMBOL","isLitsFunction","func","has","isFunctionType","functionType","isNode","value","Array","isArray","isNodeType","valueToString","RegExp","toString","JSON","stringify","getSourceCodeInfo","anyValue","getAssertionError","typeName","asNonUndefined","assertNonUndefined","undefined","isNonUndefined","isUnknownRecord","assertLitsFunction","isUserDefinedFunction","assertUserDefinedFunction","isNativeJsFunction","assertNativeJsFunction","isNumber","options","isNaN","integer","isInteger","finite","isFinite","zero","nonZero","positive","negative","nonPositive","nonNegative","gt","gte","lt","lte","assertNumber","sign","getSignString","numberType","range","getRangeString","filter","x","join","getNumberTypeName","isAny","asAny","assertAny","isSeq","assertSeq","isObj","isRegularExpression","assertObj","isColl","asColl","assertColl","regexp","assertStringOrRegularExpression","isStringOrRegularExpression","asFunctionLike","assertFunctionLike","isFunctionLike","arityAcceptsMin","arity","nbrOfParams","min","assertNumberOfParams","toFixedArity","bitwiseNormalExpression","evaluate","num","count","first","rest","reduce","result","xor","nonEmpty","char","isString","asString","assertString","isStringOrNumber","asStringOrNumber","assertStringOrNumber","collHasKey","coll","getOwnPropertyDescriptor","compare","a","b","deepEqual","epsilon","EPSILON","diff","abs","absA","absB","i","s","f","aKeys","bKeys","toAny","results","symbols","forEach","add","addToSet","target","source","smartTrim","str","minIndent","lines","split","match","shift","pop","indent","acc","lineIndent","Infinity","slice","trimEnd","assertArray","every","v","isStringArray","isCharArray","collectionNormalExpression","fn","contextStack","executeFunction","elem","entries","map","at","colls","obj","objKeys","includes","push","mapObjects","seqs","isStr","len","seq","paramArray","mapped","p","initial","get","defaultValue","copy","assoc","arr","concat","assign","arrayNormalExpression","second","third","from","step","to","flatten","depth","actualDepth","POSITIVE_INFINITY","asNumber","flat","mapcat","windowSize","subArr","sequenceNormalExpression","nth","array","last","index","indexOf","item","assertCharArray","substring","next","reverse","some","sort","comparer","compareValue","defaultComparer","annotatedArrays","vectors","WeakSet","notVectors","matrices","notMatrices","grids","notGrids","annotate","isVector","isMatrix","isGrid","vector","assertNonEmptyVector","assertVector","grid","row","nbrOfCols","matrix","getNumberVectorOrMatrixOperation","hasVector","hasMatrix","param","rows","cold","unaryMathOp","operation","operands","val","j","reduceMathOp","identity","m","mathNormalExpression","inc","firstVector","firstMatrix","binaryMathOp","trunc","floor","sqrt","cbrt","decimals","round","factor","ceil","isEqual","firstAny","miscNormalExpression","isIdentical","currentValue","ms","Date","toISOString","dateTime","valueOf","console","log","boolean","import","importPath","dotIndex","moduleName","module","getModule","expression","functions","functionName","objectNormalExpression","vals","dissoc","newObj","merge","entry","assertStringArray","predicatesNormalExpression","NEGATIVE_INFINITY","table","regexpNormalExpression","sourceArg","flagsArg","flags","e","text","assertRegularExpression","exec","matcher","replace","replaceAll","blankRegexp","stringNormalExpression","number","toLowerCase","toUpperCase","trim","stringList","delimiter","stringOrRegExpValue","limit","test","comp","generateDocString","reference","title","description","variants","args","returns","_isOperator","variant","argumentNames","argName","signature","arg","argStrings","examples","example","typeString","argType","prod","sorted","mid","calcMedian","expressions","normalExpressionReference","docString","getMetaNormalExpression","normalExpressionTypes","normalExpressions","allNormalExpressions","andSpecialExpression","node","evaluateNode","evaluateAsNormalExpression","getUndefinedSymbols","builtin","isSymbolNode","nodeType","asUserDefinedSymbolNode","isUserDefinedSymbolNode","assertUserDefinedSymbolNode","isNormalBuiltinSymbolNode","isSpecialBuiltinSymbolNode","isSpreadNode","definedSpecialExpression","symbolNode","assertSymbolNode","lookUp","bindingTargetTypes","bindingTarget","onDefault","element","walkDefaults","evaluateBindingNodeValues","record","createRecord","restElement","restValues","capturedKeys","restIndex","getAllBindingTargetNames","names","getNamesFromBindingTarget","defSpecialExpression","bindingNode","bindingValue","Node","exportValues","defaultNode","bindingResult","addValues","lambdaSpecialExpression","evaluatedFunction","functionContext","context","ctx","new","undefinedSymbols","evaluateFunction","self","newContext","newContextStack","create","overloadResult","getFunctionUnresolvedSymbols","letSpecialExpression","loopSpecialExpression","bindingNodes","valueRecord","bindingContext","body","error","bindings","evaluateLoop","returnResult","loopNode","loopBindings","bindingIndices","abort","bindingsLoop","bindingIndex","letBindings","whenNode","whileNode","targetNode","valueNode","skip","addToContext","loopBindingNode","letBindingNode","letTarget","letValue","forSpecialExpression","helpers","analyze","doseqSpecialExpression","orSpecialExpression","qqSpecialExpression","recurSpecialExpression","paramNode","evaluatedParams","throwSpecialExpression","tryExpression","errorSymbol","catchExpression","tryResult","arraySpecialExpression","spreadValue","objectSpecialExpression","keyNode","spreadObject","specialExpressionTypes","block","doseq","for","if","let","loop","object","recur","switch","specialExpressions","form","trueNode","falseNode","conditionNode","n","switchValueNode","cases","switchValue","specialExpressionKeys","ast","nodes","unresolvedSymbols","subNode","findUnresolvedSymbolsInNode","normalExpressionNode","isNormalExpressionNodeWithName","expressionNode","specialExpressionNode","specialExpressionType","castedGetUndefinedSymbols","phi","numberReservedSymbolRecord","E","PI","PHI","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MAX_VALUE","MIN_VALUE","NaN","reservedSymbolRecord","true","false","each","in","when","while","catch","function","export","as","then","end","_","NativeJsFunction","nativeFn","UserDefined","evaluatedfunction","nbrOfNonRestArgs","restArgument","newContextStack2","Partial","actualParams","placeholders","placeholderIndex","splice","paramsCopy","Comp","reduceRight","fun","Constantly","Juxt","Complement","EveryPred","SomePred","Fnull","fnulledParams","Builtin","normalBuiltinSymbolType","SpecialBuiltin","specialExpression","specialBuiltinSymbolType","Module","evaluateSymbol","reservedName","evaluateReservedSymbol","paramNodes","nameSymbol","getValue","evaluateNormalExpression","castedEvaluate","evaluateSpecialExpression","functionExecutors","evaluateArrayAsFunction","evalueateObjectAsFunction","evaluateNumberAsFunction","globalContext","nativeJsFunctions","modules","contexts","hostValues","Map","ContextStackImpl","shadowedName","getShadowedBuiltinName","currentContext","contextEntry","hostValue","nativeJsFunction","throw","normalExpression","lookUpResult","normalExpressionKeys","createContextStack","jsFunctions","identifier","identifierParts","scope","part","isJsFunction","TypeError","assertJsFunction","assertNotShadowingBuiltin","globalModuleScope","binaryOperators","symbolicOperators","nonFunctionOperatorSet","operator","binaryOperatorSet","isBinaryOperator","symbolicOperatorSet","isSymbolicOperator","illegalSymbolCharacters","illegalFirstSymbolCharacters","tokenizeString","input","escaping","binaryNumberRegExp","postNumberRegExp","tokenizeSymbol","initialPosition","NO_MATCH","tokenizers","whitespaceRegExp","symbolMeta","startsWith","tokenizeToken","nextThreeChars","stringLength","token","baseChar","octalNumberRegExp","hexNumberRegExp","nextChar","plusPrefix","start","negate","hasExponent","decimalNumberRegExp","hasDecimalPoint","threeChars","twoChars","oneChar","lastLine","lineNbr","getSourceCodeLine","getCurrentToken","nbrOfCharacters","tokenizeShebang","tokenizer","asSymbolToken","isSymbolToken","throwUnexpectedToken","assertSymbolToken","isReservedSymbolToken","assertReservedSymbolToken","asReservedSymbolToken","isOperatorToken","operatorName","assertOperatorToken","isLParenToken","assertLParenToken","assertRParenToken","isLBracketToken","asLBracketToken","isRBracketToken","isLBraceToken","asLBraceToken","assertLBraceToken","isRBraceToken","expected","expectedValue","actual","actualOutput","minifyTokenStream","removeWhiteSpace","tokens","tokenStream","isSingleLineCommentToken","isMultiLineCommentToken","isShebangToken","isWhitespaceToken","normalExpressionNames","specialExpressionNames","getSymbolName","placeholderRegexp","withSourceCodeInfo","getPrecedence","operatorSign","createNamedNormalExpressionNode","left","right","fromBinaryOperatorToNode","Parser","parseState","peek","peekSourceCodeInfo","currentToken","peekAhead","advance","parse","isAtEnd","parseExpression","precedence","moduleScope","firstToken","parseLet","parseIfOrUnless","parseCond","parseSwitch","parseForOrDoseq","parseLoop","parseTry","parseBlock","parseExport","parseOperand","isAtExpressionEnd","isA_BinaryOperatorToken","newPrecedece","isFunctionOperator","operatorSymbol","parseSymbol","asToken","operand","symbolToken","createAccessorNode","parseFunctionCall","parseOperandPart","positionBefore","lamdaFunction","parseLambdaFunction","isRParenToken","parseShorthandLambdaFunction","parseObject","parseArray","tokenType","parseNumber","parseString","parseReservedSymbol","isStringToken","stringNode","stringFromQuotedSymbol","nextToken","assertRBracketToken","functionArguments","parsedBlock","defaults","parseBindingTarget","startPos","endPos","dollar1","pos","parseOptionalDefaulValue","requireDefaultValue","noRest","elements","keySymbol","keyName","allowDocString","isDocStringToken","parseDocString","assertImplicitBlockEnd","ends","isImplicitBlockEnd","parseImplicitBlock","try","isDoseq","existingBoundNames","forLoopBindings","flatMap","newBoundNames","loopBinding","parseForLoopBinding","parseBinding","assertInternalLoopBindingDelimiter","modifiers","letNode","isInternalLoopBindingDelimiter","symbolsString","isUnless","condition","thenExpression","elseExpression","unless","cond","valueExpression","caseExpression","exportToken","stringToSymbolNode","backslash","singleQuote","normalChar","isNumberReservedSymbol","numberString","stringToken","doubleQuote","newline","tab","carriageReturn","backspace","formFeed","parseRegexpShorthand","endStringPosition","lastIndexOf","regexpString","optionsString","optionsNode","litsCommands","AutoCompleter","originalProgram","prefixProgram","suffixProgram","searchString","suggestions","lits","originalPosition","partialProgram","lastToken","tokenize","generateSuggestions","getNextSuggestion","getAutoCompleteSuggestionResult","getNextSuggestionSymbol","getPreviousSuggestion","getPreviousSuggestionSymbol","suggestion","program","suggestionIndex","getSuggestions","getSearchString","generateWithPredicate","blacklist","startsWithCaseSensitive","startsWithCaseInsensitive","includesCaseSensitive","includesCaseInsensitive","shouldInclude","localeCompare","Cache","cache","firstEntry","lastEntry","_size","maxSize","getContent","size","clear","set","newEntry","nextEntry","dropFirstEntry","Lits","astCache","astCacheSize","debug","config","initialCache","cacheEntry","nsList","ns","getRuntimeInfo","run","generateAst","programOrAst","tokenizeParams","createSourceCodeInfo","tokenDescriptor","minify","hasDebugData","transformSymbols","transformer","tokenStram","transformSymbolTokens","untokenize","apply","fnParams","generateApplyFunctionCall","fnName","paramsString","cachedAst","getAutoCompleter","asLitsFunction","asNativeJsFunction","asUserDefinedFunction","exports","isBuiltinFunction","isLitsError"],"mappings":"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"}