Näissä harjoituksissa hiotaan ohjelmointitaitoja oman aiheen parissa. Kuitenkin, pyri valitsemaan, loput tehtävät huomioonottaen, sopivan kokoinen aihe. Yhden funktion ohjelmalla ei pysty kunnolla harjoittelemaan, mutta liian suuri ohjelma voi muuttua loppua kohden liian työlääksi.
Keksi aihe pienelle sinua kiinnostavalle tai muuten tarpeelliselle ohjelmalle. Idea-esimerkkejä ja kirjastovinkkejä on demolapun lopussa.
cabal
paketti.Pyri tekemään ohjelmastasi hyvin luettava, uudelleenkäytettävä ja selkeä.
if
lausetta, käyttämällä guardeja ja pattern matchingia* HUOM* Palauta tämän tehtävän vastaus siten, että teet uuden git-commitin jokaisesta vaiheesta ja laitat tehtävän palautukseen versionumerot talteen. Tällöin voin tarkastella mitä muutoksia on tapahtunut tehtävän aikana.
Analysoi ohjelmaasi:
Webbisivugeneraattori, joka tekee annetuista bibtex tiedostoista kotisivun yliopiston tutkijalle. Kirjastoina voit käyttää bibtex
ja blaze-builder
kirjastoja. Työtä voi jakaa esimerkiksi sivun generoimisen ja tietojen lukemisen välillä.
Chattipalvelin ja asiakasohjelma. Työkaluina voit käyttää moduleja Control.Concurrent
, ja paketteja STM
, Network
(tai zeromq-haskell
). Osa ryhmästä voi tehdä palvelinta ja osa asiakasta.
IRC-Botti, joka kerää lokitiedostoon mitä kurssin kanavalla puhutaan. (Network
)
Laskin, joka osaa laskea aritmeettisia lausekkeita kuten (3/5)+10*(18–1). (Ed. viikon jäsennin).
Mildy-Annoyed Birds. (Gloss
ja Hipmunk
kirjastot lienevät hyvä, mutta haastava lähtökohta)
Jäsennin jollekin yksinkertaiselle tiedostoformaatille. (Ed. viikon jäsennin)