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.