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 Token 1j2
  • Recht-assoziative Auswertung: 3*4+5 ergibt 27 (gruppiert als 3*(4+5))
  • Vektoren: 1 2 3 ist ein einzelner Operand
  • iota: iota 3 ergibt 1 2 3 (Index-Generator)
  • Indexierung: x[1], x[1;2], x[] (alles) und x[;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.