Kurs/Haskell (2012)

From Programvareverkstedet
Jump to: navigation, search

Tid: Torsdag 22. mars 2012, kl. 18:15
Sted: R4
Kursholder: Kjetil Ørbekk

Haskell er et funksjonelt programmeringsspråk. Funksjoner kan behandles som vanlige verdier og manipuleres på forskjellige måter. Haskell gir deg enkel syntaks for å behandle funksjoner, for eksempel med lambdaer. Dette gjør at man kan skrive kode på en helt annen måte enn i f.eks. Java og C++. Nedenfor finner du et kodeeksempel i Java og Haskell.

Haskell har et high-tech typesystem. Haskell er sterkt typet, og har mekanismer som ligner på Generics (Java)/Templates (C++) men er mer fleksible. Haskells svar på interfaces skiller mellom spesifikasjon og implementasjon av en datatype på en måte som er umulig i Java.

Haskell har lazy evaluation. Det betyr at funksjoner ikke blir kjørt før i siste liten (for eksempel når resultatet skal skrives til skjerm). Har du liste med en milliard elementer men du trenger bare det første? Haskell lar deg manipulere denne effektivt. Hvis du vet hvordan Generator-patternet fungerer i objektorientert programmering, så kan du tenke deg at det fungerer på samme måte, men Haskell gir deg det helt automatisk.

Interessert? Kom på kurs! :-)

   /** Teller antall 10-ere i 'list'. */
   int numberOfTens(List<Integer> list) {
       int count = 0;
       for (Integer i : list) {
           if (i == 10) {
               count += 1;
           }
       }
       return count;
   }

   -- equalsTen er en hjelpefunksjon som sjekker om x er 10.
   equalsTen x = x == 10
   
   -- numberOfTens tilsvarer Java-funksjonen ovenfor.
   numberOfTens list = length (filter equalsTen list)