2002-12-10F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Programstruktur: C för enchipsdatorer
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
2D1311 Programmeringsteknik med PBL
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Polymorfism.
Välkommen Vahid Mosavat
Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
1 Introduktion till SML Nr 2 Värden, typer och funktioner.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
i olika programmeringsspråk
Programmering B PHP Lektion 2
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 Programmeringsmetodik, 8p ML-delen Programmering Programmeringsmetodik Programspråk NR 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Algoritmer. Ordet kommer från en persisk författare som kom från al’Khowârizmi (engelskans algorithm). Han skrev boken ’Kitab al jabr w’al-muqabala’.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Fonologi Analys av ett okänt språk.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: Rum: D438.
2D1311 Programmeringsteknik med PBL
Föreläsning 11 Logik med tillämpningar Innehåll u Generell resolution u Kapitel i Ben-Ari.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Föreläsning 9 Logik med tillämpningar Innehåll u Semantiska tablåer i predikatlogiken u Klausulform u Herbrandmodeller u Kapitel 3.5,
Anders Sjögren Deklarationsområde och funktioner.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Satslogik, forts. DAA701/716 Leif Grönqvist 5:e mars, 2003.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Föreläsning 16 Logik med tillämpningar Innehåll u Information kring kursvärdering och tentagenomgång u Genomgång av övningstenta 2.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.
Pontus Johansson 1 grammatiker 21.1 G 1 (BBS 7)
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 3 Operatorer Flödeskontroll Primitiva datatyperKlasser i API och egna klasser int double byte float char boolean short long String BufferedReader.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Selektion jämförande och logiska operatorer
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Algoritmer och loopar Algoritmer, beräkningsbarhet
KPP053, HT2015 MATLAB, Föreläsning 4
Föreläsning 3: Booleans, if, switch
Presentationens avskrift:

F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen

F. Drewes, Inst. f. datavetenskap2 Allmänt om -kalkylen På 1930-talet besvarades några grundläggande frågor Vilka principiella begränsningar gäller för formella bevissystem och deras härledningar (Gödel 1936)? Hur kan begreppet algoritm formaliseras (Turing 1939)? Var ligger gränsen mellan algoritmisk lösbarhet och olösbarhet (Turing 1939)? Men det var inte bara Turing som föreslog en modell. Samma år (1939) definierade Alonzo Church -kalkylen – ett enkelt system i vilket beräkningsbara funktioner kan definieras och evalueras.

F. Drewes, Inst. f. datavetenskap3 Allmänt om -kalkylen (2) Medan Turings maskinmodell liknar imperativa språk, är -kalkylen ett abstrakt sätt att definiera och kombinera funktioner, liknar alltså funktionella språk Det överraskande är att båda är precis lika kraftfulla  Church-Turing-tes funktionellimperativ -kalkyl Turingmaskin  

F. Drewes, Inst. f. datavetenskap4 -kalkylens syntax Låt  var  stå för en oändlig mängd av variabler (vanligtvis används små bokstäver). Mängden av alla -uttryck definieras med hjälp av följande kontextfria regler:  expr   var  | (  expr   expr  ) | var .  expr  x (y x)  x.(y x) y) x.(y x) y.  x.(y x) y) ( x. y.( x.x (x x)) x.(x y))

F. Drewes, Inst. f. datavetenskap5 Funktionsapplikation och funktionsdefinition Tanken bakom syntaxen är… (E 1 E 2 )står för funktionsapplikation: E 1 appliceras till E 2 x.Ebeskriver en funktion: x är den (enda) formella parametern och E är bodyn. Uttrycket x.E kallas -abstraktion Vanlig programspråkssyntax för x.E vore t.ex. fun f(x) = E. Den viktigaste skillnaden är att -kalkylens funktioner är anonyma – de bär inga namn!

F. Drewes, Inst. f. datavetenskap6 Bundna och fria variabler I x.E är x. ”funktionshuvudet” som ”deklarerar” en formell parameter x. Där x förekommer i E används alltså funktionens formella parameter – x sägs vara bunden. Variabler som förekommer i ett uttryck på ställen där de inte är bundna är fria variabler. ( x. y.( x.x (x x)) x.(x y))  bound(E) = {x,y} och free(E) = {y} i det här fallet ( x. y.( x.x (x x)) x.(x y)) fri

F. Drewes, Inst. f. datavetenskap7  -konversion och  -reduktion Notation: Att ersätta alla fria förekomster av x i E 1 med E 2 skrivs som E 1 [x  E 2 ].  -konversion Formella parametrar får alltid döpas om, dvs varje underuttryck x.E får bytas ut mot y.E[x  y] om y inte är fri i E. Man skriver E 1   E 2.  -reduktion Genom att använda  -reduktion evalueras -uttryck. Varje underuttryck ( x.E E') får bytas ut mot E[x := E'] om bound(E)  free(E') = . Man skriver E 1   E 2. (Om bound(E)  free(E')   används  -konversion först.)

F. Drewes, Inst. f. datavetenskap8 Church-Rosser-teoremet En beräkning i -kalkylen är en sekvens E 1   E 2 av  -reduktioner (och eventuella  -konversioner).  E 2 är på normalform om inga fler  -reduktioner är möjliga (E 2 betraktas som beräkningens resultat, dvs E 1 s värde) Men kan ett uttryck inte ha flera olika värden då??? Church-Rosser-teorem Om E   E 1 och E   E 2 så finns det ett uttryck E' sådant att både E 1   E' och E 2   E'.     E E2E2 E1E1 E'    

F. Drewes, Inst. f. datavetenskap9 Att programmera i -kalkylen Hur kan de vanliga datatyperna definieras i -kalkylen? operationer är -uttryck dataelement är också -uttryck TRUE = x. y.x FALSE = x. y.y IF B THEN E ELSE E' = ((B E) E') B AND B' = ((B B') FALSE ) Datatyp boolean

F. Drewes, Inst. f. datavetenskap10 Att programmera i -kalkylen (2) PAIR E E' = x. IF x THEN E ELSE E' FIRST P = (P TRUE ) SECOND P = (P FALSE ) Datatyp pair Datatyp integer 0 = x.x SUCC N = PAIR FALSE N IS_ZERO N = FIRST N PRED N = IF IS_ZERO N THEN 0 ELSE SECOND N