Funktionell programmering
5DV086 - Programspråk
Petter Ericson ([email protected])
Umeå University
19 januari, 2016
Idag
I
Vad är funktionell programmering?
I
Vad är Haskell/Scheme?
I
Vad är labben?
I
Börja härja!
Vad är funktionell programmering?
I
Annorlunda tankesätt (paradigm)
I
Eleganta lösningar
I
Ytterligare verktyg
I
Två språk: Haskell och Lisp
Haskell
I
(Renlärigt) funktionellt språk
I
20 år som open source-projekt
I
Kompilerat, tolkat, trådat
I
Många bra bibliotek
Scheme
I
Lisp-baserat
I
Slimmat (minimal spec)
I
Parenteser i mängd
Funktionell problemlösning
I
Listor
I
Rekursion
I
Mönstermatching (minns ni Prolog?)
I
Begränsade sidoeffekter (inga i Haskell, istället monader)
I
Begränsade variabler (inga i Haskell, istället namngivna värden)
Labb 1 - Scheme i Haskell
I
https://git.cs.umu.se/pettter/scheme-in-haskell-lab
I
I korthet: implementera Scheme i Haskell
I
Givet: en parser
I
På föreläsningarna: Resten
I
Själv: dokumentation, program/lösning i Scheme
I
Deadline 12:00 29/2
Labb 2 - ADT
I
Implementera en Abstrakt Datatyp i två olika språk
I
Kolla gärna i förväg, verktyg och teori kommer
I
Viktigt: Rapport!
I
Deadline 12:00 7/3
Labb 3 - SPROL
I
Två olika implementationer av programspråk
I
Dito: teori kommer, men kolla gärna i förväg
I
Viktigt: Rapport!
I
Deadline 12:00 14/3
Mål för lab 1
I
Du ska förstå funktionell programmering
I
Jag ska se att du uppnår FSR:en
I
Du har chansen att visa dig på styva linan genom att fixa extra
Exempel på egna Scheme-program
I
Gamla labbar från funktionella-kursen
(http://www8.cs.umu.se/kurser/TDBA65)
I
Tidigare lab 1 (SMS-labben)
Experiment..
I
Det här är ett nytt upplägg
I
...inspirerat av Carl-Christian...
I
...så det kan gå lite hur som helst...
Min garanti
I
Jag kommer göra mitt bästa för att
I
I
I
I
kursen ska vara bra
ni ska uppnå målen
ni ska ha roligt
ni ska lära er funktionell programmering
Haskell och Parsec
I
ghc/ghci
I
Finns på institutionens datorer
Parsern
I
Kort genomgång.
I
I stort sett listing 3.2 i 48-timmars-Scheme
Matte!
I
(om ni vill implementera lite)
I
I stort sett: slutet på kapitel 3 i 48-timmars-Scheme
Typer!
I
Obs: skillnader mellan Scheme och Haskell