Tämän viikon harjoituksissa on tarkoitus oppia Haskellin syntaksi päällisin puolin. Tehtävien tekemiseksi tarvittavat tiedot löytyvät seuraavista lähteistä:
Lue ensin yllämainitut lähteet kevyesti läpi ja pähkäile tehtäviä palaten materiaaliin, jos tiedot loppuvat. Kun vääjäämättä jokin asia jää täysin mysteeriksi, kysy. Kurssin toimintalogiikka pohjautuu siihen, että opiskelija tekee kysymyksiä ja luennoija vastaa.
Kysymykset tehtävistä, Haskell ohjelmoinnista ja elämästä yleensä lähetetään tiistai-aamuksi luennoijalle (ville.tirronen@jyu.fi), joka pyrkii vastaamaan niihin tiistain ohjauksissa. Kysymykset käsitellään ohjauksissa anonyymisti, joten ei tarvitse pelätä liian tyhmiä kysymyksiä. Jos kysymyksiä ei tule, luennoija ymmärtää sen niin, että kaikki on selvää ja tekee seuraavista harjoituksista vastaavasti haastavampia.
Tehtävien tekemistä varten joudut noutamaan Haskell-ympäristön. Voit joko asentaa sen suoraan omalle koneellesi, toimimalla sivun Haskell-platform ohjeiden mukaisesti, tai käyttää samaa VirtualBox ympäristöä, kuin mitä harjoituksissa käytetään. Tätä varten joudut lataamaan virtuaalikoneen ja virtuaalisen konekuvan, johon tarvittavat ohjelmat on asennettu.
Kaikki tehtävät tulee olla tehtynä ja palautettuna torstaina kello 12. Mutta ei hätää, opetushenkilökunta auttaa niin paljon kun tarvitaan.
Tutustu Asteroids-pelin esimerkkikoodiin. Testaa ohjelmaa ja selvitä itsellesi miten se toimii. Huomaa, että tarkoituksena ei ole oppia tekemään vastaavaa peliä itse, vaan oppia lukemaan Haskellia ja selvittää pintapuolisesti mitä rakenteita se sisältää.
Tehtävää ei ole tarkoitettu erityisen helpoksi vaan herättämään niin paljon kysymyksiä, että ohjauksissa riittää puhuttavaa.
Tämän tehtävän tarkoitus on opettaa, hieman julmalla tavalla, lukemaan Haskellia. Tarkoitus olisi, että tehtyäsi tämän tehtävän osaat tulkita ohjelmaa tasolla “tuo tuossa on funktiokutsu, tuossa on ehtorakenne, tuolla määritellään tietotyyppi ja tuossa tapahtuu pattern matching”
Eniten erilaisia rakenteita keksinyt ja niitä selittänyt ryhmä saa Haskell tarran.
initialWorld
, drawWorld
, simulateWorld
ja handleEvents
parametrilistaa ja paluuarvoa vastaamaan tietorakenteesi muutostadrawWorld
funktiota siten, että ufo piirtyy ruudulle.simulateWorld
:ia siten, että ufo heiluu ruudullaAsteroids peli