Funktionales Programmieren

  • Titel: Funktionales Programmieren
  • Organisation: UNI BREMEN
  • Seitenzahl: 234

Skript herunterladen (PDF)

Inhalt

  • imperativ funktional objektorientiert
  • Modul G Praktische Informatik Wintersemester
  • Fachbereich Mathematik und Informatik Universitt Bremen a
  • Algebraische Datentypen Aufzhlungstypen a Produkttypen
  • Summentypen Rekursive algebraische Datentypen Bume a Zusammenfassung
  • Dies ist Fassung von Februar
  • Programmieren auch eine Frage des Stils
  • zustandsbasiert imperativ objektorientiert
  • Abb Eine Klassikation von Programmierstilen
  • Funktionales Programmieren in der Nussschale
  • Funktionales Programmieren in der Nussschale
  • Weshalb funktional programmieren lernen
  • Weshalb funktional programmieren lernen
  • Rechnen mit Funktionen
  • Rechnen mit Funktionen
  • Vereinbarung Datentypgleichung Typausdruck Funktionsgleichung Muster Ausdruck Funktion
  • Tabelle Standardtypen von Haskell ihre Wertmengen und Literale
  • True False True False
  • Bool Bool Bool b False True b
  • Trotzdem ist kein Wertkonstruktor
  • Solche Muster werden unwiderlegbar irrefutible genannt
  • Die Anwendung dieser Gleichungen ergibt folgende Zwischenergebnisse
  • Die Funktionen minimum und delete sind vordeniert
  • Funktionen hherer Ordnung o
  • Funktionen hherer Ordnung o
  • Funktionsrume als Datentypen a
  • Funktionsrume als Datentypen a
  • Tabelle Funktionsrume im Vergleich zu anderen Datentypen a
  • Doc Line IntLine IntWord IntWord IntWord IntWord IntWord
  • Kodiert in Haskell sieht das so aus
  • y dist x y x y
  • Rekursive algebraische Datentypen
  • print print print print
  • member member member a
  • Abstrakte Datentypen I
  • Konkrete und abstrakte Datentypen
  • Die Vergleichsoperationen sind deniert als
  • Abstrakte Datentypen I
  • Konkrete und abstrakte Datentypen
  • Details nden sich in der Bibliothel Ratio
  • where u nu splitTree splitTree splitTree
  • Klassische abstrakte Datentypen
  • Klassische abstrakte Datentypen
  • Mehr Abstrakte Datentypen
  • Mengen als abstrakte Datentypen
  • Mehr Abstrakte Datentypen
  • Mengen als abstrakte Datentypen
  • Abb ein nicht ausgeglichener Baum
  • delete Ord a a AVLTree a AVLTree a
  • Mehr Abstrakte Datentypen y
  • delete x delete x x x x
  • Verzgerte Auswertung o
  • Verzgerte Auswertung o
  • Dies wird in drei Schritten berechnet
  • leftExpr leftExpr leftExpr leftExpr leftExpr
  • ees ees ees ees
  • e leftExpr leftExpr leftExpr leftExpr
  • Plus Minus Times Div
  • Zustnde und Seiteneekte a
  • IO a a IO b IO b
  • Ein Ausgabe von Dateien
  • Kombination von Aktionen
  • Kombination von Aktionen
  • m k m k fail s error s
  • Funktionen mit Seiteneekten
  • Beispiel Knoten in Bumen ersetzen a
  • Funktionen mit Seiteneekten
  • Listen mit und do
  • instance Monad IO where return
  • Feld und Graph
  • Feld und Graph
  • array bounds indices elems assocs accumArray accum
  • Instanz von Functor fmap Eq Ord Show Read
  • Implementierung von Array Implementiert als imperative Felder
  • vvv vvv vvv vvv vvvv
  • Probleme unzusammenhngende Graphen Zyklen a
  • Topologisches Sortieren geordnete Graphen
  • Beispiel g mkGraph True
  • Beweise und Typen
  • Formalisierung und Beweis
  • Beweise und Typen
  • Formalisierung und Beweis
  • Tabelle Schemata f r rekursive Funktionsdenitionen u
  • n fac n i i n n
  • Beweis Durch vollstndige Induktion a
  • Tabelle Induktionsschemata f r Beweise u
  • Die Typen von und sind in Haskell allgemeiner
  • Komplexitt funktionaler Programme a
  • Komplexitt funktionaler Programme a
  • Gemeinsame Teilausdrcke u
  • Listen und Felder
  • Listen und Felder
  • Abb Ein funktionales Feld als balancierter Baum
  • Ruckblick und Ausblick
  • Rckblick und Ausblick u
  • A Haskell for Fun
  • A Haskell for Fun
  • T C K T C M
  • A Programme und Module
  • A Typen und Klassen
  • A Typen und Klassen
  • A Ausdrcke u
  • A Die Struktur des Programmtextes
  • A Die Struktur des Programmtextes
  • In Haskell heißt so etwas ein Abschnitt section
  • ganz Zahl gebrochen Literal Zeichen
  • Zeichenkette Modul Typ Klasse Wert Wert Typ
  • B Syntaktischer Zucker in Haskell
  • Ck Ek otherwise Ek
  • Hilfsdenitionen mit let und where entsprechen einander
  • B Syntaktischer Zucker in Haskell
  • let D Dk in E
  • E where D Dk
  • Zeichenkettenliterale sind Listen von Einzelzeichen ß zk
  • C TE nischer Zucker in Haskell
  • D Das Glasgower HaskellSystem
  • A D Das L TE Paket lstlisting
  • Dies ist Fassung AA von Februar
  • Hut Knu Lan McC
  • Literaturverzeichnis Smo Tho

Vorschau

Berthold Hoffmann

hof@informatik.uni-bremen.de

Funktionales Programmieren

Programmieren

   r r r

zustandsbasiert

regelbasiert

r r r

imperativ funktional objektorientiert

¨ ¨ ¨

logisch

Modul 03-05-G–705.03, Praktische Informatik 3 Wintersemester 2009/2010

Fachbereich Mathematik und Informatik – Universit¨t Bremen a

Vorbemerkungen

Dieser Text beschreibt den Inhalt der Lehrveranstaltung Praktische Informatik 3 im 3. Semester des Informatikstudiums an der Universit¨t Bremen. a Diese Veranstaltung behandelt alles, was jeder Studierende der Informatik uber funktionales Programmieren wissen sollte. ¨ Unter www.informatik.uni-bremen.de/agbkb/lehre/pi3/ Weitere Informationen zur Veranstaltung finden sich an zwei Stellen: • ¨ ¨ Uber stud.ip sollen die Studierenden sich Tutorien zuordnen, Ubungsaufgaben lesen und abgeben, und sich Termine f¨ r Fachgespr¨che reservieren. u a o Hier k¨nnen auch im Forum Fragen zur Veranstaltung diskutiert werden. Unter der url www.informatik.uni-bremen.de/agbkb/lehre/pi3/ stehen das Script, Handb¨ cher zur verwendeten Programmiersprache Hasu kell und der benutzen Implementierung ghci zur Verf¨ gung. u

Dieser Text ist sicher nicht frei von Fehlen Hinweise auf Fehler aller Art und Anregungen f¨ r Verbesserungen werden gerne entgegengenommen und – u soweit m¨glich – in zuk¨ nftige Fassungen ber¨ cksichtigt. o u u