Deel I Functionele Programmeertalen Hoofdstuk 4 Functioneel Programmeren




![Lijsten Miranda-notatie: [] [1, 2, 3] e: l hd l tl l Lijsten Miranda-notatie: [] [1, 2, 3] e: l hd l tl l](https://slidetodoc.com/presentation_image_h2/80128f31f04dd35a3564003cb7d551a3/image-5.jpg)












![(Naive) reverse inverse [a, b, c] geeft: [ ] + + [c] + + (Naive) reverse inverse [a, b, c] geeft: [ ] + + [c] + +](https://slidetodoc.com/presentation_image_h2/80128f31f04dd35a3564003cb7d551a3/image-18.jpg)
![Reverse reverse [a, b, c] [ ] reverse [b, c] a: [ ] reverse Reverse reverse [a, b, c] [ ] reverse [b, c] a: [ ] reverse](https://slidetodoc.com/presentation_image_h2/80128f31f04dd35a3564003cb7d551a3/image-19.jpg)







- Slides: 26
Deel I: Functionele Programmeertalen Hoofdstuk 4: Functioneel Programmeren
Functies Functienotatie: De equivalente l-uitdrukking:
Voorwaardelijke functies De equivalente l-uitdrukking
Patroonherkenning De equivalente l-uitdrukking
Lijsten Miranda-notatie: [] [1, 2, 3] e: l hd l tl l
Lijsten De equivalente l-uitdrukking
Lijsten De equivalente l-uitdrukking
Functies op lijsten a ++ b hd a tl a length a take n a drop n a prefix n a concatenatie eerste element van de lijst a staart van de lijst a (lijst zonder kop) lengte van de lijst a lijst met eerste n elementen van lijst a lijst zonder de eerste n elementen van lijst a lijst met eerste n elementen van lijst a
Functies op lijsten suffix n a lijst met laatste n elementen van lijst a takewhile c a maximaal prefix van lijst a waarvoor c geldt dropwhile c a lijst na het droppen van kopelementen waarvoor c geldt reverse a lijst van elementen van lijst a in omgekeerde volgorde zip a b lijst met koppels uit a en b, in dezelfde volgorde
Functies op lijsten product a b position a x map f a filter f a scalair product van de lijsten a en b positie van x in lijst a lijst met f toegepast op de elementen van a lijst met de elementen van a waarvoor f a waar is
Generische lijstfuncties
Functie let-in De equivalente l-uitdrukking voor let x = M in N: (lx. N)M met applicatieve evaluatievolgorde
Functie where De equivalente l-uitdrukking voor N where x = M: (lx. N)M
Functie where De equivalente l-uitdrukking voor N where x = M: (lx. N)M
Lijstcomprehensies Quicksort kan neergeschreven worden als
Recursie De reductie van fac 5 geeft aanleiding tot
Accumulatoren De reductie van fac 2 geeft aanleiding tot
(Naive) reverse inverse [a, b, c] geeft: [ ] + + [c] + + [b] + + [a] = c: b: a: [ ]
Reverse reverse [a, b, c] [ ] reverse [b, c] a: [ ] reverse [c] b: a: [ ] reverse [ ] c: b: a: [ ]
Continuaties
Continuaties
Applicatieve continuatie
Transformatie tussen een imperatief en een functioneel programma function fac(n: integer): integer; var f: integer; begin f : = 1; while n > 1 do begin f : = f * n; n : = n - 1 end; fac : = f end;
Stroomdiagramma f: =1 n>1 f: =f*n fac: =f n: =n-1 stop
Verzameling van functies Resultaat: f 1(n, f, fac)
Vereenvoudigingen q b-conversies q x-conversies