|
In
het vak imperatief programmeren hebben jullie kennis gemaakt met de taal Java.
In die taal bestaat een programma uit opdrachten: doe dit, doe dat. In een
functionele taal bestaat een programma uit functies zoals je die kent uit de
wiskunde. Programma's schrijven in zo'n
taal vergt een andere manier van denken en dat is precies waar we het in dit
vak over gaan hebben. In concreto
gaan we problemen oplossen met behulp van de functionele taal Haskell. Deze taal kent
uitgebreide abstractiemogelijkheden waardoor programma's vaak bijzonder compact
zijn. Over veel details, zoals berekeningsvolgorde en geheugenallocatie, hoef
je je geen zorgen te maken. De nadruk ligt op wat en niet op hoe. Verder kent Haskell een uitgbreid typesysteem waarvan steeds meer elementen
ook in andere talen worden opgenomen.
Recursie in functionele
talen is de evenknie van lusconstructies (for, while)
in Java. Het is de manier om programma's te schrijven die over een
datastructuur wandelen of herhaalde berekeningen doen. Omdat functionele
programma's geen variabelen kennen die van waarde kunnen veranderen tijdens de
verwerking van het programma is het gemakkelijk redeneren over zulke
programma's. We zullen laten zien hoe we op een systematische wijze programma's
kunnen afleiden en transformeren, en hoe we eigenschappen kunnen bewijzen. Die
eigenschappen kunnen we gebruiken om uitspraken te doen over de correctheid of
om programma's te herschrijven. Als het programma recursieve functies bevat dan
is tijdens bewijzen het begrip inductie nodig.
http://www.cs.uu.nl/education/vak.php?vak=INFOFP&jaar=2008
|
|
|