BQN
BQN is an APLfamily language designed primarily by Marshall Lochbaum. Although it maintains the concept of arraydriven computing and much of APL's array functionality, BQN discards all compatibility with other array languages and changes many fundamental concepts. It uses the based array model with dedicated array notation, distinguishes between data types and expression roles to give the language a contextfree grammar with firstclass functions, and uses a new set of glyphs with different primitive pairings. The language uses the leading axis model and tacit programming as core paradigms. Its implementation is largely selfhosted, with an arraybased compiler like Codfns.
Contents
Implementations
BQN has several implementations,^{[1]} with all complete ones based on selfhosted sources, which are compiled to bytecode and included as literal arrays or similar in the implementation's source. CBQN, developed by dzaima in C, is the primary implementation with the best performance. A JavaScript version can be run online. It's slower than CBQN compiled to Wasm, but easier to connect with browser functionality.
The Singeli language was developed in order to implement BQN more effectively. CBQN uses Singeli for primitive code that uses vector instructions, and can be built with or without these optimized implementations. The Singeli implementation is written in BQN and currently targets C.
dzaima/BQN
Now largely replaced by CBQN, dzaima/BQN is dzaima's independent implementation in Java, based on dzaima/APL. While dzaima/APL adds significant new functionality and is different from any other APL, dzaima/BQN follows the BQN specification closely and sometimes extends it with system functions. It has often been the first implementation to support new functionality, particularly syntax such as block headers, and was the fastest implementation before CBQN was created. It introduced the bytecode format now shared with selfhosted BQN, and was used for development and bootstrapping.
Primitives
Functions
Glyph  Monadic  Dyadic 

+ 
Conjugate  Add 
 
Negate  Subtract 
× 
Sign  Multiply 
÷ 
Reciprocal  Divide 
⋆ 
Exponential  Power 
√ 
Square Root  Root 
⌊ 
Floor  Minimum 
⌈ 
Ceiling  Maximum 
∧ 
Sort Up  And 
∨ 
Sort Down  Or 
¬ 
Not  Span 
 
Absolute Value  Modulus 
≤ 
Less Than or Equal to  
< 
Enclose  Less Than 
> 
Merge  Greater Than 
≥ 
Greater Than or Equal to  
= 
Rank  Equals 
≠ 
Length  Not Equals 
≡ 
Depth  Match 
≢ 
Shape  Not Match 
⊣ 
Identity  Left 
⊢ 
Identity  Right 
⥊ 
Deshape  Reshape 
∾ 
Join  Join to 
≍ 
Solo  Couple 
↑ 
Prefixes  Take 
↓ 
Suffixes  Drop 
↕ 
Range  Windows 
» 
Nudge  Shift Before 
« 
Nudge Back  Shift After 
⌽ 
Reverse  Rotate 
⍉ 
Transpose  Reorder axes 
/ 
Indices  Replicate 
⍋ 
Grade Up  Bins Up 
⍒ 
Grade Down  Bins Down 
⊏ 
First Cell  Select 
⊑ 
First  Pick 
⊐ 
Classify  Index of 
⊒ 
Occurrence Count  Progressive Index of 
∊ 
Unique Mask  Member of 
⍷ 
Deduplicate  Find 
⊔ 
Group Indices  Group 
Modifiers
1modifiers in BQN use superscript symbols, while 2modifiers use symbols with a circle, but not one with a line through it like ⌽
and ⍉
.


Some modifiers are closely related, and some of their glyphs are intended to allude to this:
 The three 1modifers Cells (
𝔽˘
), Each (𝔽¨
), and Undo (𝔽⁼
) are equivalent to using a rightoperand of¯1
with the 2modifiers Rank (𝔽⎉¯1
), Depth (𝔽⚇¯1
), and Repeat (𝔽⍟¯1
). Therefore the 2modifiers are circled versions of the 1modifiers (except in the case of Undo/Repeat).  Under (
𝔽⌾𝔾
) is in principle equivalent to𝔾⁼∘𝔽○𝔾
. Therefore,⌾
is a combination of the glyphs∘
and○
.
The Name BQN
The name "BQN" was originated as a forward iteration of the letters of APL, and "happens to match the capitals in 'Big Questions Notation'"^{[3]}.
Lochbaum recounts, "I obtained 'BQN' by moving each letter in 'APL' forward by one in the alphabet. I'd come up with the backronym 'Big Questions Notation' by the time I realized N doesn't come after L."^{[4]}
Lochbaum commented further on this, saying:
...the way I came up with the name BQN was I thought, ... alright, I'm working on this next APL. What do I call [it?] ... I took took APL and I moved it forward and I got BQN. And I said, well, BQN, that sounds pretty good... [B]ig Questions Notation is what I ended up with. I like it 'cause it suggests that not only you're solving big questions, but you have big questions about the notation, so it's a little tongue in cheek. And I said also, you can pronounce it like bacon, so there's even a food pun like Apple. And after some half hour or an hour of thinking about this, I realized that the letter that comes after L is M, not N. I think it would be much more logical for N to come first, because it's the letter with two humps. BQM is a horrible, horrible name, and so I stuck with BQN. ^{[5]}
References
 ↑ ^{1.0} ^{1.1} Marshall Lochbaum. "How to run BQN"
 ↑ Marshall Lochbaum. "BQN's development history".
 ↑ Marshall Lochbaum. "What Kind of a Name is BQN?"
 ↑ Marshall Lochbaum. Stack Exchange Transcript
 ↑ Marshall Lochbaum and the BQN array language. Array Cast. Aug 7, 2021. (In response to a question starting at the 11:29 mark.)
APL dialects [edit]  

Maintained  APL+Win ∙ APL2 ∙ APL64 ∙ APL\iv ∙ Aplette ∙ April ∙ Codfns ∙ Dyalog APL ∙ dzaima/APL ∙ Extended Dyalog APL ∙ GNU APL ∙ KAP ∙ NARS2000 ∙ Pometo 
Historical  A Programming Language ∙ A+ (A) ∙ APL# ∙ APL\360 ∙ APL/700 ∙ APL\1130 ∙ APL\3000 ∙ APL.68000 ∙ APL*PLUS ∙ APL.jl ∙ APL.SV ∙ APLX ∙ Iverson notation ∙ IVSYS/7090 ∙ NARS ∙ ngn/apl ∙ openAPL ∙ Operators and Functions ∙ PAT ∙ Rowan ∙ SAX ∙ SHARP APL ∙ Rationalized APL ∙ VisualAPL (APLNext) ∙ VS APL ∙ York APL 
Derivatives  AHPL ∙ BQN ∙ CoSy ∙ ELI ∙ Glee ∙ I ∙ Ivy ∙ J ∙ Jelly ∙ Jellyfish ∙ K (Q, KDB+) ∙ Lang5 ∙ Nial ∙ RAD 
Overviews  Timeline of array languages ∙ Timeline of influential array languages ∙ Family tree of array languages 