Deel I: Functionele Programmeertalen Hoofdstuk 4: Functioneel Programmeren.

Slides:



Advertisements
Verwante presentaties

Advertisements

PSD Basisstructuren programmeren.
Programmeren met Alice
Datastructuren Quicksort
Hoofdstuk 8: Recursie.
Lijsten in de -calculus Een lijst [E 1, E 2,..., E n ] kan in de -calculus voorgesteld worden als z.((z E 1 ) z.((z E 2 )... z.((z E n ) nil)...) met nil.
Uitwerking tentamen Functioneel Programmeren 29 januari 2009.
Practica Computerlinguistiek Tekst en uitleg:
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Hogere-ordefuncties nEen lijst langs lopen en met elk element iets doen nEen lijst langs lopen en sommige elementen selecteren map filter.
Datastructuren Analyse van Algoritmen en O
Datastructuren Analyse van Algoritmen en O
VBA en VBS Een introductie.

 - congruentie -regel:
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
Polymorf zoeken zoek :: (a  a  Bool)  [ (a, b) ]  a  b zoek eq [ ] x = ??? zoek eq ((a,b):ts) x | eq a x = b | otherwise = zoek eq ts x MayBe b No.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Lijstjes (Stacks & Queues) Onderwerp 7.
Functies op Proposities evalueer:: Bedeling  Prop  Bool tautologie:: Prop  Bool contradictie:: Prop  Bool equivalentie:: Prop  Prop  Bool vervulbaar::
Hoger-ordefuncties op lijsten nDoorloop een lijst en... map :: (a  b)  [a]  [b] filter :: (a  Bool)  [a]  [a] foldr :: (a  a  a)  a  [a]  a.
Les 2 Basisbouwstenen (deel 1)
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Tegengestelden / Synoniemen
Deel I: Functionele Programmeertalen Hoofdstuk 5: Implementatie- technieken.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
Fundamentele Informatica IN3120
TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica In3 005 Deel 2 College 1 Cees Witteveen Parallelle en Gedistribueerde Systemen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3120 College 5 Cees Witteveen
Frank Stalpers en Ad Baars
Functies als Getallen Jan Martin Jansen.
-calculus.
Functies definiëren nDoor combinatie van standaardfuncties fac :: Int  Int fac n = product [1..n] oneven :: Int  Bool oneven n = not (even n) negatief.
Char en String nCharéén letter uord ::Char  Int uchr ::Int  Char nString[Char] uwords :: String  [String] uunwords :: [String]  String ”hoi” ”CKI”
Hogere-ordefuncties nVoeg de elementen van een lijst samen nCombineer twee functies foldr :: (a  b  b)  b  [a]  b [a] (.) :: (b  c)  (a  b)  a.
Imperatief programmeren nProgramma bestaat uit nRunnen is opdrachten gegroepeerd in methoden één voor één uitvoeren te beginnen met main.
Hoofdstuk 7 verplicht… Keuze.
Functioneel Programmeren Daan Leijen. Wat gaan we doen? 3 fundamentele principes van computatie Equationeel redeneren IO-monad GUI's in Haskell (wxHaskell)
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
Datastructuren Sorteren, zoeken en tijdsanalyse
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
Bepalen van de resultante
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Co-Green Dit is een sheet met tekst. Dit is de kop. Dit is bullit 1. Deze bullits kunnen over de gehele lengte van de sheet doorlopen Dit is bullit.
Hoofdstuk 3 - Conditionele logica
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
PROGRAMMEREN LOGISCH en FUNCTIONEEL Ik zeg wat ik denk!
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
AWK A Pattern scanning and processing language made by Aho Weinberger Kernighan and explained by Albert Montijn.
(S)DT Haskell Functioneel programmeren.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Welkom! maandag 16 November 2015 Les B-2.
Loops en errors Array's Random try catch for loop while loop do while loop.
Berekening van de Orde Van een Algoritme
Project Landal Hochwald
PHP arrays.
Recursie in de wiskunde
Programmeren woensdag 4 oktober 2017.
Automatische conversie SIM -> UGM
Programmeren in de Klas
-calculus versus Scheme
Inleiding, slot, functies, samenvattend tekstverband
Breuken optellen en aftrekken
SQL Les February 2019.
Nim, een strategisch spelletje
Voorkennis Wiskunde Les 11 Hoofdstuk 5: §5.3 en §5.4.
Transcript van de presentatie:

Deel I: Functionele Programmeertalen Hoofdstuk 4: Functioneel Programmeren

Functies De equivalente -uitdrukking: Functienotatie:

Voorwaardelijke functies De equivalente -uitdrukking

Patroonherkenning De equivalente -uitdrukking

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

Lijsten De equivalente -uitdrukking

Lijsten De equivalente -uitdrukking

Functies op lijsten a ++ b concatenatie hd a eerste element van de lijst a tl a staart van de lijst a (lijst zonder kop) length a lengte van de lijst a take n a lijst met eerste n elementen van lijst a drop n a lijst zonder de eerste n elementen van lijst a prefix n 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 kop- elementen 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 scalair product van de lijsten a en b position a x positie van x in lijst a map f a lijst met f toegepast op de elementen van a filter f a lijst met de elementen van a waarvoor f a waar is

Generische lijstfuncties

Functie let-in De equivalente -uitdrukking voor let x = M in N : ( x. N ) M met applicatieve evaluatievolgorde

Functie where De equivalente -uitdrukking voor N where x = M : ( x. N ) M

Functie where De equivalente -uitdrukking voor N where x = M : ( x. 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:[ ]  c:b:a:[ ]

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 fac:=f f:=1 n>1 f:=f*n n:=n-1 stop

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

Vereenvoudigingen   -conversies   -conversies