Kurs/Haskell (2012): Difference between revisions
m (Fikser en skrivefeil.) |
(link til beskrivelse av hvor auditoriet er) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<b>Tid</b>: Torsdag 22. mars 2012, kl. 18:15<BR> | <b>Tid</b>: Torsdag 22. mars 2012, kl. 18:15<BR> | ||
<b>Sted</b>: | <b>Sted</b>: [[../Hvor er R4?|R4]]<BR> | ||
<b>Kursholder</b>: Kjetil Ørbekk<BR> | <b>Kursholder</b>: Kjetil Ørbekk<BR> | ||
Line 7: | Line 7: | ||
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 | 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! :-) | Interessert? Kom på kurs! :-) | ||
Line 13: | Line 13: | ||
<code> | <code> | ||
/** Teller antall 10-ere i 'list'. */ | /** Teller antall 10-ere i 'list'. */ | ||
int numberOfTens(List<Integer> list) { | |||
int count = 0; | |||
for (Integer i : list) { | for (Integer i : list) { | ||
if (i == 10) { | if (i == 10) { | ||
count += 1; | |||
} | } | ||
} | } | ||
return | return count; | ||
} | } | ||
</code> | </code> | ||
Line 27: | Line 27: | ||
-- equalsTen er en hjelpefunksjon som sjekker om x er 10. | -- equalsTen er en hjelpefunksjon som sjekker om x er 10. | ||
equalsTen x = x == 10 | equalsTen x = x == 10 | ||
-- numberOfTens tilsvarer Java-funksjonen ovenfor. | -- numberOfTens tilsvarer Java-funksjonen ovenfor. | ||
numberOfTens list = length (filter equalsTen list) | numberOfTens list = length (filter equalsTen list) | ||
</code> | </code> |
Latest revision as of 09:19, 22 March 2012
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)