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]
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ă.
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: