-calculus versus Scheme

Slides:



Advertisements
Verwante presentaties
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
Advertisements

Programmeren met Alice
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.
Deel I: Functionele Programmeertalen Hoofdstuk 4: Functioneel Programmeren.
<Mdl01 hoorcollege 1>
Hogere-ordefuncties nEen lijst langs lopen en met elk element iets doen nEen lijst langs lopen en sommige elementen selecteren map filter.
Reductiemachine Functionele talen en dus de -calculus, worden vaak geïmplementeerd door een reductiemachine. De elementaire stap is een reductie, en de.
Conditionele expressie
Computervaardigheden Hoofdstuk 4 — Scripting (Let op: dit is enkel voor studenten Biologie.)
 - congruentie -regel:
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
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.
Deel I: Functionele Programmeertalen Hoofdstuk 5: Implementatie- technieken.
Download en installeer de gereedschappen
Natuurlijke-Taalinterfaces week 5 Lambda-termen en Lambda-conversie.
College 22 Interaction College MCI-2 Jacobijn Sandberg 18 januari 2001.
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.
Reguliere talen nReguliere grammatica: versimpelde Contextvrije grammatica nFinite-state Automaton: andere manier om een taal te beschrijven nReguliere.
Imperatief programmeren nProgramma bestaat uit nRunnen is opdrachten gegroepeerd in methoden één voor één uitvoeren te beginnen met main.
Functioneel Programmeren Daan Leijen. Wat gaan we doen? 3 fundamentele principes van computatie Equationeel redeneren IO-monad GUI's in Haskell (wxHaskell)
PHP functies.
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
Mail: Jan Zuurbier  Mail:
ANTWOORDEN DIAGNOSTISCHE TOETS MODELOMGEVING. Syntaxis = Syntaxis (van het Oudgriekse συν- syn-, "samen", en τάξις táxis, "regeling") is binnen de theoretische.
Object georiënteerd programmeren in Alice
Chris Pollentier 18 / 12 / 2002 De LOGO taalwereld.
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
Semantische Interpretatie Jurafsky & Martin (Ed. 1): Hoofdstuk 15
Word order: Place and Time Woord volgorde
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Les 7 Multiple Document Interface Programmeren met Visual Basic Karl Moens.
CONTROLESTRUCTUREN (DEEL 1)
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
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;
tircms02-p les 1 Operating Systems practicum
HTML De basis-elementen.
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.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
(S)DT Haskell Functioneel programmeren.
Algoritmiek Controle-structuren Loops; Switch-statement. Hoorcollege 5 - Ma. 2 okt L.M. Bosveld-de Smet.
eval (Add x y) = add (eval x) (eval y)
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
1/11 Algoritmen en Complexiteit Programmeerparadigma’s Voorbereiding Visitatie ZAP vergadering woensdag 27/2/2008.
1 februari 2016 PHP expressie statement. 1 februari 2010 Titel van de presentatie 2 Boole logica? Definitie De booleaanse operatoren zijn genoemd naar.
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Javascript. Vandaag Samenvatting vorige les PSD's Random Array's Herhalingen – For-loop – While-loop.
Robby de Robot. Javascript Tot nu toe gebruikt: – document.write(" Hello World "); – alert("tekst") – Toon een waarschuwingsvenster – prompt("tekst",
Gezondheid en gezond gedrag
Berekening van de Orde Van een Algoritme
Javascript.
Recursie in de wiskunde
Hoofdstuk 9.2 Strings.
Object georiënteerd programmeren
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Voortborduren op eerder gedaan werk
Programmeren in de Klas
PHP regular expressions
Software Development fundamentals
Transcript van de presentatie:

-calculus versus Scheme

Syntax : functie definitie Scheme (define (f1 x) <body>) (define f1 (lambda (x) <body>)) (define f2 (lambda (x y z) <body>)) (define id (lambda (x) x)) -calculus x.<body> x. y. z. <body> x.x

Syntax: functie applicatie Scheme (f1 x’) (f2 x’ y’ z’) ((lambda (x y z) <body>) x’ y’ z’) -calculus (x.<body>)x’ ((((x. y. z. <body>) x’) y ) z’ ((plus) cn )cm

Voorgedefinieerde functies/ syntactic sugare Scheme 0, 1, 2, 3, 4, … +, -, +1, -1, * (cons a b) (car c) (cdr c) (define (f …) <... >) -calculus c0, c1, c2, c3, c4, … plus, minus, succ, pred, times ((cons)a)b (c)car (c)cdr f  ...

Vervolg Scheme (let ((id1 v1) … (idn vn)) <body>) (letrec ((fac (lambda (n) … fac …)) <body> ) -calculus (…(id1. id2. ... idn. <body>)v1) …)vn) fac  (Y)FAC FAC  f. n. ….(f) … n

Imperatief Programmeren Scheme (set! x 5) (set-car! X 5) (set-cdr! X 5) (display “hello world”) (newline) Side-effects!!! -calculus ? Functioneel

Order Evaluation Scheme: applicative order (f a) 1. eval f 2. eval a 3. Apply f to a  Normal order (if, and, …) -calculus (f)a resultaat onafhankelijk van evaluatie-volgorde

Opdracht: 1.Definieer een procedure in Scheme die gegeven invoer n, de Church-numeral cn (maw.een functie!) als resultaat geeft. Definieer ook de inverse functie, die van cn , n berekent. 2.Definieer de rekenkundige operaties plus en times in Scheme op deze “Church numerals” cn. 3.Currying: Geef de gecurryde versie van de procedure “accumulate” uit de oefeningen. 4.Herdefinieer volgende Scheme special forms in Scheme uitsluitend met lambda expressies: cons, car, cdr, if, true, false, and,or,not. 5.Schrijf de volgende functie als Scheme-procedure en als -expressie: f(x) = 1 als x = 0 x + f(x - 1) als x > 0 Wat berekent de functie f eigenlijk?