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