From 2db444439b7dc3662fd006b56ae88b73d7eb4e4f Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sun, 24 Jan 2021 21:25:06 -0500 Subject: BQN-J dictionary --- docs/doc/fromJ.html | 568 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 568 insertions(+) create mode 100644 docs/doc/fromJ.html (limited to 'docs/doc/fromJ.html') diff --git a/docs/doc/fromJ.html b/docs/doc/fromJ.html new file mode 100644 index 00000000..72d4f59b --- /dev/null +++ b/docs/doc/fromJ.html @@ -0,0 +1,568 @@ + + + + BQN–J dictionary + + +

BQN–J dictionary

+ +

A guide to help users of J get up to speed with BQN quickly.

+

Terminology

+

Array model

+

BQN uses the based array model, which is fundamentally different from J's flat array model. BQN uses non-array values such as characters and numbers, called "atoms", while in J every noun is an array. A BQN array can contain any values in any mixture, while a J array must be uniformly numbers, characters, or boxes (BQN doesn't use boxes).

+

The J terms "atom" and "element" are used to mean different things by different authors. In BQN, an atom or rank-0 array is called a "unit", and the values contained in an array—which may or may not be arrays—are called "elements". Each element is contained in a 0-cell, or rank-0 subarray. BQN uses the term "major cell" for what J calls an "item" of an array: a cell with rank one less than that array. BQN shares the terms "list" and "table" for rank-1 and rank-2 arrays with J.

+

BQN uses "depth" rather than "boxing level". BQN gives atoms depth 0, so that the depth of a BQN array is one higher than the boxing level of the corresponding J array.

+

Roles

+

In J, the part of speech is an inherent property of a value, while in BQN it is determined by how the value is used in a particular expression, and can be different from the value's type. See context-free grammar.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
J part of speechBQN role
NounSubject
VerbFunction
Adverb1-modifier
Conjunction2-modifier
+

Syntax

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JBQNRemarks
NB.#
'"' creates characters
=. and =: and to define; to modify
3 :… or {{}};To separate function cases
:{}
x y𝕨 𝕩𝕊 for block function self-reference
u v𝔽 𝔾𝕣 for block modifier self-reference
_¯ or
2 3 4234
[:·Cap
assert.!
+

BQN's explicit functions and modifiers are called "blocks", and have a more sophisticated syntax than J; see the documentation. BQN uses lexical scope, and has no global variables. BQN also has a list notation using ⟨⟩.

+

For reading

+

J analogues of BQN primitive functions are given below. They are not always the same; usually this is because BQN has extra functionality relative to J, although in some cases it has less or different functionality.

+

Functions + - | < > are the same in both languages.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BQN×÷
J*%^%:<.>.<:>:[]|.|:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BQN¬=
Monad/:~\:~-.#@$#L.$,;,:
Dyad*.+.+-.=~:-:-.@-:$,,:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BQN»«/
Monad<\<\.i.#{.(_1-#){.]-@#{.(1+#){.]I.
Dyad{.}.<\#@]{.,-@#@]{.,~#
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BQN
Monad/:/:{.0{::,i.~~.~:~.</.i.@#
DyadI.I.&:-{{::i.e.E.</.
+

Most of BQN's combinators have J equivalents. The J equivalent "_ for ˙ assumes a noun operand, but ˙ makes a constant function for any operand. has arguments reversed relative to @., and uses an actual array of functions rather than gerunds. Besides these, BQN's is like a J hook, that is, FG is (F G), and applies in the opposite direction.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
BQN˙˜
J"_~@:&:&.::@.
+

For other modifiers the correspondence is looser. Here shows the dyadic case and ´ the monadic case only.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BQN¨´˝`˘
J&.>&.>/&.>///\"_1"L:^:^:_1
+

For writing

+

J's primitive nouns are easily defined in BQN.

+ + + + + + + + + + + + + + + + + +
JBQN
a.@+↕256
a:<↕0
+

Functions + - | < > are the same in both languages.

+

Some other primitives are essentially the same in J and BQN, but with different spellings (but transpose behaves differently; J's dyadic |: is more like ):

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
J*%^^.%:<.>.[]|.|:
BQN×÷
+

Additionally, |.!.f is f« with a natural number left argument. Change « to » to rotate right instead of left.

+

The tables below give approximate implementations of J primitives. J has a whole lot of complicated primitives that no one uses (some of which are officially deprecated), so not everything is translated here.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JMonadDyad
=()=
<:-1
>:1+
+.
+:2׬∨
*:ט¬∧
-.¬¬∊/⊣
-:÷2
%.+˝×1
$
~.
~:
,
,.˘˘
,:
;(<(1≥≡))
#/
#.+˜+˜´
#:2|⌊÷2(1+·2){𝕨|1↓⌊÷`𝕨∾<𝕩}
!×´1+↕-˜((×´))1+↕
/:
\:
{(<⟨⟩)<⌜´
{.
{:˝
{::
}.1
}:¯1
e.><∾∊¨
E.
i.
i:{𝕩-˜1+2×𝕩}⊣-1+⌽
I./
L.
-- cgit v1.2.3