Deel I Functionele Programmeertalen Hoofdstuk 4 Functioneel Programmeren

  • Slides: 26
Download presentation
Deel I: Functionele Programmeertalen Hoofdstuk 4: Functioneel Programmeren

Deel I: Functionele Programmeertalen Hoofdstuk 4: Functioneel Programmeren

Functies Functienotatie: De equivalente l-uitdrukking:

Functies Functienotatie: De equivalente l-uitdrukking:

Voorwaardelijke functies De equivalente l-uitdrukking

Voorwaardelijke functies De equivalente l-uitdrukking

Patroonherkenning De equivalente l-uitdrukking

Patroonherkenning De equivalente l-uitdrukking

Lijsten Miranda-notatie: [] [1, 2, 3] e: l hd l tl l

Lijsten Miranda-notatie: [] [1, 2, 3] e: l hd l tl l

Lijsten De equivalente l-uitdrukking

Lijsten De equivalente l-uitdrukking

Lijsten De equivalente l-uitdrukking

Lijsten De equivalente l-uitdrukking

Functies op lijsten a ++ b hd a tl a length a take n

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

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

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

Generische lijstfuncties

Functie let-in De equivalente l-uitdrukking voor let x = M in N: (lx. N)M

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

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

Lijstcomprehensies Quicksort kan neergeschreven worden als

Recursie De reductie van fac 5 geeft aanleiding tot

Recursie De reductie van fac 5 geeft aanleiding tot

Accumulatoren De reductie van fac 2 geeft aanleiding tot

Accumulatoren De reductie van fac 2 geeft aanleiding tot

(Naive) reverse inverse [a, b, c] geeft: [ ] + + [c] + +

(Naive) reverse inverse [a, b, c] geeft: [ ] + + [c] + + [b] + + [a] = c: b: a: [ ]

Reverse reverse [a, b, c] [ ] reverse [b, c] a: [ ] reverse

Reverse reverse [a, b, c] [ ] reverse [b, c] a: [ ] reverse [c] b: a: [ ] reverse [ ] c: b: a: [ ]

Continuaties

Continuaties

Continuaties

Continuaties

Applicatieve continuatie

Applicatieve continuatie

Transformatie tussen een imperatief en een functioneel programma function fac(n: integer): integer; var f:

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

Stroomdiagramma f: =1 n>1 f: =f*n fac: =f n: =n-1 stop

Verzameling van functies Resultaat: f 1(n, f, fac)

Verzameling van functies Resultaat: f 1(n, f, fac)

Vereenvoudigingen q b-conversies q x-conversies

Vereenvoudigingen q b-conversies q x-conversies