Öröm | |
---|---|
Nyelvóra | több paradigma : funkcionális , konkatenatív , verem |
Megjelent | 2001 |
Szerző | Manfred von Thun |
Fejlesztő | Manfred von Thun, John Cowan |
Típusrendszer | erős , dinamikus |
Főbb megvalósítások | Joy0, Joy1, "Current Joy", "John Cowan's Joy", "JoyJ (Joy in jvmm)" |
Befolyásolt | Scheme , C |
befolyásolta | Factor , Cat , V , Trith |
A Joy programozási nyelv egy tisztán funkcionális nyelv , amelyet Manfred von Thun fejlesztett ki a melbourne -i La Trobe Egyetemen , Ausztráliában . Az öröm a függvényösszetételen alapul, nem a lambda kalkuluson . Ez egy olyan nyelv, amely a Forthhoz kapcsolódik , bár nem a közvetlen utódja. A Joy-t jelenleg a konkatenatív programozási nyelv kanonikus példájának tekintik . [egy]
A Joy különbözik a többi programozási nyelvtől (kivéve a kombinatorikus programozási nyelveket és néhány ezoterikus nyelvet , mint például az unlambda ) a lambda operátor hiányában, és így a formális paraméterek hiányában is . Ennek szemléltetésére álljon itt egy példa arra, hogy a négyzetesítési függvény hogyan határozható meg az imperatív programozási nyelvben ( C ):
int négyzet ( int x ) { return x * x ; }Az x változó egy formális paraméter, amelyet a függvény meghívásakor a négyzetre emelendő tényleges érték helyettesít. Egy funkcionális nyelvben ( Scheme ) ugyanez a függvény a következőképpen definiálható:
( négyzet meghatározása ( lambda ( x ) ( * x x )A két példa között sok különbség van, de a formális paramétereket hasonló módon használják. A Joy-ban a négyzetesítési függvény a következőképpen definiálható:
DEFINE square == dup * .A Joy-ban minden olyan függvény, amely egy veremet argumentumként vesz fel, és ennek eredményeként egy veremot ad vissza. Például az "5" szám nem egész szám konstans, hanem egy rövid program, amely az 5-ös számot a verembe tolja.
Tehát a négyzetes függvény egyszerűen megduplázza a felső elemet, majd megszorozza önmagával, nincs szükség formális paraméterekre. Ez teszi Joy tömörségét, amint azt a gyorsválogatás következő meghatározása bizonyítja :
DEFINE qsort == [kicsi] [] [uncons[>]split] [[csere] dip cons concat] binrec.A "binrec" egyike a Joy számos rekurzív kombinátorának , amely bináris rekurziót valósít meg. Négy programliterált vár a veremben, amelyek a következők: