diff options
64 files changed, 1866 insertions, 0 deletions
diff --git a/help/!assert assertwithmsg.md b/help/!assert assertwithmsg.md new file mode 100644 index 00000000..4e823a1e --- /dev/null +++ b/help/!assert assertwithmsg.md @@ -0,0 +1,31 @@ +Exclamation Mark (`!`) + +`! 𝕩`: Assert + +Throw an error if `𝕩` is not 1. +``` + ! 1 +1 + ! 2 +Error: Assertion error +at ! 2 + ^ + ! "hello" +Error: hello +at ! "hello" +``` + +`𝕨 ! 𝕩`: Dyad + +Throw an error with message `𝕨` if `𝕩` is not 1. +``` + "hi" ! 1 +1 + "two" ! 2 +Error: two +at "two" ! 2 + ^ + "hello error" ! "hello" +Error: hello error +at "hello error" ! "hello" +```
\ No newline at end of file diff --git a/help/+conjugate add.md b/help/+conjugate add.md new file mode 100644 index 00000000..dc8a0467 --- /dev/null +++ b/help/+conjugate add.md @@ -0,0 +1,22 @@ +Plus (`+`) + +`+ 𝕩`: Conjugate +``` + + 1 +1 + + ¯1 +¯1 +``` +`𝕨 + 𝕩`: Add + +`𝕨` added to `𝕩`. Either `𝕨` or `𝕩` can be a character, and if so, the other has to be a number. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 + 2 +3 + 1 + 2‿3‿4 +⟨ 3 4 5 ⟩ + 'a' + 4 +'e' +``` diff --git a/help/-negate subtract.md b/help/-negate subtract.md new file mode 100644 index 00000000..df2cc167 --- /dev/null +++ b/help/-negate subtract.md @@ -0,0 +1,28 @@ +Minus (`-`) + +`- 𝕩`: Negate + +Additive Inverse of `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + - 1 +¯1 + - ¯1 +1 +``` +`𝕨 - 𝕩`: Subtract + +Subtract `𝕩` from `𝕨`. `𝕨` and `𝕩` can be characters or numbers. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 - 2 +¯1 + 1 - 2‿3‿4 +⟨ ¯1 ¯2 ¯3 ⟩ + 'a' - 4 +']' + 'b' - 'a' +1 +``` diff --git a/help/<enclose less.md b/help/<enclose less.md new file mode 100644 index 00000000..bf2be0c4 --- /dev/null +++ b/help/<enclose less.md @@ -0,0 +1,27 @@ +Lesser Than (`<`) + +`< 𝕩`: Enclose + +Create a unit array containing `𝕩`. (`(≢𝕩) ≡ ⟨⟩`) + +``` + <1 +┌· +· 1 + ┘ + + ≢<1 +⟨⟩ +``` + +`𝕨 < 𝕩`: Lesser Than + +`𝕨` and `𝕩` can both be either numbers or characters. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 < 3 +1 + 2‿3‿0 < 3‿1‿0 +⟨ 1 0 0 ⟩ +```
\ No newline at end of file diff --git a/help/=rank equal.md b/help/=rank equal.md new file mode 100644 index 00000000..053fd27c --- /dev/null +++ b/help/=rank equal.md @@ -0,0 +1,28 @@ +Equal (`=`) + +`= 𝕩`: Rank + +Returns the number of dimensions in `𝕩`. + +``` + = 0 +0 + = 3⥊0 +1 + = 3‿3⥊0 +2 + 3‿3‿3 ⥊ ⟨⟨0⟩⟩ +3 +``` + +`𝕨 = 𝕩`: Equal To + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 = 3 +0 + 2‿3‿0 = 3‿1‿0 +⟨ 0 0 1 ⟩ + 'a' = 'a' +1 +```
\ No newline at end of file diff --git a/help/>merge great.md b/help/>merge great.md new file mode 100644 index 00000000..913a2b6c --- /dev/null +++ b/help/>merge great.md @@ -0,0 +1,38 @@ +Greater Than (`>`) + +`> 𝕩`: Merge + +Add the rank of an element of `𝕩` to the rank of `𝕩`. + +All elements must have the same rank. + +Returns atomic values as is. + +``` + a ← ⟨⟨1, 2⟩, ⟨3, 4⟩⟩ +⟨ ⟨ 1 2 ⟩ ⟨ 3 4 ⟩ ⟩ + >a +┌─ +╵ 1 2 + 3 4 + ┘ + ≢a +⟨ 2 ⟩ + ≢>a +⟨ 2 2 ⟩ + +``` + +`𝕨 > 𝕩`: Greater Than + +`𝕨` and `𝕩` can both be either numbers or characters. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 > 3 +0 + 2‿3‿0 > 3‿1‿0 +⟨ 0 1 0 ⟩ + 'a' > 'b' +1 +```
\ No newline at end of file diff --git a/help/`scan.md b/help/`scan.md new file mode 100644 index 00000000..dc4013b9 --- /dev/null +++ b/help/`scan.md @@ -0,0 +1,29 @@ +Acute Accent (`` ` ``) + +`𝔽` 𝕩`: Fold + +Scan over `𝕩` with `𝔽` from left to right, producing intermediate values. + +``` + +` 1‿2‿3 +⟨ 1 3 6 ⟩ + ⟨1, 1+2, (1+2)+3⟩ +⟨ 1 3 6 ⟩ + -` 1‿2‿3 +⟨ 1 ¯1 ¯4 ⟩ + ⟨1, 1-2, (1-2)-3⟩ +⟨ 1 ¯1 ¯4 ⟩ +``` +`𝕨 𝔽` 𝕩`: Scan With initial + +Monadic scan, but use `𝕨` as initial left argument. +``` + 5 +` 1‿2‿3 +⟨ 6 8 11 ⟩ + ⟨5+1, (5+1)+2, ((5+1)+2)+3⟩ +⟨ 6 8 11 ⟩ + 5 -` 1‿2‿3 +⟨ 4 2 ¯1 ⟩ + ⟨5-1, (5-1)-2, ((5-1)-2)-3⟩ +⟨ 4 2 ¯1 ⟩ +```
\ No newline at end of file diff --git a/help/sindices replicate.md b/help/sindices replicate.md new file mode 100644 index 00000000..852570d1 --- /dev/null +++ b/help/sindices replicate.md @@ -0,0 +1,23 @@ +Solidus (`/`) + +`/ 𝕩`: Indices + +Repeat the index of each element in `𝕩` by the element's value. `𝕩` must be rank 1. +``` + / 1‿2‿3 +⟨ 0 1 1 2 2 2 ⟩ + / 1‿0‿1 +⟨ 0 2 ⟩ +``` + +`𝕨 / 𝕩`: Replicate + +Repeat each major cell in `𝕩` by the corresponding element in `𝕨`. + +Atomic `𝕨` applies to all elements. +``` + 3 / "copy" +"cccooopppyyy" + 1‿0‿1 / 1‿2‿3 +⟨ 1 3 ⟩ +```
\ No newline at end of file diff --git a/help/template.md.tmp b/help/template.md.tmp new file mode 100644 index 00000000..5b994159 --- /dev/null +++ b/help/template.md.tmp @@ -0,0 +1,47 @@ +SymN (`S`) + +`S 𝕩`: Monad + +Description +``` +Ex +``` + +`𝕨 S 𝕩`: Dyad + +Description +``` +Ex +``` + +SymN (`S`) + +`𝔽 S 𝕩`: 1mod + +Description +``` +Ex +``` +`𝕨 𝔽 S 𝕩`: 1mod + +Description +``` +Ex +``` + + +SymN (`S`) + +`𝔽 S 𝔾 𝕩`: 2mod + +Description +``` +Ex +``` + +`𝕨 𝔽 S 𝔾 𝕩`: 2mod + +Description +``` +Ex +```
\ No newline at end of file diff --git a/help/|abs modulus.md b/help/|abs modulus.md new file mode 100644 index 00000000..533ab6b4 --- /dev/null +++ b/help/|abs modulus.md @@ -0,0 +1,25 @@ +Pipe (`|`) + +`| 𝕩`: Absolute Value + +Absolute Value of `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + | ¯2 +2 + | 1‿3‿¯4‿3 +⟨ 1 3 4 3 ⟩ +``` + +`𝕨 | 𝕩`: Modulus + +Remainder of `𝕩` divided by `𝕨`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 | 3 +0 + 2 | 3‿4‿5 +⟨ 1 0 1 ⟩ +```
\ No newline at end of file diff --git a/help/¨each.md b/help/¨each.md new file mode 100644 index 00000000..2a387b97 --- /dev/null +++ b/help/¨each.md @@ -0,0 +1,15 @@ +Diaresis (`¨`) + +`𝔽¨ 𝕩`, `𝕨 𝔽¨ 𝕩`: Each + +Apply `𝔽` to/between the major elements of the arguments. (`𝔽⚇¯1`) +``` + <¨ 1‿2‿3 +┌─ +· ┌· ┌· ┌· + · 1 · 2 · 3 + ┘ ┘ ┘ + ┘ + 4‿5‿6 ∾¨ 1‿2‿3 +⟨ ⟨ 4 1 ⟩ ⟨ 5 2 ⟩ ⟨ 6 3 ⟩ ⟩ +```
\ No newline at end of file diff --git a/help/«shiftbefore.md b/help/«shiftbefore.md new file mode 100644 index 00000000..926dcefb --- /dev/null +++ b/help/«shiftbefore.md @@ -0,0 +1,37 @@ +Left Pointing Double Angle Quotation (`«`) + +`« 𝕩`: Shift Before + +Remove the first element of `𝕩`, add a cell of fill values to the end of the first axis of `𝕩`. +``` + 78 « 1‿2‿3 +⟨ 1 2 78 ⟩ + « 1‿2‿3 +⟨ 2 3 0 ⟩ + « 3‿3 ⥊ 9 +┌─ +╵ 9 9 9 + 9 9 9 + 0 0 0 + ┘ +``` + +`𝕨 « 𝕩`: Shift Before + +Remove the first `≠𝕨` (length) major cells from `𝕩`, join `𝕨` to the end of `𝕩`. Ranks must match. +``` + 8‿5 « 1‿2‿3 +⟨ 3 8 5 ⟩ + a ← 3‿3 ⥊ 9 +┌─ +╵ 9 9 9 + 9 9 9 + 9 9 9 + ┘ + 1‿2‿3 « a +┌─ +╵ 9 9 9 + 9 9 9 + 1 2 3 + ┘ +```
\ No newline at end of file diff --git a/help/¬not span.md b/help/¬not span.md new file mode 100644 index 00000000..5649410e --- /dev/null +++ b/help/¬not span.md @@ -0,0 +1,25 @@ +Not (`¬`) + +`¬ 𝕩`: Logical Not + +Logical Not of `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + ¬ 0 +1 + ¬ 1‿0 +⟨ 0 1 ⟩ +``` + +`𝕨 ¬ 𝕩`: Span + +Count of numbers in the inclusive range from `𝕩` to `𝕨`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 3 ¬ 1 +3 + 3‿4 ¬ 0‿2 +⟨ 4 3 ⟩ +```
\ No newline at end of file diff --git a/help/´fold.md b/help/´fold.md new file mode 100644 index 00000000..0f3d2a69 --- /dev/null +++ b/help/´fold.md @@ -0,0 +1,28 @@ +Acute Accent (`´`) + +`𝔽´ 𝕩`: Fold + +Fold over `𝕩` with `𝔽` from right to left i.e. Insert `𝔽` between the elements of `𝕩`. +``` + +´ 1‿2‿3 +6 + 1+2+3 +6 + -´ 1‿2‿3 +2 + 1-2-3 +2 +``` +`𝕨 𝔽´ 𝕩`: Fold With initial + +Monadic fold, but use `𝕨` as initial right argument. +``` + 5 +´ 1‿2‿3 +11 + 1+2+3+5 +11 + 5 -´ 1‿2‿3 +¯3 + 1-2-3-5 +¯3 +```
\ No newline at end of file diff --git a/help/»shiftafter.md b/help/»shiftafter.md new file mode 100644 index 00000000..af8a6bb1 --- /dev/null +++ b/help/»shiftafter.md @@ -0,0 +1,37 @@ +Right Pointing Double Angle Quotation (`»`) + +`» 𝕩`: Shift After + +Remove the last element of `𝕩`, add a cell of fill values to the start of the first axis of `𝕩`. +``` + » 1‿2‿3 +⟨ 0 1 2 ⟩ + » 3‿3 ⥊ 9 +┌─ +╵ 0 0 0 + 9 9 9 + 9 9 9 + ┘ +``` + +`𝕨 » 𝕩`: Shift After + +Remove the last `≠𝕨` (length) major cells from `𝕩`, join `𝕨` to the start of `𝕩`. Ranks must match. +``` + 78 » 1‿2‿3 +⟨ 78 1 2 ⟩ + 1‿2 » 1‿2‿3 +⟨ 1 2 1 ⟩ + a ← 3‿3 ⥊ 9 +┌─ +╵ 9 9 9 + 9 9 9 + 9 9 9 + ┘ + 1‿2‿3 » a +┌─ +╵ 1 2 3 + 9 9 9 + 9 9 9 + ┘ +```
\ No newline at end of file diff --git a/help/×sign multiply.md b/help/×sign multiply.md new file mode 100644 index 00000000..465d5023 --- /dev/null +++ b/help/×sign multiply.md @@ -0,0 +1,26 @@ +Times (`×`) + +`× 𝕩`: Sign + +Sign of `𝕩`. +- `¯1` if `𝕩 < 0` +- `0` if `𝕩 = 0` +- `1` if `𝕩 > 0` + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + × ¯5‿0‿5‿1 +⟨ ¯1 0 1 1 ⟩ +``` + +`𝕨 × 𝕩`: Multiply + +`𝕨` multiplied by `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 × 2 +2 + 2 × 2‿3‿4 +⟨ 4 6 8 ⟩ +```
\ No newline at end of file diff --git a/help/÷reciprocal divide.md b/help/÷reciprocal divide.md new file mode 100644 index 00000000..b43b5a76 --- /dev/null +++ b/help/÷reciprocal divide.md @@ -0,0 +1,20 @@ +Divide (`÷`) + +`÷ 𝕩`: Reciprocal + +Gives `1 ÷ 𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + ÷ 5 +0.2 +``` + +`𝕨 ÷ 𝕩`: Divide + +`𝕨` divided by `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` +ExamplesIfAny +```
\ No newline at end of file diff --git a/help/˘cells.md b/help/˘cells.md new file mode 100644 index 00000000..4f5a3751 --- /dev/null +++ b/help/˘cells.md @@ -0,0 +1,26 @@ +Breve (`˘`) + +`𝔽˘ 𝕩`, `𝕨 𝔽˘ 𝕩`: Cells + +Apply `𝔽` to/between the major cells of the arguments. (`𝔽⎉¯1`) +``` + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + <˘ a +⟨ ⟨ 0 1 2 ⟩ ⟨ 3 4 5 ⟩ ⟨ 6 7 8 ⟩ ⟩ + a ≍˘ a +┌─ +╎ 0 1 2 + 0 1 2 + + 3 4 5 + 3 4 5 + + 6 7 8 + 6 7 8 + ┘ +```
\ No newline at end of file diff --git a/help/˙constant.md b/help/˙constant.md new file mode 100644 index 00000000..c7025d3e --- /dev/null +++ b/help/˙constant.md @@ -0,0 +1,11 @@ +Dot Above (`˙`) + +`𝔽˙ 𝕩`, `𝕨 𝔽˙ 𝕩`: Constant + +Returns a function that will always return `𝕗`. +``` + "hello" (1 ˙) 2 +1 + "hello" ({𝕨+𝕩} ˙) 2 +(function block) +```
\ No newline at end of file diff --git a/help/˜self swap.md b/help/˜self swap.md new file mode 100644 index 00000000..d50ddc9f --- /dev/null +++ b/help/˜self swap.md @@ -0,0 +1,21 @@ +Small Tilde (`˜`) + +`𝔽˜ 𝕩`: Self + +Supplies `𝕩` as a left argument to `𝔽` (`𝕩 𝔽 𝕩`). +``` + 1 + 1 +2 + +˜ 1 +2 +``` + +`𝕨 𝔽˜ 𝕩`: Swap + +Swaps the arguments of `𝔽` (`𝕩 𝔽 𝕨`). +``` + 1 - 2 +¯1 + 1 -˜ 2 +1 +```
\ No newline at end of file diff --git a/help/⁼undo.md b/help/⁼undo.md new file mode 100644 index 00000000..cac9cf46 --- /dev/null +++ b/help/⁼undo.md @@ -0,0 +1,20 @@ +Superscript Equals Sign (`⁼`) + +`𝔽⁼ 𝕩`, `𝕨 𝔽⁼ 𝕩`: Undo + +Invert the function `𝔽`, or use its defined inverse. Not all functions have inverses. + +``` + 1 - 2 +¯1 + 1 -⁼ 2 +¯1 + √ 16 +4 + √⁼ 4 +16 + ⋆ 1 +2.718281828459045 + ⋆⁼ 2.718281828459045 +1 +```
\ No newline at end of file diff --git a/help/↑prefixes take.md b/help/↑prefixes take.md new file mode 100644 index 00000000..139ebda4 --- /dev/null +++ b/help/↑prefixes take.md @@ -0,0 +1,62 @@ +Up Arrow (`↑`) + +`↑ 𝕩`: Prefixes + +Prefixes of array `𝕩` along its first axis. +``` + ↑ 1‿2‿3‿4 +⟨ ⟨⟩ ⟨ 1 ⟩ ⟨ 1 2 ⟩ ⟨ 1 2 3 ⟩ ⟨ 1 2 3 4 ⟩ ⟩ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ↑ a +┌─ +· ↕0‿3 ┌─ ┌─ ┌─ + ╵ 0 1 2 ╵ 0 1 2 ╵ 0 1 2 + ┘ 3 4 5 3 4 5 + ┘ 6 7 8 + ┘ + ┘ +``` + +`𝕨 ↑ 𝕩`: Take + +For each integer in `𝕨`, take that many elements from each dimension of `𝕩`. + +Negative numbers take from the end. + +If any of the elements in `𝕨` are greater than the length of their respective dimension, the dimension is extended with a fill value. +``` + 3 ↑ 1‿3‿5‿67 +⟨ 1 3 5 ⟩ + a ← 4‿4 ⥊ ↕16 +┌─ +╵ 0 1 2 3 + 4 5 6 7 + 8 9 10 11 + 12 13 14 15 + ┘ + 3‿3 ↑ a +┌─ +╵ 0 1 2 + 4 5 6 + 8 9 10 + ┘ + 5‿5 ↑ a +┌─ +╵ 0 1 2 3 0 + 4 5 6 7 0 + 8 9 10 11 0 + 12 13 14 15 0 + 0 0 0 0 0 + ┘ + 3‿¯3 ↑ a +┌─ +╵ 1 2 3 + 5 6 7 + 9 10 11 + ┘ +```
\ No newline at end of file diff --git a/help/↓suffixes drop.md b/help/↓suffixes drop.md new file mode 100644 index 00000000..a1a0c346 --- /dev/null +++ b/help/↓suffixes drop.md @@ -0,0 +1,51 @@ +Down Arrow (`↓`) + +`↓ 𝕩`: Suffixes + +Suffixes of array `𝕩` along its first axis. +``` + ↓ 1‿2‿3‿4 +⟨ ⟨ 1 2 3 4 ⟩ ⟨ 2 3 4 ⟩ ⟨ 3 4 ⟩ ⟨ 4 ⟩ ⟨⟩ ⟩ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ↓ a +┌─ +· ┌─ ┌─ ┌─ ↕0‿3 + ╵ 0 1 2 ╵ 3 4 5 ╵ 6 7 8 + 3 4 5 6 7 8 ┘ + 6 7 8 ┘ + ┘ + ┘ +``` + +`𝕨 ↓ 𝕩`: Drop + +For each integer in `𝕨`, drop that many elements from the beginning of each dimension of `𝕩`. + +Negative numbers drop from the end. +``` + 3 ↓ 1‿3‿5‿67 +⟨ 67 ⟩ + a ← 4‿4 ⥊ ↕16 +┌─ +╵ 0 1 2 3 + 4 5 6 7 + 8 9 10 11 + 12 13 14 15 + ┘ + 3‿3 ↓ a +┌─ +╵ 15 + ┘ + 5‿5 ↓ a +┌┐ +└┘ + 3‿¯3 ↓ a +┌─ +╵ 12 + ┘ +```
\ No newline at end of file diff --git a/help/↕range windows.md b/help/↕range windows.md new file mode 100644 index 00000000..3cb886e5 --- /dev/null +++ b/help/↕range windows.md @@ -0,0 +1,51 @@ +Up Down Arrow (`↕`) + +`↕ 𝕩`: Range + +Return all indices to index into an array of shape `𝕩`, in the shape described by `𝕩`. + +When given a single number, range from 0 to `𝕩-1`. +``` + ↕ 4 +⟨ 0 1 2 3 ⟩ + ↕ 4‿5 +┌─ +╵ ⟨ 0 0 ⟩ ⟨ 0 1 ⟩ ⟨ 0 2 ⟩ ⟨ 0 3 ⟩ ⟨ 0 4 ⟩ + ⟨ 1 0 ⟩ ⟨ 1 1 ⟩ ⟨ 1 2 ⟩ ⟨ 1 3 ⟩ ⟨ 1 4 ⟩ + ⟨ 2 0 ⟩ ⟨ 2 1 ⟩ ⟨ 2 2 ⟩ ⟨ 2 3 ⟩ ⟨ 2 4 ⟩ + ⟨ 3 0 ⟩ ⟨ 3 1 ⟩ ⟨ 3 2 ⟩ ⟨ 3 3 ⟩ ⟨ 3 4 ⟩ + ┘ +``` + +`𝕨 ↕ 𝕩`: Windows + +Overlapping slices of `𝕩` which are of shape `𝕨`. +``` + 5 ↕ "abcdefg" +┌─ +╵"abcde + bcdef + cdefg" + ┘ + a ← 3‿3⥊↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + 2‿2 ↕ a +┌─ +┆ 0 1 + 3 4 + + 1 2 + 4 5 + + + 3 4 + 6 7 + + 4 5 + 7 8 + ┘ +```
\ No newline at end of file diff --git a/help/∊markfirst memberof.md b/help/∊markfirst memberof.md new file mode 100644 index 00000000..05e7ce28 --- /dev/null +++ b/help/∊markfirst memberof.md @@ -0,0 +1,37 @@ +Element Of (`∊`) + +`∊ 𝕩`: Unique Mask + +Mark the first occurrence of each major cell in `𝕩` with a 1, and all other occurrences with a 0. +``` + ∊ 4‿5‿6‿6‿4‿7‿5 +⟨ 1 1 1 0 0 1 0 ⟩ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ∊ a +⟨ 1 1 1 ⟩ +``` + +`𝕨 ∊ 𝕩`: Member Of + +Is each element in `𝕨` a major cell of `𝕩`? +``` + ⟨1⟩ ∊ ↕9 +⟨ 1 ⟩ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ⟨0‿1‿2⟩ ∊ a +┌· +· 0 + ┘ + ⟨1‿3 ⥊ 0‿1‿2⟩ ∊ a +⟨ 1 ⟩ +```
\ No newline at end of file diff --git a/help/∘atop.md b/help/∘atop.md new file mode 100644 index 00000000..b1bcd796 --- /dev/null +++ b/help/∘atop.md @@ -0,0 +1,27 @@ +Ring Operator (`∘`) + +`𝔽∘𝔾 𝕩`: Atop + +Apply `𝔾` to `𝕩`, then apply `𝔽` (`𝔽 𝔾 𝕩`). + +`𝔽` and `𝔾` must be monadic. +``` + -∘- 5 +5 + - - 5 +5 +``` + +`𝕨 𝔽∘𝔾 𝕩`: Dyadic Atop + +Apply `𝔾` to `𝕨` and `𝕩`, then apply `𝔽` (`𝔽 (𝕨 𝔾 𝕩)`). + +`𝔽` must be monadic, and `𝔾` must be dyadic. +``` + 1 -∘+ 2 +¯3 + 1 - + 2 +¯1 + - 1 + 2 +¯3 +```
\ No newline at end of file diff --git a/help/√squareroot root.md b/help/√squareroot root.md new file mode 100644 index 00000000..8e14ff8f --- /dev/null +++ b/help/√squareroot root.md @@ -0,0 +1,21 @@ +Root (`√`) + +`√ 𝕩`: Square root + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + √ 2 +1.4142135623730951 +``` + +`𝕨 √ 𝕩`: Root + +`𝕨`th root of `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 2 √ 2 +1.4142135623730951 + 1‿2‿3‿4 √ 4 +⟨ 4 2 1.5874010519681994 1.414213562373095 ⟩ +```
\ No newline at end of file diff --git a/help/∧sortup and.md b/help/∧sortup and.md new file mode 100644 index 00000000..dd53aee3 --- /dev/null +++ b/help/∧sortup and.md @@ -0,0 +1,21 @@ +Logical And (`∧`) + +`∧ 𝕩`: Sort Up + +Sort array `𝕩` in ascending order. +``` + ∧ 3‿1‿4‿1‿5 +⟨ 1 1 3 4 5 ⟩ +``` + +`𝕨 ∧ 𝕩`: Logical And + +Logical And of `𝕨` and `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 ∧ 1 +1 + 1‿0 ∧ 1‿1 +⟨ 1 0 ⟩ +```
\ No newline at end of file diff --git a/help/∨sortdown or.md b/help/∨sortdown or.md new file mode 100644 index 00000000..6e8d27b7 --- /dev/null +++ b/help/∨sortdown or.md @@ -0,0 +1,23 @@ +Logical Or (`∨`) + +`∨ 𝕩`: Sort Down + +Sort array `𝕩` in descending order. +``` + ∨ 3‿1‿4‿1‿5 +⟨ 5 4 3 1 1 ⟩ +``` + +`𝕨 ∨ 𝕩`: Logical Or + +Logical Or of `𝕨` and `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 ∨ 0 +1 + 1‿0 ∨ 1‿1 +⟨ 1 1 ⟩ + 0 ∨ 0 +0 +```
\ No newline at end of file diff --git a/help/∾join jointo.md b/help/∾join jointo.md new file mode 100644 index 00000000..028ea885 --- /dev/null +++ b/help/∾join jointo.md @@ -0,0 +1,60 @@ +Lazy S (`∾`) + +`∾ 𝕩`: Join + +Join all elements of `𝕩` together. + +Element ranks must be compatible. +``` + ∾ ⟨1‿2, 3, 4‿5⟩ +⟨ 1 2 3 4 5 ⟩ + m ← (3‿1≍⌜4‿2‿5) ⥊¨ 2‿3⥊↕6 +┌─ +╵ ┌─ ┌─ ┌─ + ╵ 0 0 0 0 ╵ 1 1 ╵ 2 2 2 2 2 + 0 0 0 0 1 1 2 2 2 2 2 + 0 0 0 0 1 1 2 2 2 2 2 + ┘ ┘ ┘ + ┌─ ┌─ ┌─ + ╵ 3 3 3 3 ╵ 4 4 ╵ 5 5 5 5 5 + ┘ ┘ ┘ + ┘ + ∾ m +┌─ +╵ 0 0 0 0 1 1 2 2 2 2 2 + 0 0 0 0 1 1 2 2 2 2 2 + 0 0 0 0 1 1 2 2 2 2 2 + 3 3 3 3 4 4 5 5 5 5 5 + ┘ +``` + +`𝕨 ∾ 𝕩`: Join + +Join `𝕨` to `𝕩` along the first axis. +``` + "abcd" ∾ "EFG" +"abcdEFG" + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + c ← 4‿3 ⥊ ↕12 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + 9 10 11 + ┘ + a∾c +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + 0 1 2 + 3 4 5 + 6 7 8 + 9 10 11 + ┘ +```
\ No newline at end of file diff --git a/help/≍solo couple.md b/help/≍solo couple.md new file mode 100644 index 00000000..9ce6366a --- /dev/null +++ b/help/≍solo couple.md @@ -0,0 +1,42 @@ +Tape (`≍`) + +`≍ 𝕩`: Solo + +Add a dimension to `𝕩`. +``` + ≍ 1 +⟨ 1 ⟩ + + ≍≍ 1 +┌─ +╵ 1 + ┘ + + ≍≍≍ 1 +┌─ +╎ 1 + ┘ + + ≍≍ 1‿2‿3‿4 +┌─ +╵ 1 2 3 4 + ┘ + + ≍≍≍ 1‿2‿3‿4 +┌─ +╎ 1 2 3 4 + ┘ +``` + +`𝕨 ≍ 𝕩`: Couple + +Join `𝕨` and `𝕩` along a newly created axis. +``` + 1 ≍ 3 +⟨ 1 3 ⟩ + 1‿2 ≍ 2‿3 +┌─ +╵ 1 2 + 2 3 + ┘ +```
\ No newline at end of file diff --git a/help/≠length notequal.md b/help/≠length notequal.md new file mode 100644 index 00000000..770530e6 --- /dev/null +++ b/help/≠length notequal.md @@ -0,0 +1,30 @@ +Not Equal (`≠`) + +`≠ 𝕩`: Length + +Length of the first dimension of `𝕩`. + +``` + ≠ 3 +1 + ≠ ⟨1, 2, 3⟩ +3 + ≠ 3‿4‿5⥊0 +3 + ≠ 1‿4‿5⥊0 +1 + ≠ 4‿4‿5⥊0 +4 +``` + +`𝕨 ≠ 𝕩`: Not Equal To + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 ≠ 3 +1 + 2‿3‿0 ≠ 3‿1‿0 +⟨ 1 1 0 ⟩ + 'a' ≠ 'a' +0 +```
\ No newline at end of file diff --git a/help/≡depth match.md b/help/≡depth match.md new file mode 100644 index 00000000..0575adef --- /dev/null +++ b/help/≡depth match.md @@ -0,0 +1,23 @@ +Identical To (`≡`) + +`≡ 𝕩`: Depth + +Highest level of nesting in `𝕩`. +``` + ≡ 2‿3‿4 +1 + ≡ ⟨2,<3,4,<<<5⟩ +4 + ≡ 9 +0 +``` + +`𝕨 ≡ 𝕩`: Match + +Does `𝕨` exactly match `𝕩`? +``` + 1 ≡ ⟨1⟩ +0 + ⟨1⟩ ≡ ⟨1⟩ +1 +```
\ No newline at end of file diff --git a/help/≢shape notmatch.md b/help/≢shape notmatch.md new file mode 100644 index 00000000..50e18f9e --- /dev/null +++ b/help/≢shape notmatch.md @@ -0,0 +1,23 @@ +Not Identical To (`≢`) + +`≢ 𝕩`: Shape + +Length of each dimension of x. +``` + ≢ 1 +⟨⟩ + ≢ 1‿2 +⟨ 2 ⟩ + ≢ 1‿2 ≍ 3‿4 +⟨ 2 2 ⟩ +``` + +`𝕨 ≢ 𝕩`: Not Match + +Does `𝕨` not exactly match `𝕩`? +``` + 1 ≢ ⟨1⟩ +1 + ⟨1⟩ ≢ ⟨1⟩ +0 +```
\ No newline at end of file diff --git a/help/≤lessequal.md b/help/≤lessequal.md new file mode 100644 index 00000000..8005681b --- /dev/null +++ b/help/≤lessequal.md @@ -0,0 +1,13 @@ +Lesser Than or Equal To (`≤`) + +`𝕨 ≤ 𝕩`: Lesser Than or Equal To + +`𝕨` and `𝕩` can both be either numbers or characters. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 ≤ 3 +1 + 2‿3‿0 ≤ 3‿1‿0 +⟨ 1 0 1 ⟩ +```
\ No newline at end of file diff --git a/help/≥greatequal.md b/help/≥greatequal.md new file mode 100644 index 00000000..3b4e9cf9 --- /dev/null +++ b/help/≥greatequal.md @@ -0,0 +1,13 @@ +Greater Than or Equal To (`≥`) + +`𝕨 ≥ 𝕩`: Greater Than or Equal To + +`𝕨` and `𝕩` can both be either numbers or characters. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 ≥ 3 +0 + 2‿3‿0 ≥ 3‿1‿0 +⟨ 0 1 1 ⟩ +```
\ No newline at end of file diff --git a/help/⊏firstcell select.md b/help/⊏firstcell select.md new file mode 100644 index 00000000..33d0d2f6 --- /dev/null +++ b/help/⊏firstcell select.md @@ -0,0 +1,38 @@ +Square Image Of (`⊏`) + +`⊏ 𝕩`: First Cell + +First major cell of `𝕩`. +``` + ⊏ ⟨1, 2, 3⟩ +┌· +· 1 + ┘ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ⊏ a +⟨ 0 1 2 ⟩ +``` + +`𝕨 ⊏ 𝕩`: Select + +Select the major cells of `𝕨` at the indices in `𝕩`. +``` + 2‿0 ⊏ ⟨1, 2, 3⟩ +⟨ 3 1 ⟩ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + 2‿0 ⊏ a +┌─ +╵ 6 7 8 + 0 1 2 + ┘ +```
\ No newline at end of file diff --git a/help/⊐classify indexof.md b/help/⊐classify indexof.md new file mode 100644 index 00000000..b4605a59 --- /dev/null +++ b/help/⊐classify indexof.md @@ -0,0 +1,37 @@ +Square Original Of (`⊐`) + +`⊐ 𝕩`: Classify + +First index of each major cell of `𝕩` in `𝕩`. +``` + ⊐ 5‿6‿2‿2‿5‿1 +⟨ 0 1 2 2 0 3 ⟩ + a ← 3‿3 ⥊ 0‿1‿2‿9‿0‿9‿0‿1‿2 +┌─ +╵ 0 1 2 + 9 0 9 + 0 1 2 + ┘ + ⊐ a +⟨ 0 1 0 ⟩ +``` + +`𝕨 ⊐ 𝕩`: Index Of + +First index of each major cell of `𝕩` in `𝕨`. Rank of `𝕩` must be at least cell rank of 𝕨`. + +If a cell is not found in `𝕨`, that position will contain the length of `𝕨` (`≠𝕨`). +``` + 5‿6‿2‿2‿5‿1 ⊐ 5‿2‿1‿6 +⟨ 0 2 5 1 ⟩ + a ← 3‿3 ⥊ 0‿1‿2‿9‿0‿9‿0‿1‿2 +┌─ +╵ 0 1 2 + 9 0 9 + 0 1 2 + ┘ + a ⊐ ⟨9‿0‿9⟩ +┌· +· 3 + ┘ +```
\ No newline at end of file diff --git a/help/⊑first pick.md b/help/⊑first pick.md new file mode 100644 index 00000000..0a4232fa --- /dev/null +++ b/help/⊑first pick.md @@ -0,0 +1,33 @@ +Square Image Of Or Equal To (`⊑`) + +`⊑ 𝕩`: First + +First element of `𝕩`. +``` + ⊑ ⟨1, 2, 3⟩ +1 + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ⊑ a +0 +``` + +`𝕨 ⊑ 𝕩`: Pick + +Pick the element of `𝕨` at index `𝕩`. +``` + 2 ⊑ ⟨1, 2, 3⟩ +3 + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + 2‿0 ⊑ a +6 +```
\ No newline at end of file diff --git a/help/⊒occcount progindex.md b/help/⊒occcount progindex.md new file mode 100644 index 00000000..277fd6ac --- /dev/null +++ b/help/⊒occcount progindex.md @@ -0,0 +1,24 @@ +Square Original Of or Equal To (`⊒`) + +`⊒ 𝕩`: Occurrence Count + +Number of times each major cell of `𝕩` appears before itself. +``` + ⊒ 2‿7‿1‿8‿1‿7‿1‿8‿2‿8‿4 +⟨ 0 0 0 0 1 1 2 1 1 2 0 ⟩ + ≍⟜⊒ 2‿7‿1‿8‿1‿7‿1‿8‿2‿8‿4 +┌─ +╵ 2 7 1 8 1 7 1 8 2 8 4 + 0 0 0 0 1 1 2 1 1 2 0 + ┘ +``` + +`𝕨 ⊒ 𝕩`: Progressive Index Of + +Index of the first unused match of each major cell of `𝕩` in `𝕨`. If there are no more matches left, length of `𝕨` is placed in that position. +``` + "aaa" ⊒ "aaaaa" +⟨ 0 1 2 3 3 ⟩ + "aaabb" ⊒ "ababababab" +⟨ 0 3 1 4 2 5 5 5 5 5 ⟩ +```
\ No newline at end of file diff --git a/help/⊔groupindices group.md b/help/⊔groupindices group.md new file mode 100644 index 00000000..172fe0f5 --- /dev/null +++ b/help/⊔groupindices group.md @@ -0,0 +1,32 @@ +Square Cup (`⊔`) + +`⊔ 𝕩`: Group Indices + +Group the indices of the major cells of `𝕩` by their respective values. + +`𝕩` must consist of integers. Groups start from 0. +``` + ⊔ 4‿5‿6‿6‿4‿7‿5 +⟨ ⟨⟩ ⟨⟩ ⟨⟩ ⟨⟩ ⟨ 0 4 ⟩ ⟨ 1 6 ⟩ ⟨ 2 3 ⟩ ⟨ 5 ⟩ ⟩ + (↕8) ≍ ⊔ 4‿5‿6‿6‿4‿7‿5 +┌─ +╵ 0 1 2 3 4 5 6 7 + ⟨⟩ ⟨⟩ ⟨⟩ ⟨⟩ ⟨ 0 4 ⟩ ⟨ 1 6 ⟩ ⟨ 2 3 ⟩ ⟨ 5 ⟩ + ┘ +``` + +`𝕨 ⊔ 𝕩`: Group + +Group the major cells of `𝕩` by their respective indices in `𝕨`. + +If an element corresponds to `¯1`, it is excluded from grouping. + +An extra element can be added to the end of `𝕨` to specify length of the result. +``` + 1‿0‿1‿2‿2‿3‿3 ⊔ 4‿5‿6‿6‿4‿7‿5 +⟨ ⟨ 5 ⟩ ⟨ 4 6 ⟩ ⟨ 6 4 ⟩ ⟨ 7 5 ⟩ ⟩ + 1‿0‿1‿¯1‿¯1‿3‿3 ⊔ 4‿5‿6‿6‿4‿7‿5 +⟨ ⟨ 5 ⟩ ⟨ 4 6 ⟩ ⟨⟩ ⟨ 7 5 ⟩ ⟩ + 1‿0‿1‿¯1‿¯1‿3‿3‿10 ⊔ 4‿5‿6‿6‿4‿7‿5 +⟨ ⟨ 5 ⟩ ⟨ 4 6 ⟩ ⟨⟩ ⟨ 7 5 ⟩ ⟨⟩ ⟨⟩ ⟨⟩ ⟨⟩ ⟨⟩ ⟨⟩ ⟩ +```
\ No newline at end of file diff --git a/help/⊘valences.md b/help/⊘valences.md new file mode 100644 index 00000000..3caca9a6 --- /dev/null +++ b/help/⊘valences.md @@ -0,0 +1,21 @@ +Circled Division Slash (`⊘`) + +`𝔽⊘𝔾 𝕩`: Valences + +Apply `𝔽` to `𝕩`. +``` + +⊘- 5 +5 + -⊘+ 5 +¯5 +``` + +`𝕨 𝔽⊘𝔾 𝕩`: Valences + +Apply `𝔾` to `𝕨` and `𝕩`. +``` + 4 +⊘- 5 +¯1 + 4 -⊘+ 5 +9 +```
\ No newline at end of file diff --git a/help/⊢identity right.md b/help/⊢identity right.md new file mode 100644 index 00000000..4870b9eb --- /dev/null +++ b/help/⊢identity right.md @@ -0,0 +1,19 @@ +Right Tack (`⊢`) + +`⊢ 𝕩`: + +Return `𝕩`. +``` + ⊢ 5 +5 +``` + +`𝕨 ⊢ 𝕩`: Right + +Return `𝕩`. +``` + 5 ⊢ 8 +8 + 'a' ⊢ 1‿2‿3 +⟨ 1 2 3 ⟩ +```
\ No newline at end of file diff --git a/help/⊣identity left.md b/help/⊣identity left.md new file mode 100644 index 00000000..614c4f2a --- /dev/null +++ b/help/⊣identity left.md @@ -0,0 +1,19 @@ +Left Tack (`⊣`) + +`⊣ 𝕩`: + +Return `𝕩`. +``` + ⊣ 5 +5 +``` + +`𝕨 ⊣ 𝕩`: Left + +Return `𝕨`. +``` + 5 ⊣ 8 +5 + 'a' ⊣ 1‿2‿3 +'a' +```
\ No newline at end of file diff --git a/help/⊸before bindleft.md b/help/⊸before bindleft.md new file mode 100644 index 00000000..461c0167 --- /dev/null +++ b/help/⊸before bindleft.md @@ -0,0 +1,41 @@ +Multimap (`⊸`) + +`𝕗⊸𝔾 𝕩`: Bind Left + +Supply `𝕗` as a left argument to `𝔾` (`𝕗 𝔾 𝕩`). + +`𝕗` must be a value, `𝔾` must be dyadic. +``` + 3⊸- 9 +¯6 + 3 - 9 +¯6 +``` + +`𝔽⊸𝔾 𝕩`: Before + +Apply `𝔽` to `𝕩`, and supply it as a left argument to `𝔾` (`(𝔽 𝕩) 𝔾 𝕩`). + +`𝔽` must be monadic, `𝔾` must be dyadic. +``` + -⊸+ 9 +0 + - + 9 +¯9 + (- 9) + 9 +0 +``` + +`𝕨 𝔽⊸𝔾 𝕩`: Dyadic Before + +Apply `𝔽` to `𝕨`, and supply it as a left argument to `𝔾` (`(𝔽 𝕨) 𝔾 𝕩`). + +`𝔽` must be monadic, `𝔾` must be dyadic. +``` + 2 -⊸+ 1 +¯1 + 2 - + 1 +1 + (- 2) + 1 +¯1 +```
\ No newline at end of file diff --git a/help/⋆exponential power.md b/help/⋆exponential power.md new file mode 100644 index 00000000..9420bcbf --- /dev/null +++ b/help/⋆exponential power.md @@ -0,0 +1,25 @@ +Star (`⋆`) + +`⋆ 𝕩`: Exponential + +`e` (Euler's constant) to the power of `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + ⋆ 0‿1‿2‿3 +⟨ 1 2.718281828459045 7.38905609893065 20.085536923187668 ⟩ +``` + +`𝕨 ⋆ 𝕩`: Power + +`𝕨` to the power of `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 2 ⋆ 5 +32 + 8‿5‿9 ⋆ 2 +⟨ 64 25 81 ⟩ + 2‿3 ⋆ 3‿¯4 +⟨ 8 0.012345679012345678 ⟩ +```
\ No newline at end of file diff --git a/help/⋈enlist pair.md b/help/⋈enlist pair.md new file mode 100644 index 00000000..98407d47 --- /dev/null +++ b/help/⋈enlist pair.md @@ -0,0 +1,36 @@ +Bow Tie (`⋈`) + +`⋈ 𝕩`: Enlist + +Put `𝕩` in a single element list. (`⟨𝕩⟩`) +``` + ⋈ 1 +⟨ 1 ⟩ + ⋈ 4‿4 ⥊ 3‿67‿8‿0 +┌─ +· ┌─ + ╵ 3 67 8 0 + 3 67 8 0 + 3 67 8 0 + 3 67 8 0 + ┘ + ┘ +``` + +`𝕨 ⋈ 𝕩`: Pair + +Put `𝕨` and `𝕩` in a two element list. (`⟨𝕨, 𝕩⟩`) +``` + 1 ⋈ 2 +⟨ 1 2 ⟩ + 1 ⋈ "dsdasdas" +⟨ 1 "dsdasdas" ⟩ + (3‿3 ⥊ 3) ⋈ 67‿'a'‿"example" +┌─ +· ┌─ ⟨ 67 'a' "example" ⟩ + ╵ 3 3 3 + 3 3 3 + 3 3 3 + ┘ + ┘ +```
\ No newline at end of file diff --git a/help/⌈ceiling maximum.md b/help/⌈ceiling maximum.md new file mode 100644 index 00000000..3b956e9d --- /dev/null +++ b/help/⌈ceiling maximum.md @@ -0,0 +1,23 @@ +Left Ceiling (`⌈`) + +`⌈ 𝕩`: Ceiling + +Round `𝕩` up. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + ⌈ 1.2‿π‿3‿7.89 +⟨ 2 4 3 8 ⟩ +``` + +`𝕨 ⌈ 𝕩`: Maximum + +Maximum of `𝕨` and `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 ⌈ 2 +2 + 2‿3 ⌈ 4‿2 +⟨ 4 3 ⟩ +```
\ No newline at end of file diff --git a/help/⌊floor minimum.md b/help/⌊floor minimum.md new file mode 100644 index 00000000..a08d2da4 --- /dev/null +++ b/help/⌊floor minimum.md @@ -0,0 +1,23 @@ +Left Floor (`⌊`) + +`⌊ 𝕩`: Floor + +Round `𝕩` down. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + ⌊ 1.2‿π‿3‿7.89 +⟨ 1 3 3 7 ⟩ +``` + +`𝕨 ⌊ 𝕩`: Minimum + +Minimum of `𝕨` and `𝕩`. + +[Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 1 ⌊ 2 +1 + 2‿3 ⌊ 4‿2 +⟨ 2 2 ⟩ +```
\ No newline at end of file diff --git a/help/⌜table.md b/help/⌜table.md new file mode 100644 index 00000000..65ebe6c8 --- /dev/null +++ b/help/⌜table.md @@ -0,0 +1,20 @@ +Top Left Corner (`⌜`) + +`𝕨 𝔽⌜ 𝕩`: Each + +Apply `𝔽` between every possible pair of the elements of the arguments. +``` + 1‿2‿3‿4 +⌜ 4‿5‿6‿7 +┌─ +╵ 5 6 7 8 + 6 7 8 9 + 7 8 9 10 + 8 9 10 11 + ┘ + "abc" ∾⌜ "xyz" +┌─ +╵ "ax" "ay" "az" + "bx" "by" "bz" + "cx" "cy" "cz" + ┘ +```
\ No newline at end of file diff --git a/help/⌽reverse rotate.md b/help/⌽reverse rotate.md new file mode 100644 index 00000000..f8ed52d0 --- /dev/null +++ b/help/⌽reverse rotate.md @@ -0,0 +1,41 @@ +Circle Stile (`⌽`) + +`⌽ 𝕩`: Reverse + +Reverse the first axis of `𝕩`. +``` + ⌽ 1‿2‿3 +⟨ 3 2 1 ⟩ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ⌽ a +┌─ +╵ 6 7 8 + 3 4 5 + 0 1 2 + ┘ +``` + +`𝕨 ⌽ 𝕩`: Dyad + +Move the first `𝕨` elements of `𝕩` to its end. Negative `𝕨` reverses the direction of rotation. +``` + 2 ⌽ 1‿2‿3 +⟨ 3 1 2 ⟩ + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + 2 ⌽ a +┌─ +╵ 6 7 8 + 0 1 2 + 3 4 5 + ┘ +```
\ No newline at end of file diff --git a/help/⌾under.md b/help/⌾under.md new file mode 100644 index 00000000..c7678087 --- /dev/null +++ b/help/⌾under.md @@ -0,0 +1,20 @@ +Circle Jot (`⌾`) + +`𝔽⌾𝔾 𝕩`, `𝕨 𝔽⌾𝔾 𝕩`: Under + +- Apply transformation `𝔾` to all arguments +- Apply `𝔽` to the transformed arguments +- Undo transformation `𝔾` + +Where `𝔾` must be + +1. A function invertible by `⁼` (Undo) +2. A structural modification +``` + 9⌾(1⊸⊑) 1‿2‿3 +⟨ 1 9 3 ⟩ + √⁼ (√1) + (√9) +16 + 1 +⌾√ 9 +16 +```
\ No newline at end of file diff --git a/help/⍉transpose dyadtranspose.md b/help/⍉transpose dyadtranspose.md new file mode 100644 index 00000000..da7f058f --- /dev/null +++ b/help/⍉transpose dyadtranspose.md @@ -0,0 +1,36 @@ +Circle Backslash (`⍉`) + +`⍉ 𝕩`: Transpose + +Move the first axis of `𝕩` to the end. +``` + a ← 3‿3 ⥊ ↕9 +┌─ +╵ 0 1 2 + 3 4 5 + 6 7 8 + ┘ + ⍉ a +┌─ +╵ 0 3 6 + 1 4 7 + 2 5 8 + ┘ + b ← 1‿2‿3 ⥊ ↕6 +┌─ +╎ 0 1 2 + 3 4 5 + ┘ + ≢⍉ b +⟨ 2 3 1 ⟩ +``` + +`𝕨 ⍉ 𝕩`: Dyad + +Rearrange the axes of `𝕩` as per the axis indices in `𝕨`. +``` + ≢ a ← 2‿3‿4‿5‿6 ⥊1 +⟨ 2 3 4 5 6 ⟩ + ≢ 1‿3‿2‿0‿4 ⍉ a +⟨ 5 2 4 3 6 ⟩ +```
\ No newline at end of file diff --git a/help/⍋gradeup binsup.md b/help/⍋gradeup binsup.md new file mode 100644 index 00000000..1aee7730 --- /dev/null +++ b/help/⍋gradeup binsup.md @@ -0,0 +1,28 @@ +Delta Stile (`⍋`) + +`⍋ 𝕩`: Grade Up + +Indices of `𝕩` that would sort its major cells in ascending order. +``` + a ← 3‿2‿1 +⟨ 3 2 1 ⟩ + ⍋ a +⟨ 2 1 0 ⟩ + (⍋a) ⊏ a +⟨ 1 2 3 ⟩ + +``` + +`𝕨 ⍋ 𝕩`: Bins Up + +Binary search for each element of `𝕩` in `𝕨`, and return the index found, if any. + +`𝕨` must be sorted in ascending order. +``` + 3‿4‿5‿7 ⍋ 2 +┌· +· 0 + ┘ + 3‿4‿5‿7 ⍋ 2‿6 +⟨ 0 3 ⟩ +```
\ No newline at end of file diff --git a/help/⍒gradedown binsdown.md b/help/⍒gradedown binsdown.md new file mode 100644 index 00000000..ed03f6f4 --- /dev/null +++ b/help/⍒gradedown binsdown.md @@ -0,0 +1,29 @@ +Del Stile (`⍒`) + +`⍒ 𝕩`: Grade Down + +Indices of `𝕩` that would sort its major cells in descending order. +``` + a ← 1‿2‿3 +⟨ 1 2 3 ⟩ + ⍒ a +⟨ 2 1 0 ⟩ + (⍒a) ⊏ a +⟨ 3 2 1 ⟩ +``` + +`𝕨 ⍒ 𝕩`: Bins Down + +Binary search for each element of `𝕩` in `𝕨`, and return the index found, if any. + +`𝕨` must be sorted in descending order. + +[Right Pervasive.](https://mlochbaum.github.io/BQN/doc/arithmetic.html#pervasion) +``` + 7‿5‿4‿3 ⍒ 2 +┌· +· 4 + ┘ + 7‿5‿4‿3 ⍒ 2‿6 +⟨ 4 1 ⟩ +```
\ No newline at end of file diff --git a/help/⍟repeat.md b/help/⍟repeat.md new file mode 100644 index 00000000..922e57a2 --- /dev/null +++ b/help/⍟repeat.md @@ -0,0 +1,15 @@ +Circle Star (`⍟`) + +`𝔽⍟𝔾 𝕩`, `𝕨 𝔽⍟𝔾 𝕩`: Repeat + +Apply `𝔾` to `𝕨` and `𝕩` and apply `𝔽` to `𝕩` that may times. If `𝕨` is given, keep it as a constant left argument. + +If `𝔾` returns an array, give `𝔽⍟𝕩` for each element. +``` + 1 +⍟⊢ 4 +8 + 1 +⍟1‿2‿3 4 +⟨ 5 6 7 ⟩ + 3 ∾⍟{≠𝕩} ⟨4,5,6⟩ +⟨ 3 3 3 4 5 6 ⟩ +```
\ No newline at end of file diff --git a/help/⍷deduplicate find.md b/help/⍷deduplicate find.md new file mode 100644 index 00000000..ae314268 --- /dev/null +++ b/help/⍷deduplicate find.md @@ -0,0 +1,56 @@ +Epsilon Underbar (`⍷`) + +`⍷ 𝕩`: Deduplicate + +Unique major cells of `𝕩`. +``` + ⍷ 4‿5‿6‿6‿4‿7‿5 +⟨ 4 5 6 7 ⟩ + a ← 3‿3 ⥊ ↕6 +┌─ +╵ 0 1 2 + 3 4 5 + 0 1 2 + ┘ + ⍷ a +┌─ +╵ 0 1 2 + 3 4 5 + ┘ +``` + +`𝕨 ⍷ 𝕩`: Find + +Mark the top left location of the occurrences of `𝕨` in `𝕩` with a 1, and other locations with 0. + +Result is the same shape as `(≢𝕨)↕x`. +``` + "string" ⍷ "substring" +⟨ 0 0 0 1 ⟩ + "loooooong" ⍷ "short" +⟨⟩ + a ← 7 (4|⋆˜)⌜○↕ 9 +┌─ +╵ 1 1 1 1 1 1 1 1 1 + 0 1 2 3 0 1 2 3 0 + 0 1 0 1 0 1 0 1 0 + 0 1 0 3 0 1 0 3 0 + 0 1 0 1 0 1 0 1 0 + 0 1 0 3 0 1 0 3 0 + 0 1 0 1 0 1 0 1 0 + ┘ + b ← (0‿3‿0≍0‿1‿0) +┌─ +╵ 0 3 0 + 0 1 0 + ┘ + b ⍷ a +┌─ +╵ 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 + 0 0 1 0 0 0 1 + 0 0 0 0 0 0 0 + 0 0 1 0 0 0 1 + ┘ +```
\ No newline at end of file diff --git a/help/⎉rank.md b/help/⎉rank.md new file mode 100644 index 00000000..645b0aaf --- /dev/null +++ b/help/⎉rank.md @@ -0,0 +1,36 @@ +Circled Horizontal Bar With Notch (`⎉`) + +`𝔽⎉𝕘 𝕩`, `𝕨 𝔽⎉𝕘 𝕩`: Rank + +Apply `𝔽` to cells at ranks given in `𝕘`. + +The ranks applied are given by the following: + +- `⎉ c` Rank-c cells of `𝕩` (monadic) or both arguments (dyadic) +- `⎉ b‿c` ⍝ Rank-b cells of `𝕨` and rank-c cells of `𝕩` (dyadic) +- `⎉ a‿b‿c` ⍝ Rank-a cells of `𝕩` (monadic), b-cells of `𝕨` and c-cells of `𝕩` (dyadic) + +``` + a ← 3‿2‿4⥊"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +┌─ +╎"ABCD + EFGH + + ·IJKL + MNOP + + ·QRST + UVWX" + ┘ + ⌽⎉2 a +┌─ +╎"EFGH + ABCD + + ·MNOP + IJKL + + ·UVWX + QRST" + ┘ +```
\ No newline at end of file diff --git a/help/⎊catch.md b/help/⎊catch.md new file mode 100644 index 00000000..8f7c680f --- /dev/null +++ b/help/⎊catch.md @@ -0,0 +1,15 @@ +Circled Triangle Down (`⎊`) + +`𝔽⎊𝔾 𝕩`, `𝕨 𝔽⎊𝔾 𝕩`: Catch + +Apply `𝔽` to the arguments. + +If an error happens when `𝔽` is applied, cancel its execution, apply `𝔾` to the arguments and return the results. + +Otherwise, return the results of `𝔽`. +``` + ∾⎊{"error occurred with argument: "∾•Fmt 𝕩} 1 +"error occurred with argument: 1" + ∾⎊{"error occurred with argument: "∾•Fmt 𝕩} ⟨⟨1,2⟩, ⟨3,4⟩⟩ +⟨ 1 2 3 4 ⟩ +```
\ No newline at end of file diff --git a/help/○over.md b/help/○over.md new file mode 100644 index 00000000..98082965 --- /dev/null +++ b/help/○over.md @@ -0,0 +1,27 @@ +Circle (`○`) + +`𝔽○𝔾 𝕩`: Atop + +Apply `𝔾` to `𝕩`, then apply `𝔽` (`𝔽 𝔾 𝕩`). + +`𝔽` and `𝔾` must be monadic. +``` + -○- 5 +5 + - - 5 +5 +``` + +`𝕨 𝔽○𝔾 𝕩`: Over + +Apply `𝔾` to `𝕨` and `𝕩`, then apply `𝔽` to them (`(𝔾 𝕨) 𝔽 (𝔾 𝕩)`). + +`𝔽` must be dyadic, `𝔾` must be monadic. +``` + 1 +○- 2 +¯3 + 1 + - 2 +¯1 + (- 1) + (- 2) +¯3 +```
\ No newline at end of file diff --git a/help/◶choose.md b/help/◶choose.md new file mode 100644 index 00000000..1b7d81f5 --- /dev/null +++ b/help/◶choose.md @@ -0,0 +1,17 @@ +Circle with Lower Right Quadrant (`◶`) + +`𝔽◶𝕘 𝕩`, `𝕨 𝔽◶𝕘 𝕩`: Choose + +Apply `𝔽` to the arguments and pick a function from list `𝕘`. Apply the picked function to the arguments. +``` + F ← ⊢◶+‿-‿÷‿× +⊢◶⟨ + - ÷ × ⟩ + F 0 +0 + F 1 +¯1 + F 2 +0.5 + F 3 +1 +```
\ No newline at end of file diff --git a/help/⚇depth.md b/help/⚇depth.md new file mode 100644 index 00000000..14352bd4 --- /dev/null +++ b/help/⚇depth.md @@ -0,0 +1,12 @@ +Circle With Two Dots (`⚇`) + +`𝔽⚇𝕘 𝕩`, `𝕨 𝔽⚇𝕘 𝕩`: Depth + +Apply `𝔽` to the cells of the arguments at depth given in `𝕘`. + +``` + 1⊸↓⚇1 ⟨⟨1,2,3⟩, ⟨4,5,6⟩⟩ +⟨ ⟨ 2 3 ⟩ ⟨ 5 6 ⟩ ⟩ + 1 ↓⚇1 ⟨⟨1,2,3⟩, ⟨4,5,6⟩⟩ +⟨ ⟨ 2 3 ⟩ ⟨ 5 6 ⟩ ⟩ +```
\ No newline at end of file diff --git a/help/⟜after bindright.md b/help/⟜after bindright.md new file mode 100644 index 00000000..b1fa1aa5 --- /dev/null +++ b/help/⟜after bindright.md @@ -0,0 +1,41 @@ +Left Multimap (`⟜`) + +`𝔽⟜𝕘 𝕩`: Bind + +Supply `𝕘` as a right argument to `𝔽` (`𝕩 𝔽 𝕘`). + +`𝕘` must be a value, `F` must be dyadic. +``` + -⟜3 9 +6 + - 3 9 +Error + 9 - 3 +6 +``` + +`𝔽⟜𝔾 𝕩`: After + +Apply `𝔾` to `𝕩`, and supply it as a right argument to `𝔽` (`𝕩 𝔽 (𝔾 𝕩)`). + +`𝔽` must be dyadic, `𝔾` must be monadic. +``` + ×⟜- 9 +¯81 + × - 9 +¯1 + 9 × (- 9) +¯81 +``` + +`𝕨 𝔽⟜𝔾 𝕩`: Dyadic After + +Apply `𝔾` to `𝕩`, and supply it as a right argument to `𝔽` (`𝕨 𝔽 (𝔾 𝕩)`). + +`𝔽` must be dyadic, `𝔾` must be monadic. +``` + 2 ×⟜- 1 +¯2 + 2 × (- 1) +¯2 +```
\ No newline at end of file diff --git a/help/⥊deshape reshape.md b/help/⥊deshape reshape.md new file mode 100644 index 00000000..f9b4967f --- /dev/null +++ b/help/⥊deshape reshape.md @@ -0,0 +1,41 @@ +Barb (`⥊`) + +`⥊ 𝕩`: Deshape + +Put all elements of `𝕩` in a rank 1 array, converting to array if necessary. +``` + ⥊ 1 +⟨ 1 ⟩ + ⥊ 1‿2 ≍ 3‿4 +⟨ 1 2 3 4 ⟩ +``` + +`𝕨 ⥊ 𝕩`: Reshape + +Put all elements of `𝕩` in an array of shape `𝕨`, adding or removing elements if necessary. + +A single element in `𝕩` can be a function, which will be replaced with an appropriate length: +- `∘` Exact fit +- `⌊` Round length down, discarding elements +- `⌽` Round length up +- `↑` Round length up, and use element fill to add extra elements. +``` + 3‿3 ⥊ 3 +┌─ +╵ 3 3 3 + 3 3 3 + 3 3 3 + ┘ + 2‿⌽‿2 ⥊ 1‿2‿3 +┌─ +╎ 1 2 + + 3 1 + ┘ + 2‿↑‿2 ⥊ 1‿2‿3 +┌─ +╎ 1 2 + + 3 0 + ┘ +```
\ No newline at end of file |
