sunnuntai 14. kesäkuuta 2009

F# Linuxiin


Microsoftin funktionaalinen ohjelmointikieli F# on ladattavissa ilmaiseksi Microsoftin palvelimilta. Julkaisun nimi on Microsoft F#, May 2009 Community Technology Preview. Sen voi asentaa Visual Studio 2008 ympäristöön (ei kuitenkaan Express Editions -versioihin) tai erikseen ladattavaan Visual Studio 2008 Shell -ympäristöön.

Mutta mikä mielenkiintoisinta, normaalin asennuspaketin lisäksi Microsoft tarjoaa zip-tiedoston, jolla F# kääntäjän ja interaktiivisen ympäristön voi asentaa myös Linuxiin, jossa on Mono-ympäristö.

Osoitteesta http://www.microsoft.com/downloads/details.aspx?FamilyID=7bb32f32-9fac-4f34-ad56-b0bda130cf00 voi ladata tiedoston fsharp.zip. Se puretaan johonkin sopivaan hakemistoon ja ajetaan skiripti install-mono.sh, joka asentaa F# kirjastot Monon global assembly cacheen.

Jos zip-paketti purettiin esimerkiksi kotihakemiston alla olevaan bin-nimiseen hakemistoon, lähtee F#:n interaktiivinen ympäristö käyntiin komennolla

mono ~/bin/FSharp-1.9.6.16/bin/fsi.exe


Hetken odottelun jälkeen näkyviin tulee > -kehote. Varoituksen FS0191 voi jättää huomiotta. Mutta tähänastinen kokemus kertoo, että interaktiivinen ympäristö ei heti ota vastaan komentoja. Ratkaisu on kirjoittaa kaksi puolipistettä ja painaa enteriä. Siis

;;


niin monta kertaa, että F# vastaa > -kehotteella.

Toiminnan voi tämän jälkeen testata vaikka kirjoittamalla seuraavat rivit kukin omalle rivilleen > -kehotteen jälkeen:

let summa a b = a + b;;
summa 2 3;;


Ajokelpoisia F#-ohjelmia voi tuottaa kääntäjällä. Eli tallennetaan seuraava ohjelma testi.fs -tiedostoon

let tulo a b = a * b;;
printfn "%A" (tulo 1.5 2.5);;


ja käännetään se komennolla

mono ~/bin/FSharp-1.9.6.16/bin/fsc.exe testi.fs


tuloksena syntyneen testi.exe -tiedoston voi ajaa komennolla

mono testi.exe


tai muuntaa suoraan ajettavaksi komenolla

chmod +x testi.exe

ja ajaa sitten

./testi.exe


Nämä esimerkit perustuivat Ubuntu 9.04 -versioon, johon oli jo asennettu Mono. Mono on Microsoftin .net kirjastoja ja ajoympäristöä vastaava vapaasti saatavilla oleva ympäristö.