Syventäviä tehtäviä

Tässä lista syventäviä aiheita kurssin viikolla 10 tehtäväksi. Lista on wikissä sen tähden,
että muutkin kuin ohjaajat voivat ehdottella aiheita.

Functional Pearl

Functional Pearlit ovat alunperin Richard Birdin lanseeraama artikkelisarja, jossa esitellään tavalla tai
toisella upeita ratkaisuja funktio-ohjelmoinnin tiimoilta. Etsi mieleisesi haskell-wikin
melko kattavasta Pearl-listasta
ja valmistaudu käyttämään koko tovi aikaa sen parissa.

Jos sitä odotettua aivojen nyrjähtämistä ei vielä kurssilla ehtinyt tapahtua, valitse
oikeastaan mikä tahansa Oleg Kiselyovin julkaisema artikkeli.

Inversion of Control ja Call-With-Current-Continuation

Dan Piponia on alkanut tympimään eventtipohjainen ohjelmointi.
Onneksi eventtipohjaisuudesta pääsee näppärästi eroon käyttämällä “jatkantoja” Mitä ihmettä
ne ovat. Selitys löytynee parhaiten artikkelista Poor Mans Concurrency Monad

2-3 FingerTree – Ehkäpä maailman yleiskäyttöisin tietorakenne?

2-3 Fingertree on hauska tietorakenne, jolla voi tehdä logaritmisessa ajassa
toimivan hakupuun, prioriteettijonon, jonon, vektorin ja monia muita hyödyllisiä
tietorakenteita. Miten se oikein toimii?

Hackage-paketti
Finger Trees: A Simple General-purpose Data Structure

Continuation Passing Style

AttoParsec jäsennin kirjasto on
kertaluokkaa nopeampi kuin Parsec tai kurssilla tekemämme jäsenninkirjasto. Miten
ihmeessä? Lisäksi se on kirjoitettu käyttäen CPS ohjelmointitekniikkaa. Mitä se
taas on?

Miten edellisten harjoitusten Par-monad on toteutettu?

Monad Par on hyvä esimerkki siitä,
millaista haskell koodia GHC kehittäjät tuottavat. Miten se poikkeaa kurssilla
nähdystä?

Packrat Parsing

Mitä on packrat parsing?

Pretty Printing — Parsitun datan tulostamisesta

Hughes & Peyton Jones tulostin on
toinen hyvä esimerkki Haskell koodista. Toinen kirjoittajista on se henkilö joka
on pääosin vastuussa härvelistä nimeltä GHC.

Haskell WWW-ohjelmointiympäristöt

Lennart Ja Basic

Tässä Haskell Benchmarkissa
on jotain vialla. Mitä ihmettä Lennart on mennyt koodaamaan? (Vastauksen
keksimiseen tarvitaan sekä mielenkiintoa, että kyseisen blogin selaamista pidemmällekin)

Window Manager

XMonad on paitsi hyvä esimerkki miellyttävästä minimalismista,
niin myös erinomaisesta haskell koodista. XMonad on myös hyvä esimerkki QuickCheckin
ja muiden testaustyökalujen käytöstä. Kuinka näin on? Eikös käyttöliittymien pitänyt
olla hankalia testata automaattisesti?