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.
- {basedpl-0.1.74 → basedpl-0.1.75}/Cargo.lock +9 -9
- {basedpl-0.1.74 → basedpl-0.1.75}/Cargo.toml +3 -3
- {basedpl-0.1.74 → basedpl-0.1.75}/DEV.md +2 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/PKG-INFO +4 -4
- {basedpl-0.1.74 → basedpl-0.1.75}/README.md +3 -3
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/array.bpl +50 -50
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/dyalog.bpl +249 -249
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/graph.bpl +37 -37
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/numeric.bpl +71 -71
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/power.bpl +3 -3
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/regex.bpl +2 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/string.bpl +43 -43
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/tree.bpl +55 -55
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/evaluation.qmd +1 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/attractor.bpl +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/boids.bpl +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/flow.bpl +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/reaction.bpl +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/getting-started.ipynb +14 -14
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/at.qmd +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/diamond-underbar.qmd +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/lamp.qmd +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/index.ipynb +3 -3
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/indexing.ipynb +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/llms.txt +5 -5
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/numbers.qmd +16 -5
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/05_searching-indexing.ipynb +2 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/style.qmd +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/float.qmd +5 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/prefs.qmd +3 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/bpltests.py +19 -14
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/worker.py +27 -7
- {basedpl-0.1.74 → basedpl-0.1.75}/src/array/storage.rs +4 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/array.rs +18 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/src/batch.rs +10 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/display.rs +4 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/src/element.rs +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/idioms.rs +3 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/operators.rs +8 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/fusion.rs +40 -14
- {basedpl-0.1.74 → basedpl-0.1.75}/src/number.rs +26 -5
- {basedpl-0.1.74 → basedpl-0.1.75}/src/number_theory.rs +4 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/src/pervasive.rs +8 -4
- {basedpl-0.1.74 → basedpl-0.1.75}/src/polynomial.rs +4 -3
- {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/indexing.rs +2 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/numeric.rs +32 -23
- {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/search.rs +32 -22
- {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive/structural.rs +4 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/src/primitive.rs +57 -39
- {basedpl-0.1.74 → basedpl-0.1.75}/src/search.rs +31 -3
- {basedpl-0.1.74 → basedpl-0.1.75}/src/settings.rs +6 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/src/syntax.rs +3 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/src/timing.rs +5 -4
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/instructions.txt +7 -7
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/aplcart.bpl +59 -59
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/april.bpl +65 -65
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/core.bpl +48 -19
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/lib.bpl +3 -3
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/ngn.bpl +2 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/static-int32.bpl +4 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/static.bpl +5 -5
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/splay.bpl +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/settings.rs +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/README.md +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/arrays.bpl +10 -10
- basedpl-0.1.75/tests/speed/calls.bpl +10 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/maps.bpl +2 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/structure.bpl +5 -5
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/tables.bpl +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed.rs +1 -1
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_basic.py +2 -2
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_worker.py +2 -0
- basedpl-0.1.74/tests/speed/calls.bpl +0 -10
- {basedpl-0.1.74 → basedpl-0.1.75}/.cargo/config.toml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/.gitattributes +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/ci.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/docs.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/speed.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/.github/workflows/test.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/.gitignore +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/CONTRIBUTING.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/LICENSE +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/_config.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/_layouts/default.html +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/build.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.tmbundle/Syntaxes/bpl.tmLanguage.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.tmbundle/Syntaxes/hpl.tmLanguage.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.tmbundle/info.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/BPL.xml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/jetbrains/README.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Info.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Resources/BasedPL-de.icns +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Resources/BasedPL-de.keylayout +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.bundle/Contents/version.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-de.txt +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Info.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Resources/BasedPL-es.icns +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Resources/BasedPL-es.keylayout +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.bundle/Contents/version.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-es.txt +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Info.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Resources/BasedPL-fr.icns +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Resources/BasedPL-fr.keylayout +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.bundle/Contents/version.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-fr.txt +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Info.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Resources/BasedPL-uk.icns +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Resources/BasedPL-uk.keylayout +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.bundle/Contents/version.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-uk.txt +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Info.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Resources/BasedPL-us.icns +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Resources/BasedPL-us.keylayout +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.bundle/Contents/version.plist +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/macos/BasedPL-us.txt +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/vim/ftdetect/bpl.vim +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/vim/syntax/bpl.vim +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/README.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/build.ps1 +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/install.ps1 +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/keyboard.c +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/keyboard.def +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/keyboard.rc +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/editors/windows/layout.h +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-commonmark/cell-17-output-1.svg +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-commonmark/cell-18-output-1.svg +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-html/cell-17-output-1.svg +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/index_files/figure-html/cell-18-output-1.svg +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/LICENSE-april +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/lib/README.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/.gitignore +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/_quarto.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/arrays.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/assignment.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/bpl.xml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/bqn.xml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/bracket-types.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/cli.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/comparison.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/data.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/dfns.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/distributions.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/driver.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/dyalog.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/dyalog.xml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/LICENSE-SAX2 +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/README.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/SAX2B.ttf +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts/SAX2B.woff2 +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/fonts.css +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/dragon.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/mandelbrot.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/mandelbrot32.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/orbits.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/phyllotaxis.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery/prefs.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/gallery.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/_metadata.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/alpha-underbar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/alpha.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/backslash-bar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/backslash.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/braces.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/brackets.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/bullet.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-backslash.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-bar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-diaeresis.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-divide.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-slash.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-star.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-stile.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle-times.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/circle.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/colon.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/comma-bar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/comma.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/del-diaeresis.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/del-stile.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/del.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/delta-stile.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/diaeresis.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/diamond.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/domino.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/dot.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/down-arrow.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/down-shoe.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/down-tack.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/downstile.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/epsilon-underbar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/epsilon.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/equal-underbar-slash.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/equal-underbar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/equals.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/error-guard.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/exclamation.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/greater-than-or-equal.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/greater-than.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/hash.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/hydrant.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/infinity.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/inverted-question.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/iota-underbar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/iota.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/jot-diaeresis.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/jot.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-arrow.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-shoe-underbar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-shoe.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-tack.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/left-tail-arrow.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/less-than-or-equal.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/less-than.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/minus.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/not-equals.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/obelus.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/omega-underbar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/omega.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/overbar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/parentheses.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/partial.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/pi.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/plus.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-colon.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-diamond.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-equal.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad-jot.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quad.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/question.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/quote.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/radical.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/rho.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-arrow-from-bar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-left-arrows.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-shoe.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-tack.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/right-tail-arrow.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/slash-bar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/slash.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/squad.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/star-diaeresis.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/star.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/stile-tilde.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/stile.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/superscript-b.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/thorn.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/tilde-diaeresis.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/tilde.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/times.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-arrow.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-down-arrow.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-shoe.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/up-tack.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/upstile.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/vee-bar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/vee.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/wedge-bar.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/wedge.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs/zilde.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs-study.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/glyphs.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/hanzi-notation-zh.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/hanzi-notation.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/hpl.xml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/introspection.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/keyboard.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/keyed.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/magics.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/mathish.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/modules.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/nbdev.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/notebooks.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/overview.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/papers/aplwiki-arrays.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/papers/brickman-depth-1-scalars.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/papers/mercer-based-system.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/bpl.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/gallery.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/hpl.tmLanguage.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/monaco-worker.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/page.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground/worker.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/playground.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/plot.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/principles.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/processes.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/puppy.jpg +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/python.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/regex.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/repl.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/scripts.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/sidebar.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/strings.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/01_basics.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/02_functions.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/03_operators.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/04_nested-arrays.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/06_rearranging-arrays.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/study/07_numerical-tools.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/styles.css +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/syntax.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/_metadata.yml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/c.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/canvas.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/constants.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/copy.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/csv.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/date.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/decompose.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/deflate.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/delay.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/detach.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/distribution.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/edge.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/element.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/ex.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/explain.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/fetch.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/hash.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/host.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/image.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/index.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/js.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/json.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/literal.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/load.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/memory.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/metadata.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/mime.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/mkdir.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nc.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nget.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nl.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/normalize.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/nput.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/path.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/plot.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/r.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/rand.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/readdir.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/remove.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/rename.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/signal.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/src.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/storage.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/svg.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/time.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/ucs.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/uuid.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/vfi.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system/xml.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/system-functions.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/terms.qmd +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/web.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/nbs/xml.ipynb +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/package-lock.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/package.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/provenance/README.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/provenance/aplcart.jsonl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/provenance/april.jsonl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/provenance/bqn.jsonl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/provenance/core.jsonl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/provenance/dyalog.jsonl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/provenance/ngn.jsonl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/py/Cargo.toml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/py/build.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/py/src/lib.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/pyproject.toml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/__init__.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/_modidx.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/bpl.tmLanguage.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/dyalog.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/editors.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/font.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/fonts.css +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/functions.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/hpl.tmLanguage.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/input.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/ipython.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/keyboards.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/keyboards.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/layout.json +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/lb.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/notebook_runner.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/notebooks.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/printing.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/reference.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/syntax.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/python/basedpl/windows_keyboard.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/rustfmt.toml +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/scripts/install-macos.sh +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/scripts/prep.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/agreement.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/array/text.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/canvas.js +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/canvas.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/csv.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/data.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/date.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/derivative.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/distribution.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/error.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/assign.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/binder.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/bindings.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/dissect.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/session.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval/tree.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/eval.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/execution.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/explain.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/files.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/fusion/blocks.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/host.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/host_web.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/image/codecs.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/image/imageio.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/image.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/inspection.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/js.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/json.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/keyed.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/lib.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/linear.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/name.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/optimize.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/plot.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/protocol.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/reference.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/regex.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/selection.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/symbols.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/system.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/transform.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/src/xml.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/common/mod.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/conftest.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/core.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/derivatives.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/explain.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/highlighting.mjs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/input.mjs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-aplcart +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-april +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-bqn +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-bqncrate +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-dyalog +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/LICENSE-ngn +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/README.md +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/bqn.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/distributions.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/dyalog.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/graphics.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/regex.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/april.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/avl.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/redblack.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference/support/sbst.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/reference.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/scaling.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/images.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/speed/models.bpl +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_api.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_bpltests.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_glyphs.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_graphics.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_instructions.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_ipython.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_kernel.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_keylayout.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_notebooks.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_reference.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_repl.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/test_windows_keyboard.py +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/units.rs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/wasm-pkg.mjs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/wasm-speed.mjs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/wasm.mjs +0 -0
- {basedpl-0.1.74 → basedpl-0.1.75}/tests/windows_keyboard.c +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
1418
|
+
version = "0.1.50"
|
|
1419
1419
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1420
|
-
checksum = "
|
|
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.
|
|
1439
|
+
version = "0.1.50"
|
|
1440
1440
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1441
|
-
checksum = "
|
|
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.
|
|
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.
|
|
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.
|
|
15
|
-
rustymath-buffer = ">=0.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.
|
|
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
|
|
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
|
|
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
|
-
⌊@
|
|
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
|
|
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
|
|
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
|
-
⌊@
|
|
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
|
|
42
|
+
type ← {{(1ₓ=⍴⍵)⊃['+' ⍵]}∪,char¨⍵} ⍝ Type characters of an array.
|
|
43
43
|
deco ← {⍺←type open ⍵ ⋄ ⍺,axes ⍵} ⍝ Type and axes vector.
|
|
44
|
-
trim ← {(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
81
|
-
split←(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
|
|
115
|
+
0ₓ=dec×⍴⍴⍵?'─'; ⍝ undecorated or atom ⍕⍵: char,
|
|
116
116
|
(↑⍵∊'¯',$d)⊃"#~"
|
|
117
117
|
}∘⍕ ⍝ ⍕ distinguishes type of atom.
|
|
118
|
-
0
|
|
119
|
-
{(1
|
|
118
|
+
0ₓ=≡⍵?sst ⍵; ⍝ atom: type.
|
|
119
|
+
{(1ₓ=⍴⍵)⊃['+' ⍵]}∪,sst¨(dec open ⍵)
|
|
120
120
|
}
|
|
121
121
|
shape←{
|
|
122
|
-
dec≤0
|
|
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
|
|
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
|
|
152
|
-
1 ⍬≡[≡⍵ ⍴⍵]?'∇' 0 0 box format ⍵;
|
|
153
|
-
1
|
|
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←{[⍵₀ (
|
|
172
|
+
trim←{[⍵₀ (~$t $t⍷∧⌿' '=⍵₁)#⍠¯1⍵₁]}
|
|
173
173
|
qfmt←{[⍬⍕⍴⍺;format open ⍵]}
|
|
174
|
-
0
|
|
175
|
-
1 ⍬≡[≡⍵ ⍴⍵]?'∇' 0 0 box ["─";format ⍵];
|
|
176
|
-
1
|
|
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
|
|
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
|
|
194
|
-
0
|
|
195
|
-
1 ⍬≡[≡⍵ ⍴⍵]?["" [0 0] '∇' 0 0] box format ⍵;
|
|
196
|
-
1
|
|
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
|
|
214
|
+
(1ₓ=≡,⍵)∨0ₓ∊⍴⍵?format ⍵;
|
|
215
215
|
⍺←1 ⋄ top←'─'⍪⍣⍺ ⍝ top '─' bar if ⍺
|
|
216
|
-
1
|
|
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
|
|
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
|
|
308
|
+
[p x]←{[⍵ '*']}⍣ 1ₓ=≡,⍺ ,⍺ ⍝ pattern and wildcard.
|
|
309
309
|
v←1↓¨{(x↣≡¨⍵)⊂⍵}[x],p
|
|
310
310
|
h←⊃v⍷¨⊂⍵
|
|
311
|
-
r←0
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
378
|
-
2
|
|
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
|
|
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
|
|
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
|
|
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
|
|
422
|
-
0
|
|
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
|
|
431
|
-
0
|
|
432
|
-
lead←fs
|
|
430
|
+
1ₓ≡≡⍺?to@[fm=] ⍵; ⍝ special case: atom subs
|
|
431
|
+
0ₓ=⍴⍴⍵?↑(⍵≡fm)⌽[⍵ ⊂to];
|
|
432
|
+
lead←fs↑$t ⍝ leading mask
|
|
433
433
|
(fm⍷⍵){ ⍝ hits mask
|
|
434
|
-
|
|
434
|
+
~$t∊⍺?⍵; ⍝ early out if no match
|
|
435
435
|
ts↓,/{to,fs↓⍵}¨(lead,⍺)⊂fm,⍵
|
|
436
436
|
}⍤1 ⍵ ⍝ apply to vectors
|
|
437
437
|
}
|