Joy (limbaj de programare)

Bucurie
Clasa de limba multi- paradigma : funcțional , concatenativ , stivă
Aparut in 2001
Autor Manfred von Thun
Dezvoltator Manfred von Thun, John Cowan
Tip sistem puternic , dinamic
Implementări majore Joy0, Joy1, „Bucuria actuală”, „Bucuria lui John Cowan”, „JoyJ (Bucuria în jvmm)”
A fost influențat Schema , C
influențat Factor , Cat , V , Trith

Limbajul de programare Joy  este un limbaj pur funcțional dezvoltat de Manfred von Thun de la Universitatea La Trobe din Melbourne , Australia . Bucuria se bazează pe compoziția funcției, nu pe calculul lambda . Este o limbă legată de Forth , deși nu succesorul său direct. Joy este în prezent considerat exemplul canonic al unui limbaj de programare concatenative . [unu]

Cum functioneaza?

Joy diferă de alte limbaje de programare (cu excepția limbajelor de programare combinatorii și a unor limbaje ezoterice precum unlambda ) prin absența unui operator lambda și, prin urmare, prin absența parametrilor formali . Pentru a ilustra acest lucru, iată un exemplu despre modul în care funcția de pătrare poate fi definită în limbajul de programare imperativ ( C ):

int pătrat ( int x ) { returnează x * x ; }

Variabila x este un parametru formal care este înlocuit cu valoarea reală care urmează să fie pătrat atunci când funcția este apelată. Într -un limbaj funcțional ( Scheme ), aceeași funcție este definită după cum urmează:

( definește pătratul ( lambda ( x ) ( * x x )))

Există multe diferențe între aceste două exemple, dar folosesc parametri formali într-un mod similar. În Joy, funcția de pătrat este definită ca:

DEFINE pătrat == dup * .

Totul din Joy este o funcție care ia o stivă ca argument și returnează o stivă ca rezultat. De exemplu, numărul „5” nu este o constantă întreagă, ci un program scurt care împinge numărul 5 în stivă.

  • Declarația dup duplică pur și simplu elementul de sus al stivei, punând o copie a acestuia acolo.
  • Operatorul * ia primele două elemente din stivă și își împinge produsul acolo.

Deci, funcția de pătrat pur și simplu duplică elementul superior și apoi îl înmulțește singur, nu sunt necesari parametri formali. Acest lucru face ca Joy să fie concis, așa cum demonstrează următoarea definiție a sortării rapide :

DEFINE qsort == [mic] [] [uncons[>]split] [[swap] dip cons concat] binrec.

„binrec” este unul dintre numeroasele combinatoare recursive din Joy care implementează recursiunea binară. Se așteaptă patru literale de program pe stivă, care sunt:

  • condiție de terminare (dacă lista este „mică” (1 sau 0 elemente) este deja sortată),
  • ce trebuie făcut dacă este îndeplinită condiția de reziliere (nimic în acest caz),
  • ce să faci în mod implicit (împarte lista în două jumătăți comparând fiecare element cu un punct de ancorare) și, în final
  • ce să faceți la sfârșit (introduceți punctul de ancorare între două jumătăți sortate).

Puritate matematică

Note

  1. Dr. Dobbs

Literatură

Link -uri