Kurs/Haskell (2012): Difference between revisions

From Programvareverkstedet
m (Fikser en skrivefeil.)
m (Fikser en skrivefeil.)
Line 5: Line 5:
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 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 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 programmet ditt ikke blir kjørt før i siste liten (for eksempel når det skal skrives til skjerm). Har du liste med en milliard elementer men du trenger bare det første? Det er effektivt i Haskell. 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.
Haskell har '''lazy evaluation'''. Det betyr at programmet ditt ikke blir kjørt før i siste liten (for eksempel når det skal skrives til skjerm). Har du liste med en milliard elementer men du trenger bare det første? Det er effektivt i Haskell. 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.

Revision as of 13:31, 16 March 2012

Tid: Torsdag 22. mars 2012, kl. 18:15
Sted: Annonseres snart
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 programmet ditt ikke blir kjørt før i siste liten (for eksempel når det skal skrives til skjerm). Har du liste med en milliard elementer men du trenger bare det første? Det er effektivt i Haskell. 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'. */
   List<Integer> numberOfTens(List<Integer> list) {
       List<Integer> result = new ArrayList<Integer>();
       for (Integer i : list) {
           if (i == 10) {
               result.add(i);
           }
       }
       return result;
   }

   -- 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)