2002-12-06F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.

Slides:



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

Visual Basic - Genomgång
Talföljder formler och summor
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
hej och välkomna EKVATIONER Ta reda på det okända talet.
Datavetenskapens roll. Datavetenskap •Vad är datavetenskapens roll i kognitionsvetenskapen?
Funktioner och programorganisation
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Några standardalgoritmer
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Algoritmer och datastrukturer
Att programmera i språket Java
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
© 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
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Programmeringsbegrepp
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
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 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man ä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.
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
F. Drewes, Inst. f. datavetenskap1 Föreläsning 1: Inledning administrativt o dyl kursens mål varför programspråksteori? språkkategorier användningsområden.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
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öreläsning 7 Fysikexperiment 5p Poissonfördelningen Poissonfördelningen är en sannolikhetsfördelning för diskreta variabler som är mycket.
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.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck.
Aritmetik 3.4 M 8.2 E 2.2. dagens föreläsning operatorer för aritmetik tillämpningar.
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.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer.
Program. Symboliska samband Symboliska beteenden Matematisk kausalitet (orsak – verkan) 2x = y, y = x^2, y = kx + l.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Pontus Johansson 1 grammatiker 21.1 G 1 (BBS 7)
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
1 Matlab, föreläsning 1 Oktober MATLAB Perspektiv på materialdesign Lina Kjellqvist Rum: K324 Telefon:
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.
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.
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Lars Madej  Talmönster och talföljder  Funktioner.
Presentationens avskrift:

F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och HASKELL Lat evaluering

F. Drewes, Inst. f. datavetenskap2 Om funktioner (välbekanta fakta!?) A är funktionens domän och B är dess värdemängd Funktionens värde för ett argument a  A noteras som f(a) och är det b som uppfyller (a,b)  f Värdet kan vara odefinierat (om b inte existerar) men inga flertydigheter kan förekomma Om f(a) alltid är definierat är f total, annars är den partiell Låt A och B vara mängder. En (partiell) funktion f:A  B är en delmängd i A  B så att det, för varje a  A, finns max ett b  B där (a,b)  f.

F. Drewes, Inst. f. datavetenskap3 Matematisk funktionsdefinition Uttryck, falldistinktion och rekursion är de vanligaste hjälpmedlen som används för att definiera funktioner I matematiken är sättet på vilket en funktion f definieras absolut irrelevant så länge definitionen är exakt (och f faktiskt är en funktion enligt den generella definitionen). fib(n) = nom n  1 fib(n  1) + fib(n  2)annars Exempel: Fibonacci-funktionens definition

F. Drewes, Inst. f. datavetenskap4 Variablernas roll i matematiken En variabel som t.ex. n i fib(n) = … är en platshållare för ett godtyckligt men fast värde (dvs. n står för samma värde överallt i definitionen). Definitionen ska läsas ut "För alla n gäller fib(n) = …". (Jämför med imperativa programspråk där en variabel står för ett specifikt men föränderligt värde!)  Det finns inget begrepp om något yttre tillstånd som kan påverka resultatet – under alla omständigheter är fib(6) lika med 8. Den här egenskapen kallas referensiell genomskinlighet (eng. referencial transparency)

F. Drewes, Inst. f. datavetenskap5 Funktionella språk Variabler har ha samma karaktär som i matematiken Om uttryckens värde inte påverkas av kontexten är språket referensiellt genomskinligt eller rent funktionellt (  inga som helst sidoeffekter) Referensiell genomskinlighet förenklar språkets semantik betydligt (därför att definitionen inte behöver ta hänsyn till ett dynamiskt föränderligt tillstånd) Med funktionella språk försöker man överföra det mate- matiska funktionsbegreppet till programmeringen. Språken kallas för applikativa programspråk: För att få resultat utvärderas uttryck bestående av funktionsapplikationer.

F. Drewes, Inst. f. datavetenskap6 Funktionella språk (2) Viktiga ingredienser i ett funktionellt språk är ofta ett begrepp om (och notation för) funktionsapplikation några primitiva datatyper och funktioner tillsammans med en möjlighet att kombinera funktioner till nya att betrakta funktioner som vanligt data (funktioner är "first-class citizens")  funktioner kan vara in- och utdata till andra funktioner, såkallade högre ordningens funktioner (eng. higher-order function eller functional form), t.ex. komposition '  ':h = f  g  h(x) = f(g(x)) kombination '[…]':h = [f 1,…,f k ]  h(x)= (f 1 (x),…,f k (x)) iteration 'map':h = map f  h(x 1 …x k ) = f(x 1 )…f(x k )

F. Drewes, Inst. f. datavetenskap7 Det äldsta funktionella språket: LISP LISP utvecklades kring 1960 av McCarthy och kan betraktas som en programspråksvariant av -kalkylen Till skillnad från imperativa språk syftar LISP inte på numeriska utan på symboliska beräkningar Listan (över symboler och listor) var den enda datatypen  uttryck, funktioner, … representeras som listor Den universella funktionen EVAL som McCarthy skrev i LISP utvärderar LISP-uttryck; dess implementation blev den första LISP-interpretatorn Interpretatorn använder sig av read-eval-print-loopen som sedan dess blivit del av många interpretatorer

F. Drewes, Inst. f. datavetenskap8 ML och HASKELL ML och HASKELL är (betydligt) nyare och påminner syntaktiskt mer om andra programspråk Semantiska fördelar jämfört med LISP  typer och typdeklarationer  typinferens  strikt typisering  möjlighet att definiera (parametriserade) ADT:er Viktigaste skillnader mellan ML och HASKELL  ML tillåter att programmera i en imperativ stil medan HASKELL är referensiellt genomskinligt (inga sidoeffekter)  MLs evalueringsstrategi är strikt (eng. eager evaluation) medan HASKELLs är lat (eng. lazy evaluation)

F. Drewes, Inst. f. datavetenskap9 Lat evaluering Vid lat evaluering kan oändliga datastrukturer användas: Lat evaluering utvärderar endast de deluttryck vars värde behövs för att komma fram till resultatet. primes n | isPrime n = n : primes (n + 1) | otherwise = primes (n + 1) primesquares = map (^2) (primes 0) isPrimesquare = memberOf primesquares memberOf (elem:rest) n | elem < n = memberOf rest n | elem == n = True | otherwise = False