Difference between revisions of "Kurs/Haskell (2012)"

From Programvareverkstedet
Jump to: navigation, search
(litt informasjon)
(Informasjon om Haskellkurset)
Line 3: Line 3:
 
<b>Kursholder</b>: Kjetil Ørbekk<BR>
 
<b>Kursholder</b>: Kjetil Ørbekk<BR>
  
Mer informasjon kommer snart.
+
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). Hvis du har en 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! :-)
 +
 
 +
<code>
 +
    /** 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;
 +
    }
 +
</code>
 +
 
 +
<code>
 +
    -- 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)
 +
</code>

Revision as of 12:27, 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). Hvis du har en 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)