Ilo | |
---|---|
Kieliluokka | moniparadigma : toiminnallinen , konkatenatiivinen , pino |
Esiintyi | 2001 |
Tekijä | Manfred von Thun |
Kehittäjä | Manfred von Thun, John Cowan |
Tyyppijärjestelmä | vahva , dynaaminen |
Tärkeimmät toteutukset | Joy0, Joy1, "Nykyinen ilo", "John Cowanin ilo", "JoyJ (Joy in jvmm)" |
Vaikutettu | Kaava , C |
vaikutti | Factor , Cat , V , Trith |
Joy-ohjelmointikieli on puhtaasti toiminnallinen kieli , jonka Manfred von Thun on kehittänyt La Trobe Universityssä Melbournessa , Australiassa . Ilo perustuu funktion koostumukseen, ei lambda-laskentaan . Se on Forthille sukua oleva kieli , mutta ei sen suora seuraaja. Joyta pidetään tällä hetkellä kanonisena esimerkkinä konkatenatiivisesta ohjelmointikielestä . [yksi]
Joy eroaa muista ohjelmointikielistä (lukuun ottamatta kombinatorisia ohjelmointikieliä ja joitain esoteerisia kieliä , kuten unlambda ) lambda -operaattorin puuttumisella ja siten muodollisten parametrien puuttumisella . Tämän havainnollistamiseksi tässä on esimerkki siitä, kuinka neliöintifunktio voidaan määritellä pakollisessa ohjelmointikielessä ( C ):
int neliö ( int x ) { paluu x * x ; }Muuttuja x on muodollinen parametri, joka korvataan todellisella arvolla, joka neliötetään funktiota kutsuttaessa. Toiminnallisessa kielessä ( Scheme ) sama funktio määritellään seuraavasti:
( määrittele neliö ( lambda ( x ) ( * x x )Näiden kahden esimerkin välillä on monia eroja, mutta ne käyttävät muodollisia parametreja samalla tavalla. Joyssa neliöintifunktio määritellään seuraavasti:
MÄÄRITÄ neliö == dup * .Kaikki Joyssa on funktio, joka ottaa pinon argumenttina ja palauttaa pinon tuloksena. Esimerkiksi luku "5" ei ole kokonaislukuvakio, vaan lyhyt ohjelma, joka työntää luvun 5 pinoon.
Joten neliöintifunktio yksinkertaisesti kopioi ylimmän elementin ja kertoo sen sitten itsellään, muodollisia parametreja ei tarvita. Tämä tekee Joysta tiiviin, kuten seuraava pikalajittelun määritelmä osoittaa :
MÄÄRITÄ qsort == [pieni] [] [uncons[>]split] [[vaihto] dip cons concat] binrec."binrec" on yksi monista Joyn rekursiivisista kombinaattoreista , jotka toteuttavat binäärirekursion. Se odottaa pinossa neljää ohjelmaliteraalia, jotka ovat: