Ivy ist ein Interpreter für eine APL-ähnliche Sprache von Rob Pike (Mitentwickler von Go und Plan 9). Pike bezeichnet Ivy selbst als „plaything and work in progress": einen spielerischen, aber vollwertigen Taschenrechner und Array-Interpreter, der seit 2014 entsteht und in Go geschrieben ist. Ivy nutzt statt der APL-Sonderzeichen eine ASCII-Eingabe und ist damit deutlich zugänglicher als klassisches APL.
Installation und Start
go install robpike.io/ivy@latest
ivy
Wichtige Befehle und Konzepte
- Exakte Arithmetik: rationale Zahlen beliebiger Genauigkeit, z. B.
1/3; komplexe Zahlen als ein Token1j2 - Recht-assoziative Auswertung:
3*4+5ergibt 27 (gruppiert als3*(4+5)) - Vektoren:
1 2 3ist ein einzelner Operand - iota:
iota 3ergibt1 2 3(Index-Generator) - Indexierung:
x[1],x[1;2],x[](alles) undx[;3](Spalte) - Zuweisung:
x = 5(Zuweisung ist ein Ausdruck);_hält das letzte Ergebnis
Operatoren
iota 3 # 1 2 3
rho 2 3 4 # 3 (Form/Shape)
count 1 2 3 # 3 (Anzahl Elemente)
flatten 1 2 3 # 1 2 3 (Ravel)
not 1 # 0
abs -5 # 5
ceil 3.2 # 4
floor 3.8 # 3
! 5 # 120 (Fakultät)
sqrt 16 # 4
up 3 1 2 # 2 3 1 (Indizes für aufsteigende Sortierung)
Dazu kommen + - * / für Addition, Subtraktion, Multiplikation und Division (als / für Reciprocal), Vergleichsoperatoren, where, unique, box, first, last, split, mix, inv (Matrix-Inverse), rot/flip (Reversal), trigonometrische Funktionen (sin, cos, tan, atan ...) sowie real/imag für komplexe Zahlen. Spezialbefehle starten mit ), z. B. )demo und )help.
Verwandte Grundlagen: APL-Befehle, Q-Befehle, Nial-Befehle, BQN-Befehle.