- Titel: Funktionales Programmieren
- Organisation: UNI BREMEN
- Seitenzahl: 234
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