BQN ist eine moderne Array-Programmiersprache, die Marshall Lochbaum ab 2020 entworfen hat („An APL for your flying saucer"). BQN führt Ken Iversons Array-Paradigma fort, ersetzt aber die schwer lesbaren APL-Symbole durch eine konsistente, Unicode-basierte Notation mit klarer Trennung von Funktionen, Modifiern und Train-Ausdrücken. Lochbaum war zuvor J-Entwickler; BQN ist seine Antwort auf Lesbarkeit und moderne Tooling-Lücken der älteren Array-Sprachen.
Einstieg
bqn # REPL starten (CBQN)
bqn prog.bqn # Datei ausführen
Wichtige Primitive
- Arithmetik:
+,-,×(Multiplikation),÷(Division),√,⋆(Potenz) — vektorisieren automatisch - Logik/Vergleich:
∧,∨,¬,≤,<,>,≥,= - Arrays:
↕(Range),∾/≍/⋈(Verknüpfen),⊑/⊏(Indizieren),↑/↓(Präfix/Suffix),⥊(Reshape) - 1-Modifier:
˜(dupliziert/tauscht),¨(Map),´(Fold),`(Scan) - 2-Modifier:
∘/○(Komposition),⊸/⟜(Hooks)
Beispiele
1 + 2 ‿ 3 ‿ 4 # 3‿4‿5 (Vektorisierung)
↕ 5 # 0‿1‿2‿3‿4 (Range, 0-basiert)
(+´÷≠) 1 ‿ 2 ‿ 3 # 2 (Durchschnitt als Train)
1 ÷ 2 + 3 # 0.2 (rechts-nach-links-Auswertung)
a ← 1 ‿ 2 ‿ 3 # Zuweisung mit ←
Negative Zahlen schreibt BQN mit Hochminus (¯1), damit das Minus nicht mit dem Subtraktionsoperator kollidiert; π und ∞ sind eingebaute Konstanten. Blöcke { ... } sind lexikalisch gescopt, Argumente heißen 𝕨/𝕩, Rekursion 𝕊. Die Referenzimplementierung ist selbst-hostend (Compiler erzeugt Bytecode); CBQN ist die schnelle C-Implementierung, daneben existieren Implementierungen in JS, Java, Rust und weiteren Sprachen.
Verwandte Grundlagen: APL-Befehle, J-Befehle, K-Befehle, Nial-Befehle, Ivy-Befehle.