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 übera@1(nullbasiert). - Wie in der K-Familie gilt: Operatoren arbeiten automatisch elementweise auf Arrays —
a*2verdoppelt 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.