keskiviikko 4. joulukuuta 2013

Javascript funktionaalisena kielenä?

Edellinen harjoitukseni sisälsi muutaman funktion jolla laskettiin se, miten eri strategioiden frekvenssit muuttuvat missäkin matemaattisessa/evolutiivisessa pelissä. Funktioiden lisäksi oli sitten piirrosohjelma, joka visualisoi frekvenssien muuttumista. Piirrosohjelma oli suht sama jokaiselle matemaattiselle pelille (kivi-paperi-sakset, vapaaehtoinen vangin dilemma, vapaaehtoinen julkishyödyke-peli), mutta funktiot olivat pelikohtaisia.

Luulenpa siksi että funktionaalinen lähestysmistapa on tällaiseen ongelmaan omiaan. Pitää tutustua ehkä

1. lambda-kalkyyliin

2. siihen miten javascriptillä onnistuu funktionaalinen ohjelmointi / lambda-kalkyyli. (Slideset samasta aiheesta.)

Javascriptiä halutaan käyttää, koska päämääränä on olla webbi-puristi. Chromemies on webbi-puristi.

Mutta tarvitaanko oikeasti täyttä lambda-kalkyyliä on sitten toinen juttu? Javasciptissähän voi kirjoittaa vaikkapa

var x = function(y) { return y + z; } missä z on joku muuttuja jolla on arvo.

ja sitten

var a = x( 3 );

tai

a = x( x );

Javascript ei tue natiivisti koko lambda-kalkyylia vaan sitä varten pitää ladata laajennus / tulkki.