Nial (Nested Interactive Array Language) ist eine funktionale Array-Programmiersprache, die von Mike Jenkins und Trenchard More ab 1979 an der Queen's University at Kingston zusammen mit dem IBM Cambridge Scientific Center entwickelt wurde. Nial macht verschachtelte Arrays (nested arrays) zum zentralen Datentyp: Anders als klassische Array-Sprachen wie APL erlaubt Nial Arrays, deren Elemente selbst wieder Arrays verschiedener Form sein können.
Grundkonzepte
- Atome: Zahlen, Zeichen und Wahrheitswerte (Atom = Array der Tiefe 0)
- Arrays: rechteckige (rectilinear) Sammlungen von Atomen oder Arrays, z. B.
1 2 3oder[1 2 3; 4 5 6] - Operatoren: werden per
first,rest,linketc. direkt auf Arrays angewendet - Transformers: höherstufige Operatoren wie
EACH,REDUCE,FORKoderITERATEkombinieren und steuern Operationen
Wichtige Befehle
first 1 2 3 # 1 (erstes Element)
rest 1 2 3 # 2 3 (Rest ohne erstes Element)
last 1 2 3 # 3
link 1 2 3 4 5 # verkettet Arrays zu einem
count 1 2 3 # 3 (Anzahl der Elemente)
pick [2; 1 2 3] # gezielter Zugriff auf ein Element
drop 2 1 2 3 # 3 (ohne die ersten zwei Elemente)
find 2 1 2 3 # 2 (Position des Elements)
Weitere häufige Operatoren sind front, cull, cut, grid, mix, laminate, cart, pack, gradeup, random sowie die mathematischen plus, minus, product, quotient, power, mod, max, min, abs, ceiling und floor. Prädikate wie atomic, depth, empty, equal, in, match, isinteger und ischar prüfen Eigenschaften von Werten.
Q'Nial
Die portable Implementierung Q'Nial (Jenkins, Software – Practice and Experience 1989) läuft auf Unix, Windows und macOS und bringt eine interaktive Umgebung mit. Nial war einflussreich für die Forschung an verschachtelten Array-Modellen und wird bis heute gepflegt (aktuelle Versionen unter nial-array-language.org).
Verwandte Grundlagen: APL-Befehle, J-Befehle, Ivy-Befehle, BQN-Befehle.