keskiviikko 17. helmikuuta 2010

Symmetria

Funktionaalisessa ohjelmoinnissa algebrallinen tietotyyppi määritellään joukkona konstruktoreita yhdistettynä coproductilla, jotka ekstensionaalisesti määrittelevät kyseisen käsitteen. Esimerkiksi luonnolliset luvut voidaan määritellä rekursiivisesti:

LL = Nolla: 1→LL ∨ Seuraaja: LL→LL

Tämä määrittelee kaikki mahdolliset tavat rakentaa luonnollisia lukuja. Tämän jälkeen ko. tyyppiä voidaan käyttää kirjoittamalla mielivaltaisia funktioita, jotka tuhoavat luonnollisia lukuja.

Olio-ohjelmoinnissa luokan rajapinta määritellään joukkona destruktoreita yhdistettynä productilla, jotka intensionaalisesti määrittelevät kyseisen käsitteen. Esimerkiksi desimaalikehitelmä voidaan määritellä rekursiivisesti äärettömänä listana:

DK = Seuraava: DK→Numero ∧ Loput: DK→DK

Tämä määrittelee kaikki mahdolliset tavat tuhota desimaalikehitelmiä. Tämän jälkeen ko. tyyppiä voidaan käyttää kirjoittamalla mielivaltaisia toteutuksia (struktuuri ja metodit), jotka rakentavat desimaalikehitelmiä.



Uskonnon innoittamana on sävelletty paljon maailman kauneinta musiikkia. Vaikka en allekirjoita uskonnollista maailmankuvaa, niin miksei näillä voisi pyhittää itselle tärkeitä asioita.

(Brahms - Ein Deutsches Requiem, Op. 45: II. Denn alles Fleisch, es ist wie Gras (Part II))

Ei kommentteja:

Lähetä kommentti