Klong ist eine kleine, leicht erlernbare Array-Programmiersprache, die Nils M. Holm als vereinfachte Variante von K entwickelt hat. Sie übernimmt die kompakte Symbolik der K-Familie, vermeidet aber deren Mehrdeutigkeiten und ist dadurch deutlich zugänglicher. Der Name stammt von „K-long“.

Erste Schritte

Klong läuft als Interpreter (Programm kg) mit interaktiver REPL. Einfache Ausdrücke werden direkt ausgewertet:

kg
?"Hallo Klong"
1+2*3

Variablen weist man mit : zu, Funktionen definiert man mit f:{...} und ruft sie mit f(x) auf. Kommentare beginnen mit //.

Monaden, Diaden und Arrays

  • Monade: Operator mit einem Argument, z.B. -x (Negation), #x (Länge), |x (Reverse), ^x (Aufsteigend sortieren).
  • Diade: Operator mit zwei Argumenten, z.B. a+b, a*b, a!b (Permutation/Index), a?b (Finden), a@b (Teil-Array/Index).
  • Listen werden in eckigen Klammern geschrieben: a:[1 2 3 4 5], Zugriff über a@1 (nullbasiert).
  • Wie in der K-Familie gilt: Operatoren arbeiten automatisch elementweise auf Arrays — a*2 verdoppelt jedes Element.

Kontrollfluss

:{[x] ...}          // anonyme Funktion (Lambda)
:{x*2}              // Verdoppeln
{x*x}'[1 2 3]       // each-Map: [1 4 9]
+/[1 2 3 4]         // Summe: 10 (Fold mit +)
:> 1 2 3            // sortiert aufsteigend
&[1 2 3]>[2 1 3]   // & = Tiefe/Depth, > = groesser

Klong ist bewusst auf die Kernkonzepte der K-Familie reduziert (Atome, Arrays, Verben, Adverbien), besitzt aber auch einen eingebauten JSON-artigen Ausgabe-Modus. Als Implementierung existiert neben dem klassischen C-Interpreter mit KlongPy eine vektorisierte Python-Variante mit optionaler GPU-Beschleunigung über PyTorch.

Verwandte Grundlagen

Klong gehört zur Familie der Array-Sprachen: APL-Befehle, Q-Befehle (kdb+), K-Befehle, J-Befehle, Nial-Befehle, Ivy-Befehle und BQN-Befehle. Datenanalytisch sinnvoll sind auch Python-Befehle.