Joy (programozási nyelv)

Ö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]

Hogyan működik?

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.

  • A dup utasítás egyszerűen megkettőzi a verem legfelső elemét, és oda helyezi annak másolatát.
  • A * operátor kiveszi a két felső elemet a veremből, és oda tolja a termékét.

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:

  • befejezési feltétel (ha a lista "kicsi" (1 vagy 0 elem), akkor már rendezve van),
  • mi a teendő, ha a felmondási feltétel teljesül (ebben az esetben semmi),
  • mit kell tenni alapértelmezés szerint (a listát két részre kell osztani úgy, hogy az egyes elemeket egy rögzítési ponttal hasonlítja össze), és végül
  • mit kell tenni a végén (illessze be a rögzítési pontot két rendezett fél közé).

Matematikai tisztaság

Jegyzetek

  1. Dr. Dobbs

Irodalom

Linkek