Joy ist eine rein funktionale Programmiersprache, die Manfred von Thun an der La Trobe University in Melbourne (Australien) entwickelte und 2001 veröffentlichte. Während klassische funktionale Sprachen Funktionen auf Argumente anwenden, basiert Joy auf der Komposition von Funktionen: Ein Programm ist eine Folge von Wörtern, die einen Stack in einen neuen Stack überführen. Es gibt keine Variablen und keine Parameterlisten — Programme werden als Daten behandelt, die sich zur Laufzeit kombinieren lassen.
Grundprinzip: Stack und Quotations
Wie der UPN-Rechner dc und die klassische Stack-Sprache Forth arbeitet Joy mit einem Datenstack: Literale werden gepusht, Operatoren holen ihre Argumente vom Stack. Der Unterschied zu Forth ist die funktionale Reinheit — Joy kennt keine Seiteneffekte im Kern, alles ist Funktionskomposition. Quotations, in eckige Klammern gesetzt, machen Programmstücke zu Daten:
2 3 + # Stack: 5
[ dup * ] # Quotation: Quadrat-Funktion als Datenobjekt
5 [ succ ] i # i führt die Quotation aus → 6
Wichtige Wörter und Kombinatoren
- Stack-Wörter:
dup,pop,swap,rot,cons,concat,id(Identität) - Arithmetik:
+,-,*,/,succ,pred,size,sum,first,rest - Kombinatoren:
i(Quotation ausführen),dip(Quotation unter einem Wert ausführen),map,filter,foldl,foldr,ifte(if-then-else),while,times
Kontrollfluss entsteht allein durch Kombinatoren auf Quotations — ohne Schleifenvariablen. Diese pointfreie, funktionale Stack-Programmierung beeinflusste moderne Concatenative-Sprachen wie Factor direkt.