ha god förståelse för de grundläggande principerna för funktionsprogrammering
förstå de praktiska konsekvenserna av skillnaderna mot traditionell programmering
kunna de vanliga idiomen i funktionsorienterad programmering
förstå funktionen och fördelarna hos ett anvancerat typsystem
Färdighet och förmåga
obehindrat kunna läsa program skrivna i språket Haskell
kunna utnyttja den funktionsorienterade paradigmens möjligheter till att skriva välformulerade program i Haskell
kunna utföra typanalys av relativt komplexa uttryck i Haskell
Värderingsförmåga och förhållningssätt
ha utvecklat sin förmåga att använda programkod som kommunikationsmedium mellan människor
Kursinnehåll
Funktionsspråkens filosofi och möjligheter. Programspråket Haskell. Funktionella språkkonstruktioner och idiom. Högre ordningens funktioner. Lat evaluering och oändliga datastrukturer. Monader och monadiska beräkningar. Polymorfa typsystem och typklasser. Typanalys och typhärledning.
Förutsättningar
EDAA01 Programmeringsteknik - fördjupningskurs eller EDAA30 Programmering i Java - fortsättningskurs eller FRTF25 Introduktion till maskininlärning, system och reglering
Förutsatta förkunskaper:
FMAA05 Endimensionell analys och FMAB20 Linjär algebra alternativt FMAA50 Matematisk analys och FMAA55 Matematik, linjär algebra alternativt EDAA40 Diskreta strukturer i datavetenskap. Studenten förväntas ha grundläggande förståelse för matematiska funktioner, kunna hantera funktionssammansättning och induktionsbevis.