Ohjauksen päätarkoitus on tutustua kurssilla käytettäviin työkaluihin. Niistä tärkein on GHC (kääntäjä). Se on valmiiksi asennettu Agoran mikroluokkiin. Kotikoneisiin se täytyy toki asentaa erikseen. Osa tehtävistä tarvitsee lisäksi Gtk2HS -kirjaston (versio 0.9.8 tai 0.9.9 mutta toistaiseksi 0.9.10 ei käy), joka myös on valmiiksi asennettuna Agoran mikroluokkiin.
Muistathan, että mikroluokissa tulisi työskentelyhakemistona käyttää hakemistoa C:\MyTemp\OmaTunnus!
Hae ensimmäisellä luennolla kirjoitetut ohjelmat Hello.hs, AnnaNimesi.hs, Kopio.hs ja BouncingBall.hs (tarvitset myös tiedoston JyuGraphics.hs, laita se samaan hakemistoon BouncingBall.hs:n kanssa).
Käännä Hello.hs seuraavanlaisella komentorivillä:
ghc -o hello.exe --make Hello.hs
(Unixeissa jätä pois .exe.)
Aja sitten ohjelma kirjoittamalla komentoriville hello (Unixeissa ./hello). Tee sama muille ohjelmille.
Ohjelmaa voi testata nopeasti myös kirjoittamalla
runghc Hello.hs
Kokeilehan tätäkin.
GHCi on interaktiivinen Haskell-ympäristö. Sille annetaan komentoriviparametrina jokin Haskell-tiedosto, jonka jälkeen sillä voi testata tuossa tiedostossa määriteltyjä funktioita.
Hae ensimmäisellä luennolla kirjoitettu moduli QSort. Käynnistä ghci qsort.hs ja kokeile qsort-funktioita eri parametreilla. Kysy funktion tyyppiä kirjoittamalla :type qsort GHCi:n kehotteeseen.
Käynnistä ghci Hello.hs ja kokeile sen main-funktiota.
(Huom! JyuGraphics-ohjelmia ei voi Windowsissa testata GHCi:ssä.)
Kirjoita Haskell-ohjelma, joka toimii seuraavasti:
C:\OMA>runghc Ika.hs[RET] Kerron sinulle paljonko täytät tänä vuonna! Anna syntymävuotesi 1977[RET] Täytät tänä vuonna 28 vuotta.
Hyödyllisiä Haskell-ominaisuuksia:
Kirjoita Haskell-ohjelma, joka kysyy huoneesta mitatut tiedot ja tulostaa sitten näiden perusteella huoneen pinta-alan ja tilavuuden.
Hyödyllisiä Haskell-ominaisuuksia:
Kirjoita Haskell-ohjelma, joka lukee päiväyksen käyttäjältä ja tulostaa annettua päiväystä seuraavan päivän päiväys. Ohjelmasi tulee toimia oikein riippumatta siitä, mikä vuosi, päivä tai kuukausi syötetään (mutta voit olettaa nykyisin käytössä olevan ns. Gregoriaanisen kalenterin:). Testaa ohjelmaasi. Älä yritä tehdä käyttöliittymästä liian hienoa.
Hyödyllisiä Haskell-ominaisuuksia:
Kirjoita Haskell-ohjelma, joka toteuttaa (merkkipohjaisen) valikon, josta käyttäjä voi valita jonkin tehtävissä 3–5 tehdyistä ohjelmista. Kun valittu ohjelma on suoritettu, palataan valikkoon. Valikossa pitää toki olla myös vaihtoehto valikosta poistumiselle.
Kirjoita tehtävien 3–5 ratkaisut osaksi tätä ohjelmaa — tarkoituksena ei siis ole, että valikko-ohjelma konkreettisesti käynnistäisi muita exejä.
Kirjoita Haskell-ohjelma, joka simuloi graafisesti putoamisliikettä sekä lattiasta kimpoamiasta. Lähtötilanteessa putoava kappale sijaitsee ikkunan vasemmassa reunassa satunnaisella korkeudella; lähtötilanteessa sillä on vaakasuuntaista nopeutta mutta ei lainkaan pystysuuntaista. Kun kappale osuu ikkunan alareunaan, se kimpoaa siitä ylös. Kun kappale ylittää ikkunan oikean reunan, ohjelma palaa lähtötilanteeseen. Ikkunan sulkeminen sulkee ohjelman. Ikkunan koon muuttaminen palauttaa ohjelman alkutilaan. Kokeile eri vaakasuuntaisen nopeuden ja putoamiskiihtyvyyden arvoja saadaksesi simulaatiosta mahdollisimman näyttävän (mutta älä viilaa turhaan grafiikkaa näyttäväksi).
randomRIO (lo,hi) on käsky, joka palauttaa satunnaisluvun väliltä lo..hi. Sen käyttäminen vaatii import Random -määrityksen.