basedpl 0.1.74__tar.gz → 0.1.75__tar.gz

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 (485) hide show
  1. {basedpl-0.1.74 → basedpl-0.1.75}/Cargo.lock +9 -9
  2. {basedpl-0.1.74 → basedpl-0.1.75}/Cargo.toml +3 -3
  3. {basedpl-0.1.74 → basedpl-0.1.75}/DEV.md +2 -2
  4. {basedpl-0.1.74 → basedpl-0.1.75}/PKG-INFO +4 -4
  5. {basedpl-0.1.74 → basedpl-0.1.75}/README.md +3 -3
  6. {basedpl-0.1.74 → basedpl-0.1.75}/lib/array.bpl +50 -50
  7. {basedpl-0.1.74 → basedpl-0.1.75}/lib/dyalog.bpl +249 -249
  8. {basedpl-0.1.74 → basedpl-0.1.75}/lib/graph.bpl +37 -37
  9. {basedpl-0.1.74 → basedpl-0.1.75}/lib/numeric.bpl +71 -71
  10. {basedpl-0.1.74 → basedpl-0.1.75}/lib/power.bpl +3 -3
  11. {basedpl-0.1.74 → basedpl-0.1.75}/lib/regex.bpl +2 -2
  12. {basedpl-0.1.74 → basedpl-0.1.75}/lib/string.bpl +43 -43
  13. {basedpl-0.1.74 → basedpl-0.1.75}/lib/tree.bpl +55 -55
  14. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/evaluation.qmd +1 -0
  15. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/attractor.bpl +1 -1
  16. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/boids.bpl +1 -1
  17. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/flow.bpl +1 -1
  18. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/reaction.bpl +1 -1
  19. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/getting-started.ipynb +14 -14
  20. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/at.qmd +1 -1
  21. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/diamond-underbar.qmd +1 -1
  22. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/lamp.qmd +1 -1
  23. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/index.ipynb +3 -3
  24. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/indexing.ipynb +1 -1
  25. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/llms.txt +5 -5
  26. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/numbers.qmd +16 -5
  27. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/05_searching-indexing.ipynb +2 -2
  28. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/style.qmd +1 -1
  29. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/float.qmd +5 -2
  30. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/prefs.qmd +3 -2
  31. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/bpltests.py +19 -14
  32. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/worker.py +27 -7
  33. {basedpl-0.1.74 → basedpl-0.1.75}/src/array/storage.rs +4 -0
  34. {basedpl-0.1.74 → basedpl-0.1.75}/src/array.rs +18 -2
  35. {basedpl-0.1.74 → basedpl-0.1.75}/src/batch.rs +10 -0
  36. {basedpl-0.1.74 → basedpl-0.1.75}/src/display.rs +4 -2
  37. {basedpl-0.1.74 → basedpl-0.1.75}/src/element.rs +1 -1
  38. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/idioms.rs +3 -2
  39. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/operators.rs +8 -0
  40. {basedpl-0.1.74 → basedpl-0.1.75}/src/fusion.rs +40 -14
  41. {basedpl-0.1.74 → basedpl-0.1.75}/src/number.rs +26 -5
  42. {basedpl-0.1.74 → basedpl-0.1.75}/src/number_theory.rs +4 -2
  43. {basedpl-0.1.74 → basedpl-0.1.75}/src/pervasive.rs +8 -4
  44. {basedpl-0.1.74 → basedpl-0.1.75}/src/polynomial.rs +4 -3
  45. {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/indexing.rs +2 -1
  46. {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/numeric.rs +32 -23
  47. {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/search.rs +32 -22
  48. {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/structural.rs +4 -2
  49. {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive.rs +57 -39
  50. {basedpl-0.1.74 → basedpl-0.1.75}/src/search.rs +31 -3
  51. {basedpl-0.1.74 → basedpl-0.1.75}/src/settings.rs +6 -1
  52. {basedpl-0.1.74 → basedpl-0.1.75}/src/syntax.rs +3 -2
  53. {basedpl-0.1.74 → basedpl-0.1.75}/src/timing.rs +5 -4
  54. {basedpl-0.1.74 → basedpl-0.1.75}/tests/instructions.txt +7 -7
  55. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/aplcart.bpl +59 -59
  56. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/april.bpl +65 -65
  57. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/core.bpl +48 -19
  58. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/lib.bpl +3 -3
  59. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/ngn.bpl +2 -2
  60. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/static-int32.bpl +4 -0
  61. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/static.bpl +5 -5
  62. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/splay.bpl +1 -1
  63. {basedpl-0.1.74 → basedpl-0.1.75}/tests/settings.rs +1 -1
  64. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/README.md +1 -1
  65. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/arrays.bpl +10 -10
  66. basedpl-0.1.75/tests/speed/calls.bpl +10 -0
  67. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/maps.bpl +2 -2
  68. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/structure.bpl +5 -5
  69. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/tables.bpl +1 -1
  70. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed.rs +1 -1
  71. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_basic.py +2 -2
  72. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_worker.py +2 -0
  73. basedpl-0.1.74/tests/speed/calls.bpl +0 -10
  74. {basedpl-0.1.74 → basedpl-0.1.75}/.cargo/config.toml +0 -0
  75. {basedpl-0.1.74 → basedpl-0.1.75}/.gitattributes +0 -0
  76. {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/ci.yml +0 -0
  77. {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/docs.yml +0 -0
  78. {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/speed.yml +0 -0
  79. {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/test.yml +0 -0
  80. {basedpl-0.1.74 → basedpl-0.1.75}/.gitignore +0 -0
  81. {basedpl-0.1.74 → basedpl-0.1.75}/CONTRIBUTING.md +0 -0
  82. {basedpl-0.1.74 → basedpl-0.1.75}/LICENSE +0 -0
  83. {basedpl-0.1.74 → basedpl-0.1.75}/_config.yml +0 -0
  84. {basedpl-0.1.74 → basedpl-0.1.75}/_layouts/default.html +0 -0
  85. {basedpl-0.1.74 → basedpl-0.1.75}/build.rs +0 -0
  86. {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.tmbundle/Syntaxes/bpl.tmLanguage.json +0 -0
  87. {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.tmbundle/Syntaxes/hpl.tmLanguage.json +0 -0
  88. {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.tmbundle/info.plist +0 -0
  89. {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.xml +0 -0
  90. {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/README.md +0 -0
  91. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Info.plist +0 -0
  92. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Resources/BasedPL-de.icns +0 -0
  93. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Resources/BasedPL-de.keylayout +0 -0
  94. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
  95. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/version.plist +0 -0
  96. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.txt +0 -0
  97. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Info.plist +0 -0
  98. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Resources/BasedPL-es.icns +0 -0
  99. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Resources/BasedPL-es.keylayout +0 -0
  100. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
  101. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/version.plist +0 -0
  102. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.txt +0 -0
  103. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Info.plist +0 -0
  104. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Resources/BasedPL-fr.icns +0 -0
  105. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Resources/BasedPL-fr.keylayout +0 -0
  106. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
  107. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/version.plist +0 -0
  108. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.txt +0 -0
  109. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Info.plist +0 -0
  110. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Resources/BasedPL-uk.icns +0 -0
  111. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Resources/BasedPL-uk.keylayout +0 -0
  112. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
  113. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/version.plist +0 -0
  114. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.txt +0 -0
  115. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Info.plist +0 -0
  116. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Resources/BasedPL-us.icns +0 -0
  117. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Resources/BasedPL-us.keylayout +0 -0
  118. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
  119. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/version.plist +0 -0
  120. {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.txt +0 -0
  121. {basedpl-0.1.74 → basedpl-0.1.75}/editors/vim/ftdetect/bpl.vim +0 -0
  122. {basedpl-0.1.74 → basedpl-0.1.75}/editors/vim/syntax/bpl.vim +0 -0
  123. {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/README.md +0 -0
  124. {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/build.ps1 +0 -0
  125. {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/install.ps1 +0 -0
  126. {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/keyboard.c +0 -0
  127. {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/keyboard.def +0 -0
  128. {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/keyboard.rc +0 -0
  129. {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/layout.h +0 -0
  130. {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-commonmark/cell-17-output-1.svg +0 -0
  131. {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-commonmark/cell-18-output-1.svg +0 -0
  132. {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-html/cell-17-output-1.svg +0 -0
  133. {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-html/cell-18-output-1.svg +0 -0
  134. {basedpl-0.1.74 → basedpl-0.1.75}/lib/LICENSE-april +0 -0
  135. {basedpl-0.1.74 → basedpl-0.1.75}/lib/README.md +0 -0
  136. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/.gitignore +0 -0
  137. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/_quarto.yml +0 -0
  138. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/arrays.ipynb +0 -0
  139. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/assignment.ipynb +0 -0
  140. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/bpl.xml +0 -0
  141. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/bqn.xml +0 -0
  142. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/bracket-types.ipynb +0 -0
  143. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/cli.qmd +0 -0
  144. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/comparison.qmd +0 -0
  145. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/data.ipynb +0 -0
  146. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/dfns.ipynb +0 -0
  147. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/distributions.ipynb +0 -0
  148. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/driver.js +0 -0
  149. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/dyalog.ipynb +0 -0
  150. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/dyalog.xml +0 -0
  151. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/LICENSE-SAX2 +0 -0
  152. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/README.md +0 -0
  153. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/SAX2B.ttf +0 -0
  154. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/SAX2B.woff2 +0 -0
  155. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts.css +0 -0
  156. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/dragon.bpl +0 -0
  157. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/mandelbrot.bpl +0 -0
  158. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/mandelbrot32.bpl +0 -0
  159. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/orbits.bpl +0 -0
  160. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/phyllotaxis.bpl +0 -0
  161. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/prefs.bpl +0 -0
  162. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery.qmd +0 -0
  163. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/_metadata.yml +0 -0
  164. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/alpha-underbar.qmd +0 -0
  165. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/alpha.qmd +0 -0
  166. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/backslash-bar.qmd +0 -0
  167. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/backslash.qmd +0 -0
  168. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/braces.qmd +0 -0
  169. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/brackets.qmd +0 -0
  170. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/bullet.qmd +0 -0
  171. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-backslash.qmd +0 -0
  172. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-bar.qmd +0 -0
  173. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-diaeresis.qmd +0 -0
  174. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-divide.qmd +0 -0
  175. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-slash.qmd +0 -0
  176. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-star.qmd +0 -0
  177. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-stile.qmd +0 -0
  178. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-times.qmd +0 -0
  179. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle.qmd +0 -0
  180. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/colon.qmd +0 -0
  181. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/comma-bar.qmd +0 -0
  182. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/comma.qmd +0 -0
  183. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/del-diaeresis.qmd +0 -0
  184. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/del-stile.qmd +0 -0
  185. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/del.qmd +0 -0
  186. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/delta-stile.qmd +0 -0
  187. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/diaeresis.qmd +0 -0
  188. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/diamond.qmd +0 -0
  189. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/domino.qmd +0 -0
  190. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/dot.qmd +0 -0
  191. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/down-arrow.qmd +0 -0
  192. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/down-shoe.qmd +0 -0
  193. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/down-tack.qmd +0 -0
  194. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/downstile.qmd +0 -0
  195. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/epsilon-underbar.qmd +0 -0
  196. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/epsilon.qmd +0 -0
  197. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/equal-underbar-slash.qmd +0 -0
  198. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/equal-underbar.qmd +0 -0
  199. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/equals.qmd +0 -0
  200. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/error-guard.qmd +0 -0
  201. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/exclamation.qmd +0 -0
  202. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/greater-than-or-equal.qmd +0 -0
  203. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/greater-than.qmd +0 -0
  204. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/hash.qmd +0 -0
  205. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/hydrant.qmd +0 -0
  206. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/infinity.qmd +0 -0
  207. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/inverted-question.qmd +0 -0
  208. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/iota-underbar.qmd +0 -0
  209. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/iota.qmd +0 -0
  210. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/jot-diaeresis.qmd +0 -0
  211. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/jot.qmd +0 -0
  212. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-arrow.qmd +0 -0
  213. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-shoe-underbar.qmd +0 -0
  214. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-shoe.qmd +0 -0
  215. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-tack.qmd +0 -0
  216. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-tail-arrow.qmd +0 -0
  217. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/less-than-or-equal.qmd +0 -0
  218. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/less-than.qmd +0 -0
  219. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/minus.qmd +0 -0
  220. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/not-equals.qmd +0 -0
  221. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/obelus.qmd +0 -0
  222. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/omega-underbar.qmd +0 -0
  223. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/omega.qmd +0 -0
  224. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/overbar.qmd +0 -0
  225. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/parentheses.qmd +0 -0
  226. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/partial.qmd +0 -0
  227. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/pi.qmd +0 -0
  228. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/plus.qmd +0 -0
  229. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-colon.qmd +0 -0
  230. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-diamond.qmd +0 -0
  231. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-equal.qmd +0 -0
  232. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-jot.qmd +0 -0
  233. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad.qmd +0 -0
  234. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/question.qmd +0 -0
  235. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quote.qmd +0 -0
  236. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/radical.qmd +0 -0
  237. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/rho.qmd +0 -0
  238. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-arrow-from-bar.qmd +0 -0
  239. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-left-arrows.qmd +0 -0
  240. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-shoe.qmd +0 -0
  241. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-tack.qmd +0 -0
  242. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-tail-arrow.qmd +0 -0
  243. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/slash-bar.qmd +0 -0
  244. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/slash.qmd +0 -0
  245. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/squad.qmd +0 -0
  246. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/star-diaeresis.qmd +0 -0
  247. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/star.qmd +0 -0
  248. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/stile-tilde.qmd +0 -0
  249. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/stile.qmd +0 -0
  250. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/superscript-b.qmd +0 -0
  251. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/thorn.qmd +0 -0
  252. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/tilde-diaeresis.qmd +0 -0
  253. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/tilde.qmd +0 -0
  254. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/times.qmd +0 -0
  255. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-arrow.qmd +0 -0
  256. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-down-arrow.qmd +0 -0
  257. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-shoe.qmd +0 -0
  258. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-tack.qmd +0 -0
  259. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/upstile.qmd +0 -0
  260. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/vee-bar.qmd +0 -0
  261. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/vee.qmd +0 -0
  262. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/wedge-bar.qmd +0 -0
  263. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/wedge.qmd +0 -0
  264. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/zilde.qmd +0 -0
  265. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs-study.qmd +0 -0
  266. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs.qmd +0 -0
  267. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/hanzi-notation-zh.ipynb +0 -0
  268. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/hanzi-notation.ipynb +0 -0
  269. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/hpl.xml +0 -0
  270. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/introspection.ipynb +0 -0
  271. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/keyboard.qmd +0 -0
  272. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/keyed.ipynb +0 -0
  273. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/magics.ipynb +0 -0
  274. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/mathish.qmd +0 -0
  275. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/modules.qmd +0 -0
  276. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/nbdev.yml +0 -0
  277. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/notebooks.ipynb +0 -0
  278. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/overview.ipynb +0 -0
  279. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/papers/aplwiki-arrays.md +0 -0
  280. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/papers/brickman-depth-1-scalars.md +0 -0
  281. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/papers/mercer-based-system.md +0 -0
  282. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/bpl.js +0 -0
  283. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/gallery.js +0 -0
  284. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/hpl.tmLanguage.json +0 -0
  285. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/monaco-worker.js +0 -0
  286. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/page.js +0 -0
  287. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/worker.js +0 -0
  288. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground.qmd +0 -0
  289. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/plot.ipynb +0 -0
  290. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/principles.ipynb +0 -0
  291. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/processes.qmd +0 -0
  292. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/puppy.jpg +0 -0
  293. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/python.ipynb +0 -0
  294. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/regex.ipynb +0 -0
  295. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/repl.qmd +0 -0
  296. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/scripts.ipynb +0 -0
  297. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/sidebar.yml +0 -0
  298. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/strings.ipynb +0 -0
  299. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/01_basics.ipynb +0 -0
  300. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/02_functions.ipynb +0 -0
  301. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/03_operators.ipynb +0 -0
  302. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/04_nested-arrays.ipynb +0 -0
  303. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/06_rearranging-arrays.ipynb +0 -0
  304. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/07_numerical-tools.ipynb +0 -0
  305. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/styles.css +0 -0
  306. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/syntax.qmd +0 -0
  307. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/_metadata.yml +0 -0
  308. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/c.qmd +0 -0
  309. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/canvas.qmd +0 -0
  310. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/constants.qmd +0 -0
  311. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/copy.qmd +0 -0
  312. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/csv.qmd +0 -0
  313. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/date.qmd +0 -0
  314. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/decompose.qmd +0 -0
  315. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/deflate.qmd +0 -0
  316. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/delay.qmd +0 -0
  317. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/detach.qmd +0 -0
  318. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/distribution.qmd +0 -0
  319. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/edge.qmd +0 -0
  320. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/element.qmd +0 -0
  321. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/ex.qmd +0 -0
  322. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/explain.qmd +0 -0
  323. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/fetch.qmd +0 -0
  324. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/hash.qmd +0 -0
  325. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/host.qmd +0 -0
  326. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/image.qmd +0 -0
  327. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/index.qmd +0 -0
  328. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/js.qmd +0 -0
  329. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/json.qmd +0 -0
  330. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/literal.qmd +0 -0
  331. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/load.qmd +0 -0
  332. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/memory.qmd +0 -0
  333. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/metadata.qmd +0 -0
  334. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/mime.qmd +0 -0
  335. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/mkdir.qmd +0 -0
  336. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nc.qmd +0 -0
  337. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nget.qmd +0 -0
  338. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nl.qmd +0 -0
  339. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/normalize.qmd +0 -0
  340. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nput.qmd +0 -0
  341. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/path.qmd +0 -0
  342. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/plot.qmd +0 -0
  343. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/r.qmd +0 -0
  344. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/rand.qmd +0 -0
  345. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/readdir.qmd +0 -0
  346. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/remove.qmd +0 -0
  347. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/rename.qmd +0 -0
  348. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/signal.qmd +0 -0
  349. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/src.qmd +0 -0
  350. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/storage.qmd +0 -0
  351. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/svg.qmd +0 -0
  352. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/time.qmd +0 -0
  353. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/ucs.qmd +0 -0
  354. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/uuid.qmd +0 -0
  355. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/vfi.qmd +0 -0
  356. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/xml.qmd +0 -0
  357. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system-functions.qmd +0 -0
  358. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/terms.qmd +0 -0
  359. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/web.ipynb +0 -0
  360. {basedpl-0.1.74 → basedpl-0.1.75}/nbs/xml.ipynb +0 -0
  361. {basedpl-0.1.74 → basedpl-0.1.75}/package-lock.json +0 -0
  362. {basedpl-0.1.74 → basedpl-0.1.75}/package.json +0 -0
  363. {basedpl-0.1.74 → basedpl-0.1.75}/provenance/README.md +0 -0
  364. {basedpl-0.1.74 → basedpl-0.1.75}/provenance/aplcart.jsonl +0 -0
  365. {basedpl-0.1.74 → basedpl-0.1.75}/provenance/april.jsonl +0 -0
  366. {basedpl-0.1.74 → basedpl-0.1.75}/provenance/bqn.jsonl +0 -0
  367. {basedpl-0.1.74 → basedpl-0.1.75}/provenance/core.jsonl +0 -0
  368. {basedpl-0.1.74 → basedpl-0.1.75}/provenance/dyalog.jsonl +0 -0
  369. {basedpl-0.1.74 → basedpl-0.1.75}/provenance/ngn.jsonl +0 -0
  370. {basedpl-0.1.74 → basedpl-0.1.75}/py/Cargo.toml +0 -0
  371. {basedpl-0.1.74 → basedpl-0.1.75}/py/build.rs +0 -0
  372. {basedpl-0.1.74 → basedpl-0.1.75}/py/src/lib.rs +0 -0
  373. {basedpl-0.1.74 → basedpl-0.1.75}/pyproject.toml +0 -0
  374. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/__init__.py +0 -0
  375. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/_modidx.py +0 -0
  376. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/bpl.tmLanguage.json +0 -0
  377. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/dyalog.py +0 -0
  378. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/editors.py +0 -0
  379. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/font.py +0 -0
  380. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/fonts.css +0 -0
  381. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/functions.py +0 -0
  382. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/hpl.tmLanguage.json +0 -0
  383. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/input.js +0 -0
  384. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/ipython.py +0 -0
  385. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/keyboards.json +0 -0
  386. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/keyboards.py +0 -0
  387. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/layout.json +0 -0
  388. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/lb.js +0 -0
  389. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/notebook_runner.py +0 -0
  390. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/notebooks.py +0 -0
  391. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/printing.py +0 -0
  392. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/reference.py +0 -0
  393. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/syntax.py +0 -0
  394. {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/windows_keyboard.py +0 -0
  395. {basedpl-0.1.74 → basedpl-0.1.75}/rustfmt.toml +0 -0
  396. {basedpl-0.1.74 → basedpl-0.1.75}/scripts/install-macos.sh +0 -0
  397. {basedpl-0.1.74 → basedpl-0.1.75}/scripts/prep.py +0 -0
  398. {basedpl-0.1.74 → basedpl-0.1.75}/src/agreement.rs +0 -0
  399. {basedpl-0.1.74 → basedpl-0.1.75}/src/array/text.rs +0 -0
  400. {basedpl-0.1.74 → basedpl-0.1.75}/src/canvas.js +0 -0
  401. {basedpl-0.1.74 → basedpl-0.1.75}/src/canvas.rs +0 -0
  402. {basedpl-0.1.74 → basedpl-0.1.75}/src/csv.rs +0 -0
  403. {basedpl-0.1.74 → basedpl-0.1.75}/src/data.rs +0 -0
  404. {basedpl-0.1.74 → basedpl-0.1.75}/src/date.rs +0 -0
  405. {basedpl-0.1.74 → basedpl-0.1.75}/src/derivative.rs +0 -0
  406. {basedpl-0.1.74 → basedpl-0.1.75}/src/distribution.rs +0 -0
  407. {basedpl-0.1.74 → basedpl-0.1.75}/src/error.rs +0 -0
  408. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/assign.rs +0 -0
  409. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/binder.rs +0 -0
  410. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/bindings.rs +0 -0
  411. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/dissect.rs +0 -0
  412. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/session.rs +0 -0
  413. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/tree.rs +0 -0
  414. {basedpl-0.1.74 → basedpl-0.1.75}/src/eval.rs +0 -0
  415. {basedpl-0.1.74 → basedpl-0.1.75}/src/execution.rs +0 -0
  416. {basedpl-0.1.74 → basedpl-0.1.75}/src/explain.rs +0 -0
  417. {basedpl-0.1.74 → basedpl-0.1.75}/src/files.rs +0 -0
  418. {basedpl-0.1.74 → basedpl-0.1.75}/src/fusion/blocks.rs +0 -0
  419. {basedpl-0.1.74 → basedpl-0.1.75}/src/host.rs +0 -0
  420. {basedpl-0.1.74 → basedpl-0.1.75}/src/host_web.rs +0 -0
  421. {basedpl-0.1.74 → basedpl-0.1.75}/src/image/codecs.rs +0 -0
  422. {basedpl-0.1.74 → basedpl-0.1.75}/src/image/imageio.rs +0 -0
  423. {basedpl-0.1.74 → basedpl-0.1.75}/src/image.rs +0 -0
  424. {basedpl-0.1.74 → basedpl-0.1.75}/src/inspection.rs +0 -0
  425. {basedpl-0.1.74 → basedpl-0.1.75}/src/js.rs +0 -0
  426. {basedpl-0.1.74 → basedpl-0.1.75}/src/json.rs +0 -0
  427. {basedpl-0.1.74 → basedpl-0.1.75}/src/keyed.rs +0 -0
  428. {basedpl-0.1.74 → basedpl-0.1.75}/src/lib.rs +0 -0
  429. {basedpl-0.1.74 → basedpl-0.1.75}/src/linear.rs +0 -0
  430. {basedpl-0.1.74 → basedpl-0.1.75}/src/name.rs +0 -0
  431. {basedpl-0.1.74 → basedpl-0.1.75}/src/optimize.rs +0 -0
  432. {basedpl-0.1.74 → basedpl-0.1.75}/src/plot.rs +0 -0
  433. {basedpl-0.1.74 → basedpl-0.1.75}/src/protocol.rs +0 -0
  434. {basedpl-0.1.74 → basedpl-0.1.75}/src/reference.rs +0 -0
  435. {basedpl-0.1.74 → basedpl-0.1.75}/src/regex.rs +0 -0
  436. {basedpl-0.1.74 → basedpl-0.1.75}/src/selection.rs +0 -0
  437. {basedpl-0.1.74 → basedpl-0.1.75}/src/symbols.rs +0 -0
  438. {basedpl-0.1.74 → basedpl-0.1.75}/src/system.rs +0 -0
  439. {basedpl-0.1.74 → basedpl-0.1.75}/src/transform.rs +0 -0
  440. {basedpl-0.1.74 → basedpl-0.1.75}/src/xml.rs +0 -0
  441. {basedpl-0.1.74 → basedpl-0.1.75}/tests/common/mod.rs +0 -0
  442. {basedpl-0.1.74 → basedpl-0.1.75}/tests/conftest.py +0 -0
  443. {basedpl-0.1.74 → basedpl-0.1.75}/tests/core.rs +0 -0
  444. {basedpl-0.1.74 → basedpl-0.1.75}/tests/derivatives.rs +0 -0
  445. {basedpl-0.1.74 → basedpl-0.1.75}/tests/explain.rs +0 -0
  446. {basedpl-0.1.74 → basedpl-0.1.75}/tests/highlighting.mjs +0 -0
  447. {basedpl-0.1.74 → basedpl-0.1.75}/tests/input.mjs +0 -0
  448. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-aplcart +0 -0
  449. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-april +0 -0
  450. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-bqn +0 -0
  451. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-bqncrate +0 -0
  452. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-dyalog +0 -0
  453. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-ngn +0 -0
  454. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/README.md +0 -0
  455. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/bqn.bpl +0 -0
  456. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/distributions.bpl +0 -0
  457. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/dyalog.bpl +0 -0
  458. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/graphics.bpl +0 -0
  459. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/regex.bpl +0 -0
  460. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/april.bpl +0 -0
  461. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/avl.bpl +0 -0
  462. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/redblack.bpl +0 -0
  463. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/sbst.bpl +0 -0
  464. {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference.rs +0 -0
  465. {basedpl-0.1.74 → basedpl-0.1.75}/tests/scaling.rs +0 -0
  466. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/images.bpl +0 -0
  467. {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/models.bpl +0 -0
  468. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_api.py +0 -0
  469. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_bpltests.py +0 -0
  470. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_glyphs.py +0 -0
  471. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_graphics.py +0 -0
  472. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_instructions.py +0 -0
  473. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_ipython.py +0 -0
  474. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_kernel.py +0 -0
  475. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_keylayout.py +0 -0
  476. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_notebooks.py +0 -0
  477. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_reference.py +0 -0
  478. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_repl.py +0 -0
  479. {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_windows_keyboard.py +0 -0
  480. {basedpl-0.1.74 → basedpl-0.1.75}/tests/units.rs +0 -0
  481. {basedpl-0.1.74 → basedpl-0.1.75}/tests/wasm-pkg.mjs +0 -0
  482. {basedpl-0.1.74 → basedpl-0.1.75}/tests/wasm-speed.mjs +0 -0
  483. {basedpl-0.1.74 → basedpl-0.1.75}/tests/wasm.mjs +0 -0
  484. {basedpl-0.1.74 → basedpl-0.1.75}/tests/windows_keyboard.c +0 -0
  485. {basedpl-0.1.74 → basedpl-0.1.75}/wheel/data/share/jupyter/kernels/bpl/kernel.json +0 -0
@@ -93,7 +93,7 @@ checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5"
93
93
 
94
94
  [[package]]
95
95
  name = "basedpl"
96
- version = "0.1.74"
96
+ version = "0.1.75"
97
97
  dependencies = [
98
98
  "base64 0.23.1",
99
99
  "bytemuck",
@@ -137,7 +137,7 @@ dependencies = [
137
137
 
138
138
  [[package]]
139
139
  name = "basedpl-cli"
140
- version = "0.1.74"
140
+ version = "0.1.75"
141
141
  dependencies = [
142
142
  "async-trait",
143
143
  "basedpl",
@@ -151,7 +151,7 @@ dependencies = [
151
151
 
152
152
  [[package]]
153
153
  name = "basedpl-py"
154
- version = "0.1.74"
154
+ version = "0.1.75"
155
155
  dependencies = [
156
156
  "basedpl",
157
157
  "num-bigint",
@@ -166,7 +166,7 @@ dependencies = [
166
166
 
167
167
  [[package]]
168
168
  name = "basedpl-wasm"
169
- version = "0.1.74"
169
+ version = "0.1.75"
170
170
  dependencies = [
171
171
  "basedpl",
172
172
  "js-sys",
@@ -1415,9 +1415,9 @@ dependencies = [
1415
1415
 
1416
1416
  [[package]]
1417
1417
  name = "rustymath"
1418
- version = "0.1.49"
1418
+ version = "0.1.50"
1419
1419
  source = "registry+https://github.com/rust-lang/crates.io-index"
1420
- checksum = "e9aedcee908443b05f25913ad641d665c8388e8de7aca5f5aa16d10eeffec475"
1420
+ checksum = "335ad6719521b80cd2d57195ca4ee58d7997a8190121ff9adeff263e75fa8b0a"
1421
1421
  dependencies = [
1422
1422
  "foldhash",
1423
1423
  "half",
@@ -1436,9 +1436,9 @@ dependencies = [
1436
1436
 
1437
1437
  [[package]]
1438
1438
  name = "rustymath-buffer"
1439
- version = "0.1.49"
1439
+ version = "0.1.50"
1440
1440
  source = "registry+https://github.com/rust-lang/crates.io-index"
1441
- checksum = "f4c19ddeaf8f211645269dfb77fd01c26b4a4e268f150ea473677fee942c7ee1"
1441
+ checksum = "2f2147d26a5e6ac6ac4af4eae28d572fb8c285074f2f5058c2d04b779884c371"
1442
1442
  dependencies = [
1443
1443
  "pyo3",
1444
1444
  "rustymath",
@@ -2088,7 +2088,7 @@ checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc"
2088
2088
 
2089
2089
  [[package]]
2090
2090
  name = "xtask"
2091
- version = "0.1.74"
2091
+ version = "0.1.75"
2092
2092
  dependencies = [
2093
2093
  "anyhow",
2094
2094
  "rustymath",
@@ -5,14 +5,14 @@ members = ["py"]
5
5
  join_comments = true
6
6
 
7
7
  [workspace.package]
8
- version = "0.1.74"
8
+ version = "0.1.75"
9
9
  edition = "2024"
10
10
  rust-version = "1.98"
11
11
  license = "Apache-2.0"
12
12
 
13
13
  [workspace.dependencies]
14
- rustymath = { version = ">=0.1.49, <1", default-features = false }
15
- rustymath-buffer = ">=0.1.49, <1"
14
+ rustymath = { version = ">=0.1.50, <1", default-features = false }
15
+ rustymath-buffer = ">=0.1.50, <1"
16
16
  pyo3 = ">=0.29.2, <1"
17
17
  pyo3-build-config = ">=0.29.2, <1"
18
18
 
@@ -24,7 +24,7 @@ Build nothing else without discussion: no scratch crates, alternate target direc
24
24
 
25
25
  When another agent's unfinished edits stop the shared tree compiling, run `cargo wait` with the Bash tool's `run_in_background`, then build after it exits. `cargo wait` comes from `fastws-cli`, as `cargo develop` does. It runs `cargo check` on every target of the workspace each time a source file or manifest of a local package changes, rustymath's included. It exits once the tree compiles, or after 30 minutes with the remaining errors. `cargo wait --path ~/aai-ws/rustymath` waits for rustymath's own workspace, its Python extension included. Use it rather than writing a wait loop.
26
26
 
27
- An already-running Python process retains its loaded extension. In a kernel, use `from basedpl.worker import fresh; fresh(code)` to check the installed `bpl` in a fresh worker instead of restarting the kernel. A BPL error raises `BplError`. `fresh(code, bpl=PATH)` runs a saved copy of `bpl`, such as the baseline described below. Check one expression and read its result before building on it. `basedpl.bpltests.check_file` and `check_page` check reference files and documentation through the worker without building Rust. With `bpl=PATH`, they check a saved copy without installing it.
27
+ An already-running Python process retains its loaded extension. In a kernel, use `from basedpl.worker import fresh; fresh(code)` to check the installed `bpl` in a fresh worker instead of restarting the kernel. A BPL error raises `BplError`. `fresh(code, bpl=PATH)` runs a saved copy of `bpl`, such as the baseline described below. A list of expressions runs each in its own fresh worker and gives one row for each, holding its output or its error. `prefs=` runs before the code in each worker, as in `fresh(cases, prefs='•prefs ["kinds":"static"]')`. Check one expression and read its result before building on it. `basedpl.bpltests.check_file` and `check_page` check reference files and documentation through the worker without building Rust. With `bpl=PATH`, they check a saved copy without installing it.
28
28
 
29
29
  Measure with `BASEDPL_COSTS=1 cargo test --test speed` or `basedpl.bpltests.time_cases(cases)`. Both count costs in copies. A copy is the time to write as many floats as the data has items, each negated, into a second buffer. `rustymath::timing::COPIES` stores the copy time of each machine that runs the speed tests, by its CPU, the item's size and the number of items, at the slower end of what that copy normally takes, for copies whose source and destination fit in cache, 64 MiB together (`CACHED_BYTES`). A copy timed beside each case varied more than 3 times on CI's runner, where the functions' own times didn't, so stored times keep that noise out of every cost. A larger copy runs at the speed of memory, which a shared runner varies by up to 2 times between runs, and the cases of that size vary with it. The test measures such a copy once in each run. It also measures a cached size with no entry once, and prints a line to add to `COPIES`. The browser build has entries of its own, for its copy under the JavaScript engine. It can't read the CPU's name, and `tests/wasm-pkg.mjs` passes it the name that Node reads. Each case's line in a log ends with its time for each item, which `logged_costs` keeps in each row, and the log has a copy line for each size of data, which it reads into its result's `copies`. Budgets are single-thread measurements. `thread_scaling()` checks multithreaded speed: it times a large product, a 512×512 SVD and Hermitian eigendecomposition, a stack of QR decompositions and a large elementwise function on one thread and on the machine's cores, and fails when one speeds up less than 1.5 times. Accelerate's GESDD and SYEVD run on one thread whatever its threading setting. On macOS, where Accelerate computes the product, the SVD and the Hermitian eigendecomposition, those three cases need only the speedups in `_ACCELERATED_LEAST`. The manual `Speed` workflow runs it. `speed_costs()` reads the cases in `tests/speed/*.bpl`. `cases=` selects expressions, `wasm=DIR` selects a browser build, `bpl=PATH` selects another native `bpl`, such as a saved copy, `native=True` times rustymath's own linear algebra, which dev builds compile in, and `prefs=` runs BPL before each section's header, such as `•prefs ["kinds":"static"]`. `logged_costs(log)` reads CI output from its text or a file. `cargo_costs(path)` runs either project's Rust speed test, and `pytest_costs(path)` runs rustymath's Python speed test.
30
30
 
@@ -180,7 +180,7 @@ Float operations compute at the wider operand width. Exact operands round to the
180
180
 
181
181
  Floats use IEEE NaN, infinity and signed zero. Comparison treats NaN as unequal; match/search treat it as one value, and grade puts it last. Exact arithmetic involving division by zero can produce those float values. Floor/ceiling retain an exact operand beside infinity. Beside NaN the language leaves their result open: NaN or the other argument, varying by platform. Their folds, scans, windows, products and repeated writes give NaN or the maximum or minimum of the items that aren't NaN, never another number, by the rule in rustymath's `Folds` doc. A loop that folds by them either passes its running result as the right argument, which `rustymath::reduce::maximum` keeps beside NaN, or folds through rustymath's `Max` and `Min`, as `Dyad::extremum` does. Monadic floor/ceiling/sign turn whole finite results into exact integers, including big integers; nonfinite results remain floats. Use `Number::float(value, width)` and explicit-width array construction outside `number.rs` instead of implicit f64 conversion.
182
182
 
183
- Under `•prefs ["kinds":"static"]`, a result's kind follows from its arguments' kinds alone, as `meta/kinds.md` describes. `Numeric` carries `kinds` and `int`. `pervasive::map` chooses a dyadic call's kind through `joined`, which applies rustymath's `DType::common` after `Numeric::kind`. Comparisons, `⌈ ⌊` and bitwise functions compute at their arguments' storage width instead, where their results are the same at every width (`pervasive::first_kind`). Atoms promote as arrays do. Python's API makes its scalar arguments weak through `Value::weakened`. The loops keep the failed results that `keeps` names: floats' NaNs, and the wrapped integers of objects that report `WRAPS`. The kernel tables choose float `⌊ ⌈ ×` and wrapping negation from `run.numeric()`. `Stored::build_at` keeps complex results complex. `Primitive::number` gives every pervasive result on numbers, as well as each step of the fold of numbers, and `statically` adjusts it. `Number::parse` keeps complex literals and checks integer literals against the `int` width.
183
+ Under `•prefs ["kinds":"static"]`, a result's kind follows from its arguments' kinds alone, as `meta/kinds.md` describes. `Numeric` carries `kinds` and `int`. Until the `float` pref sets a width, `Numeric::set` gives new floats the width the kinds give, 32 bits under static kinds and 64 under dynamic kinds (`Kinds::float_width`). Whether the pref has set one lives in `settings::float_set`, outside `Numeric`: every call builds and copies a `Numeric`, and a Boolean field there cost about 14 instructions on each primitive call and 34 on each dfn call. `pervasive::map` chooses a dyadic call's kind through `joined`, which applies rustymath's `DType::common` after `Numeric::kind`. Comparisons, `⌈ ⌊` and bitwise functions compute at their arguments' storage width instead, where their results are the same at every width (`pervasive::first_kind`). Atoms promote as arrays do. Python's API makes its scalar arguments weak through `Value::weakened`. The loops keep the failed results that `keeps` names: floats' NaNs, and the wrapped integers of objects that report `WRAPS`. The kernel tables choose float `⌊ ⌈ ×` and wrapping negation from `run.numeric()`. `Stored::build_at` keeps complex results complex. `Primitive::number` gives every pervasive result on numbers, as well as each step of the fold of numbers, and `statically` adjusts it. `Number::wrapped` and `Value::wrapped` wrap an exact integer result to the integer width, the fixed width that `Numeric::for_values` finds among a call's arguments or the `int` width under static kinds. `statically` uses them, and so do the functions that compute exactly, such as `⊥`, `⌻` and the determinant. `Number::parse` keeps complex literals and checks integer literals against the `int` width.
184
184
 
185
185
  Settings live once for the whole process, in `settings.rs`, and are read from there, not passed through functions, except where a read is slow and on a hot path. Each setting that calls and scalar operations read is an atomic: the numeric settings, the hanzi aliases, the `batch` pref, the fusion report flag and fusion's small sizes. The display settings sit behind one lock. `•prefs` writes them, the lexer writes a source's leading `•prefs` header as it reads it, and `settings::reset` restores the defaults, as `]clear` and the test harnesses do. Nothing copies, captures or restores a setting. A pending array computes under the settings in force when it computes, and a module that `•load` runs changes the settings for the whole process. Rustymath holds the thread count, the one setting that it reads itself, and `•prefs` writes it there. Each call reads the store once where it starts: `pervasive::halves`, which every `pervasive` entry point goes through, `fusion::defers` and `defer`, `Domain::of`, the lexer and `Storage::item`'s complex items. Values derived from the settings within a call stay explicit arguments. `halves` passes 16-bit floats' widened settings to its inner call. The loop structs keep them because their closures run on rustymath's worker threads. A fused graph reads the settings once when it's built at forcing, for the same reason. `Number`'s tolerance methods and `Primitive::number` take them because they run once per item. The parser's leaves take a width marker's width, and `matches_within` takes `⍣∞`'s convergence tolerance. Imports build complex numbers with `Number::complex_in_session`: Python's `_Session.array` and the JSON protocol's `request`. JavaScript values hold no complex numbers.
186
186
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basedpl
3
- Version: 0.1.74
3
+ Version: 0.1.75
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Requires-Dist: fastcore
@@ -98,10 +98,10 @@ avg 1 2 3 4
98
98
 
99
99
  2.5
100
100
 
101
- To see how these ideas express an algorithm, start from “a prime has exactly two positive divisors”. Form all remainders of 1 to 50 (`|⊗⍨↦50`), count the zeros down each column (`+⌿0=`), and find the positions (`⍸`) whose count is two. Positions count from 0. `≥` increments each position to recover its number:
101
+ To see how these ideas express an algorithm, start from “a prime has exactly two positive divisors”. Form all remainders of 1 to 50 (`|⊗⍨↦50ₓ`), count the zeros down each column (`+⌿0ₓ=`), and find the positions (`⍸`) whose count is two. Positions count from 0. `≥` increments each position to recover its number:
102
102
 
103
103
  ``` bpl
104
- ≥⍸2=+⌿0=|⊗⍨↦50
104
+ ≥⍸2ₓ=+⌿0ₓ=|⊗⍨↦50ₓ
105
105
  ```
106
106
 
107
107
  [2 3 5 7 11 13 17 19 23 29 31 37 41 43 47]ₓ
@@ -185,7 +185,7 @@ A vector of counts keeps the history: one state for each count, where count 0 is
185
185
  Under (`@`) transforms the argument, applies a function, then reverses the transformation. Scale by ten, floor, and scale back to round down to tenths:
186
186
 
187
187
  ``` bpl
188
- ⌊@ 10× 1.25 2.78
188
+ ⌊@(10×)1.25 2.78
189
189
  ```
190
190
 
191
191
  1.2 2.7
@@ -68,10 +68,10 @@ avg 1 2 3 4
68
68
 
69
69
  2.5
70
70
 
71
- To see how these ideas express an algorithm, start from “a prime has exactly two positive divisors”. Form all remainders of 1 to 50 (`|⊗⍨↦50`), count the zeros down each column (`+⌿0=`), and find the positions (`⍸`) whose count is two. Positions count from 0. `≥` increments each position to recover its number:
71
+ To see how these ideas express an algorithm, start from “a prime has exactly two positive divisors”. Form all remainders of 1 to 50 (`|⊗⍨↦50ₓ`), count the zeros down each column (`+⌿0ₓ=`), and find the positions (`⍸`) whose count is two. Positions count from 0. `≥` increments each position to recover its number:
72
72
 
73
73
  ``` bpl
74
- ≥⍸2=+⌿0=|⊗⍨↦50
74
+ ≥⍸2ₓ=+⌿0ₓ=|⊗⍨↦50ₓ
75
75
  ```
76
76
 
77
77
  [2 3 5 7 11 13 17 19 23 29 31 37 41 43 47]ₓ
@@ -155,7 +155,7 @@ A vector of counts keeps the history: one state for each count, where count 0 is
155
155
  Under (`@`) transforms the argument, applies a function, then reverses the transformation. Scale by ten, floor, and scale back to round down to tenths:
156
156
 
157
157
  ``` bpl
158
- ⌊@ 10× 1.25 2.78
158
+ ⌊@(10×)1.25 2.78
159
159
  ```
160
160
 
161
161
  1.2 2.7
@@ -39,9 +39,9 @@ format ← {t←⊃,↓⍬⍕⍵ ⋄ (¯2↑1 1,⍴t)⍴t} ⍝ Simple array as
39
39
  open ← {(1⌈⍴⍵)⍴⍵} ⍝ Exposure of null axes.
40
40
  axes ← {(-2⌈⍴⍴⍵)↑≥×⍴⍵} ⍝ Array axis types.
41
41
  char ← {⍬≡⍴⍵?'─';(↑⍵∊'¯',$d)⊃"#~"}∘⍕ ⍝ Type character of an atom.
42
- type ← {{(1=⍴⍵)⊃['+' ⍵]}∪,char¨⍵} ⍝ Type characters of an array.
42
+ type ← {{(1ₓ=⍴⍵)⊃['+' ⍵]}∪,char¨⍵} ⍝ Type characters of an array.
43
43
  deco ← {⍺←type open ⍵ ⋄ ⍺,axes ⍵} ⍝ Type and axes vector.
44
- trim ← {(~1 1⍷∧⌿⍵=' ')#⍠¯1 ⍵} ⍝ Removal of extra blank columns.
44
+ trim ← {(~$t $t⍷∧⌿⍵=' ')#⍠¯1 ⍵} ⍝ Removal of extra blank columns.
45
45
 
46
46
  ⍝ From http://dfns.dyalog.com/c_disp.htm
47
47
 
@@ -49,10 +49,10 @@ disp ← { ⍺←⍬ ⍝ Boxed sketch of nested array.
49
49
  [dec ctd]←2↑⍺ ⍝ 1:decorated, 1:centred.
50
50
  box←{ ⍝ Recursive boxing of nested array.
51
51
  isor ⍵?format⊂⍵;
52
- 1=≡,⍵?dec open format dec open ⍵;
52
+ 1ₓ=≡,⍵?dec open format dec open ⍵;
53
53
  mat←matr 1# dec open ⍵ ⍝ matrix of opened subarrays.
54
54
  [r c]←×⍴mat ⍝ non-null rows/cols.
55
- dec<0∊[r c]?c#⍠¯1 r# ∇ 1 open mat; ⍝ undecorated null: empty result.
55
+ dec<0ₓ∊[r c]?c#⍠¯1 r# ∇ 1 open mat; ⍝ undecorated null: empty result.
56
56
  subs←aligned ∇¨mat ⍝ aligned boxed subarrays.
57
57
  (≢⍴⍵)gaps ⍵ plane subs ⍝ collection into single plane.
58
58
  }
@@ -64,21 +64,21 @@ disp ← { ⍺←⍬ ⍝ Boxed sketch of nested array.
64
64
  v⊖¨h⌽¨sizes↑¨⍵ ⍝ centred aligned subarrays.
65
65
  }
66
66
  gaps←{ ⍝ Gap-separated sub-planes.
67
- ⍺≤2?⍵; ⍝ lowish rank: done.
67
+ ⍺≤2ₓ?⍵; ⍝ lowish rank: done.
68
68
  subs←(≤⍺)∇¨⍵ ⍝ sub-hyperplanes.
69
69
  width←↑⌽⍴↑subs
70
70
  fill←([⍺ width]-3 0)⍴' ' ⍝ inter-plane gap.
71
71
  ⊃{⍺⍪fill⍪⍵}/ 1 open subs
72
72
  }
73
73
  plane←{ ⍝ Boxed rank-2 plane.
74
- 2<⍴⍴⍺?⍺ join ⍵; ⍝ gap-separated sub-planes.
74
+ 2ₓ<⍴⍴⍺?⍺ join ⍵; ⍝ gap-separated sub-planes.
75
75
  odec←(dec shape ⍺)outer ⍵ ⍝ outer type and shape decoration.
76
76
  idec←inner ⍺ ⍝ inner type and shape decorations.
77
77
  (odec,idec)collect ⍵ ⍝ collected, formatted subarrays.
78
78
  }
79
79
  join←{ ⍝ Join of gap-separated sub-planes.
80
- sep←(≢⍵)÷1⌈≢⍺ ⍝ sub plane separation.
81
- split←(0=sep|⍳≢⍵)⊂⍠0 ⍵
80
+ sep←(≢⍵)÷1ₓ⌈≢⍺ ⍝ sub plane separation.
81
+ split←(0ₓ=sep|⍳≢⍵)⊂⍠0 ⍵
82
82
  (⊂⍤¯1 ⍺)plane¨split ⍝ sub-plane join.
83
83
  }
84
84
  outer←{ ⍝ Outer decoration.
@@ -112,14 +112,14 @@ disp ← { ⍺←⍬ ⍝ Boxed sketch of nested array.
112
112
  dec<≡⍵?'─'; ⍝ nested: '─'
113
113
  isor ⍵?'∇'; ⍝ ⎕or: '∇'
114
114
  sst←{ ⍝ atom type.
115
- 0=dec×⍴⍴⍵?'─'; ⍝ undecorated or atom ⍕⍵: char,
115
+ 0ₓ=dec×⍴⍴⍵?'─'; ⍝ undecorated or atom ⍕⍵: char,
116
116
  (↑⍵∊'¯',$d)⊃"#~"
117
117
  }∘⍕ ⍝ ⍕ distinguishes type of atom.
118
- 0=≡⍵?sst ⍵; ⍝ atom: type.
119
- {(1=⍴⍵)⊃['+' ⍵]}∪,sst¨(dec open ⍵)
118
+ 0ₓ=≡⍵?sst ⍵; ⍝ atom: type.
119
+ {(1ₓ=⍴⍵)⊃['+' ⍵]}∪,sst¨(dec open ⍵)
120
120
  }
121
121
  shape←{
122
- dec≤0=⍴⍴⍵?⍺#¨"│─"; ⍝ no decoration or unit.
122
+ dec≤0ₓ=⍴⍴⍵?⍺#¨"│─"; ⍝ no decoration or unit.
123
123
  cols←(ׯ1↑⍴⍵)⊃"⊖→"
124
124
  rsig←(××/¯1↓⍴⍵)⊃"⌽↓"
125
125
  rows←(≤3⌊⍴⍴⍵)⊃['│' rsig '⍒']
@@ -128,10 +128,10 @@ disp ← { ⍺←⍬ ⍝ Boxed sketch of nested array.
128
128
  matr←{⊃,↓⍵}
129
129
  sepr←{+/¨1⊂⍠¯1 ⊃⍵}
130
130
  open←{(⍺⌈⍴⍵)↑⍵}
131
- isor←{1 ⍬≡[≡⍵ ⍴⍵]} ⍝ is ⎕or of object?
132
- glue←{0=⍴⍵?⍵;⍺{⍺,⍶,⍵}/⍵}
131
+ isor←{1ₓ ⍬≡[≡⍵ ⍴⍵]} ⍝ is ⎕or of object?
132
+ glue←{0ₓ=⍴⍵?⍵;⍺{⍺,⍶,⍵}/⍵}
133
133
  isor ⍵?format⊂⍵;
134
- 1=≡,⍵?format ⍵;
134
+ 1ₓ=≡,⍵?format ⍵;
135
135
  box ⍵ ⍝ recursive boxing of array.
136
136
  }
137
137
 
@@ -148,9 +148,9 @@ display ← { ⍝ Boxed display of array.
148
148
  lft,(top⍪⍵⍪bot),rgt ⍝ fully boxed array
149
149
  }
150
150
  line←{(""≡0⍴⍵)⊃" -"}
151
- 0=≡⍵?' '⍪(open format ⍵)⍪line ⍵;
152
- 1 ⍬≡[≡⍵ ⍴⍵]?'∇' 0 0 box format ⍵;
153
- 1=≡⍵?(deco ⍵)box open format open ⍵;
151
+ 0ₓ=≡⍵?' '⍪(open format ⍵)⍪line ⍵;
152
+ 1ₓ ⍬≡[≡⍵ ⍴⍵]?'∇' 0 0 box format ⍵;
153
+ 1ₓ=≡⍵?(deco ⍵)box open format open ⍵;
154
154
  ('∊'deco ⍵)box trim format ∇¨open ⍵
155
155
  }
156
156
 
@@ -169,11 +169,11 @@ displays ← { ⍝ Boxed display of array.
169
169
  lft←⍉'┌',(⊃lax),'└'
170
170
  lft,(top⍪w⍪bot),rgt ⍝ Fully boxed array.
171
171
  }
172
- trim←{[⍵₀ (~1 1⍷∧⌿' '=⍵₁)#⍠¯1⍵₁]}
172
+ trim←{[⍵₀ (~$t $t⍷∧⌿' '=⍵₁)#⍠¯1⍵₁]}
173
173
  qfmt←{[⍬⍕⍴⍺;format open ⍵]}
174
- 0=≡⍵?' '⍪(format ⍵)⍪(' '≡↑0⍴⍵)⊃" -";
175
- 1 ⍬≡[≡⍵ ⍴⍵]?'∇' 0 0 box ["─";format ⍵];
176
- 1=≡⍵?(deco ⍵)box open ⍵ qfmt ⍵; ⍝ Simple array.
174
+ 0ₓ=≡⍵?' '⍪(format ⍵)⍪(' '≡↑0⍴⍵)⊃" -";
175
+ 1ₓ ⍬≡[≡⍵ ⍴⍵]?'∇' 0 0 box ["─";format ⍵];
176
+ 1ₓ=≡⍵?(deco ⍵)box open ⍵ qfmt ⍵; ⍝ Simple array.
177
177
  ('∊'deco ⍵)box trim ⍵ qfmt ∇¨open ⍵ ⍝ Nested array.
178
178
  }
179
179
 
@@ -185,15 +185,15 @@ displayr ← { ⍝ Boxed display of array
185
185
  top←(≥⍴hrz)↑(↑ ¯1↑⍺ ⌷ "─⊖",⊂⍬⍕¯1↑⍺₁),hrz
186
186
  bot←⍴top ↑ ↑2↓⍺ , hrz
187
187
  rgt←"┐│",vrt,'┘' ⍝ right side with corners
188
- lax←(↑¨ ¯1↓3↓⍺ ⌷¨ -1⌈≤⍴⍺₁ ↑ ⊂"│⌽" ,¨ (⊂⍬↣⍕)¨¯1↓0,⍺₁),¨⊂vrt
188
+ lax←(↑¨ ¯1↓3↓⍺ ⌷¨ -1⌈≤⍴⍺₁ ↑ ⊂"│⌽" ,¨ (⊂⍬↣⍕)¨¯1↓0ₓ,⍺₁),¨⊂vrt
189
189
  lax←⊂≥⍴vrt ↑¨ lax~¨⊂" " ,¨ '│' ⍝ pad and trim
190
190
  lft←⍉'┌',(⊃lax),'└'
191
191
  lft,(top⍪⍵⍪bot),rgt ⍝ fully boxed array
192
192
  }
193
- deco←{⍺←type open ⍵ ⋄ ⍴⍴⍵ , ⊂0+⍴⍵ , ⍺ , axes ⍵}
194
- 0=≡⍵?' '⍪(open format ⍵)⍪(' '=↑0⍴⍵)⊃" -";
195
- 1 ⍬≡[≡⍵ ⍴⍵]?["" [0 0] '∇' 0 0] box format ⍵;
196
- 1=≡⍵?(deco ⍵)box open' ',format open ⍵;
193
+ deco←{⍺←type open ⍵ ⋄ ⍴⍴⍵ , ⊂0ₓ+⍴⍵ , ⍺ , axes ⍵}
194
+ 0ₓ=≡⍵?' '⍪(open format ⍵)⍪(' '=↑0⍴⍵)⊃" -";
195
+ 1ₓ ⍬≡[≡⍵ ⍴⍵]?["" [0 0]ₓ '∇' 0 0] box format ⍵;
196
+ 1ₓ=≡⍵?(deco ⍵)box open' ',format open ⍵;
197
197
  (⊂⍬⍕≡⍵ deco ⍵)box trim' ',format ∇¨open ⍵
198
198
  }
199
199
 
@@ -211,9 +211,9 @@ fuzzy ← {a←lcase ⍺ ⋄ (↑⍋a↣dist∘lcase¨⍵)⊃⍵}
211
211
  ⍝ From http://dfns.dyalog.com/n_dsp.htm
212
212
 
213
213
  dsp ← { ⍝ Reduced version of disp.
214
- (1=≡,⍵)∨0∊⍴⍵?format ⍵;
214
+ (1ₓ=≡,⍵)∨0ₓ∊⍴⍵?format ⍵;
215
215
  ⍺←1 ⋄ top←'─'⍪⍣⍺ ⍝ top '─' bar if ⍺
216
- 1≥⍴⍴⍵?{ ⍝ vector or unit:
216
+ 1ₓ≥⍴⍴⍵?{ ⍝ vector or unit:
217
217
  bars←{⍪(⌊/≢¨[⍺ ⍵])#'│'}/↕⍵,0
218
218
  join←{⊃,/(⌈/≢¨⍵)↑¨⍵}
219
219
  0 ¯1↓join top¨join¨↓⍉[⍵⋄bars]
@@ -238,7 +238,7 @@ Rgt ← {⊂2↑⍵ , 2↓¯1↓⍵ , ↑⌽⍵} ⍝ tape-head moves right 1 it
238
238
  ⍝ From http://dfns.dyalog.com/c_enlist.htm
239
239
 
240
240
  enlist ← { ⍝ List ⍺-leaves of nested array.
241
- ⍺←0 ⍝ default: list 0-leaves.
241
+ ⍺←0ₓ ⍝ default: list 0-leaves.
242
242
  ⍺≥≤≡⍵?,⍵; ⍝ all shallow leaves: finished.
243
243
  1↓,/[⊂↑↑⍵],⍺∇¨,⍵
244
244
  }
@@ -248,7 +248,7 @@ enlist ← { ⍝ List ⍺-leaves of nested array.
248
248
  from ← { ⍝ Select (1↓⍴⍵)-cells from array ⍵.
249
249
  ~(≢⍺)≡≢⍴⍵?"error"; ⍝ check index length.
250
250
  indx←⍺
251
- axes←+\0,¯1↓{↑⍴⍴⍵}¨⍺
251
+ axes←+\0ₓ,¯1↓{↑⍴⍴⍵}¨⍺
252
252
  {
253
253
  [indx axis]←⍺ ⍝ index and axis for selection.
254
254
  indx≡,⊂⍬?⍵; ⍝ skip: select all items.
@@ -305,14 +305,14 @@ listRmDups ← { ⍝ remove adjacent duplicates.
305
305
  ⍝ From http://dfns.dyalog.com/c_match.htm
306
306
 
307
307
  match ← { ⍝ Wildcard match.
308
- [p x]←{[⍵ '*']}⍣ 1=≡,⍺ ,⍺ ⍝ pattern and wildcard.
308
+ [p x]←{[⍵ '*']}⍣ 1ₓ=≡,⍺ ,⍺ ⍝ pattern and wildcard.
309
309
  v←1↓¨{(x↣≡¨⍵)⊂⍵}[x],p
310
310
  h←⊃v⍷¨⊂⍵
311
- r←0,¯1↓,⊃⍴¨v
311
+ r←0ₓ,¯1↓,⊃⍴¨v
312
312
  sl←{ ⍝ array shifted left.
313
313
  a←¯1↓⍴⍵ ⍝ leading axes.
314
314
  x←⌈/⍺ ⍝ maximum shift.
315
- p←⍵,(a,x)⍴0 ⍝ 0-padded on right.
315
+ p←⍵,(a,x)⍴$f ⍝ 0-padded on right.
316
316
  s←⍉a⍴⍺ ⍝ sub-array of vector rotations.
317
317
  (- 0×a , x)↓s⌽p ⍝ shifted array.
318
318
  } ⍝ :: r ∇ a → a
@@ -332,7 +332,7 @@ showmatch ← {marks←[(⍺ match ⍵)]⌷" ¯" ⋄ ,⍠ ⍳⍴⍴⍵ ⍵ {[⍺
332
332
  nlines ← { ⍝ Number of display lines for simple array.
333
333
  {
334
334
  (×/⍵)+{ ⍝ # of lines of real data +
335
- +/+\0⌈⍵-1,¯1↓⍵ ⍝ # of blank lines separating different planes
335
+ +/+\0ₓ⌈⍵-1ₓ,¯1↓⍵ ⍝ # of blank lines separating different planes
336
336
  }×\¯1↓⍵ ⍝ of the array
337
337
  }¯1↓⍴⍵ ⍝ last axis affects only width of display.
338
338
  }
@@ -340,7 +340,7 @@ nlines ← { ⍝ Number of display lines for simple array.
340
340
  ⍝ From http://dfns.dyalog.com/s_perv.htm
341
341
 
342
342
  perv ← { ⍝ Pervasion
343
- 1=≡[⍺ ⍵ ⍵]?⍺ ⍶ ⍵;
343
+ 1ₓ=≡[⍺ ⍵ ⍵]?⍺ ⍶ ⍵;
344
344
  ⍺ ∇¨ ⍵ ⍝ (⍺ or) ⍵ deeper: recursive traversal.
345
345
  }
346
346
 
@@ -348,7 +348,7 @@ perv ← { ⍝ Pervasion
348
348
 
349
349
  pmat ← { ⍝ Permutation matrix of ⍳⍵.
350
350
  { ⍝ perms of ⍳⍵:
351
- 1≥⍴⍵?⊃,↓⍵;⊃⍪/⍵,↢∇¨⍵↣~¨,¨⍵
351
+ 1ₓ≥⍴⍵?⊃,↓⍵;⊃⍪/⍵,↢∇¨⍵↣~¨,¨⍵
352
352
  }⍳⍵ ⍝ permutations of identity perm.
353
353
  }
354
354
 
@@ -359,7 +359,7 @@ pred ← {⊃⍶/¨(⍺#≥⍳⍴⍺)⊆⍵} ⍝ Partitioned reduction.
359
359
  ⍝ From http://dfns.dyalog.com/c_rows.htm
360
360
 
361
361
  rows ← { ⍝ Operand function applied to argument rows.
362
- 1<≡⍵?∇¨⍵; ⍝ nested: item-wise application
362
+ 1ₓ<≡⍵?∇¨⍵; ⍝ nested: item-wise application
363
363
  ⍶⍤1 ⍵
364
364
  }
365
365
 
@@ -373,9 +373,9 @@ sam ← { ⍝ Select and modify.
373
373
  ⍝ From http://dfns.dyalog.com/c_saw.htm
374
374
 
375
375
  saw ← { ⍝ Function operand applied Simple-Array-Wise.
376
- 2≥≡[⍺ ⍵ ⍵]?⍺ ⍶ ⍵;
377
- 1≥≡⍵?⍺ ∇¨ ⊂⍵; ⍝ ⍵ simple: traverse ⍺.
378
- 2≥≡[⍺ 1]?(⍺ ∇)¨⍵; ⍝ ⍺ simple: traverse ⍵.
376
+ 2ₓ≥≡[⍺ ⍵ ⍵]?⍺ ⍶ ⍵;
377
+ 1ₓ≥≡⍵?⍺ ∇¨ ⊂⍵; ⍝ ⍵ simple: traverse ⍺.
378
+ 2ₓ≥≡[⍺ 1]?(⍺ ∇)¨⍵; ⍝ ⍺ simple: traverse ⍵.
379
379
  ⍺ ∇¨ ⍵ ⍝ Both nested: traverse both.
380
380
  }
381
381
 
@@ -383,20 +383,20 @@ saw ← { ⍝ Function operand applied Simple-Array-Wise.
383
383
 
384
384
  mscan ← { ⍝ Minus scan.
385
385
  ⍺←¯1 ⍝ ⍺ is axis (default last).
386
- +\⍠⍺ ⍵×⍠⍺(⍺⊃⍴⍵)⍴1,-1
386
+ +\⍠⍺ ⍵×⍠⍺(⍺⊃⍴⍵)⍴[1 ¯1]ₓ
387
387
  }
388
388
 
389
389
  ⍝ From http://dfns.dyalog.com/c_dscan.htm
390
390
 
391
391
  dscan ← { ⍝ Divide scan
392
392
  ⍺←¯1 ⍝ ⍺ is axis (default last).
393
- ×\⍠⍺ ⍵*⍠⍺(⍺⊃⍴⍵)⍴1,-1
393
+ ×\⍠⍺ ⍵*⍠⍺(⍺⊃⍴⍵)⍴[1 ¯1]ₓ
394
394
  }
395
395
 
396
396
  ⍝ From http://dfns.dyalog.com/c_ascan.htm
397
397
 
398
398
  ascan ← { ⍝ Associative scan.
399
- 2>0⊥⍴⍵?⍵; ⍝ few items: done.
399
+ 2ₓ>0ₓ⊥⍴⍵?⍵; ⍝ few items: done.
400
400
  lane←⍶{⌽⍶{[(↑⍵)⍶⍺],⍵}/⌽[⊂↑⍵],1↓⍵} ⍝ one lane: builds the results newest first, then reverses them.
401
401
  lane⍤1 ⍵
402
402
  }
@@ -418,8 +418,8 @@ shannon ← {-+/(2↣⍟×⊣)¨(≢⊢ ⌸÷≢)⍵} ⍝ Shannon entropy of me
418
418
 
419
419
  ⍝ From http://dfns.dyalog.com/c_subvec.htm
420
420
 
421
- subvec ← {0∊⍴⍺?1; ⍝ Is ⍺ a subvector of ⍵?
422
- 0∊⍴⍵?0; ⍝ null ⍵: failure.
421
+ subvec ← {0ₓ∊⍴⍺?$t; ⍝ Is ⍺ a subvector of ⍵?
422
+ 0ₓ∊⍴⍵?$f; ⍝ null ⍵: failure.
423
423
  (1↓⍺)∇(≥⍵⍳1↑⍺)↓⍵ ⍝ otherwise, check remaining items.
424
424
  }
425
425
 
@@ -427,11 +427,11 @@ subvec ← {0∊⍴⍺?1; ⍝ Is ⍺ a subvector of ⍵?
427
427
 
428
428
  subs ← { ⍝ Vector substitution.
429
429
  [fs ts]←≢¨[fm to]←⍺ ⍝ old and new vectors and sizes
430
- 1≡≡⍺?to@[fm=] ⍵; ⍝ special case: atom subs
431
- 0=⍴⍴⍵?↑(⍵≡fm)⌽[⍵ ⊂to];
432
- lead←fs↑1 ⍝ leading mask
430
+ 1ₓ≡≡⍺?to@[fm=] ⍵; ⍝ special case: atom subs
431
+ 0ₓ=⍴⍴⍵?↑(⍵≡fm)⌽[⍵ ⊂to];
432
+ lead←fs↑$t ⍝ leading mask
433
433
  (fm⍷⍵){ ⍝ hits mask
434
- ~1∊⍺?⍵; ⍝ early out if no match
434
+ ~$t∊⍺?⍵; ⍝ early out if no match
435
435
  ts↓,/{to,fs↓⍵}¨(lead,⍺)⊂fm,⍵
436
436
  }⍤1 ⍵ ⍝ apply to vectors
437
437
  }