• Keine Ergebnisse gefunden

Typ-basiertes Programmieren und Schließen in Funktionalen Sprachen

N/A
N/A
Protected

Academic year: 2022

Aktie "Typ-basiertes Programmieren und Schließen in Funktionalen Sprachen"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

4. ¨Ubungsblatt

Typ-basiertes Programmieren und Schließen in Funktionalen Sprachen

Jun.-Prof. Dr. Janis Voigtl¨ ander / Dipl.-Math. Daniel Seidel Wintersemester 2009/10

Aufgaben aus vorhergehenden ¨ Ubungen:

Aufgabe 11

Beweisen Sie, dass jede Funktion f :: (a,a)→a mit fst odersnd semantisch

¨

aquivalent ist. 3

Aufgabe 17

Stellen Sie foldr mittels destroy dar. 3

Aufgabe 18

Beweisen Sie die Korrektheit der destroy/unfoldr-Regel. 3 Aufgabe 19

Optimieren Sie das Beispielzip (fromTo 1 10) (fromTo ’a’ ’j’) aus der Vor- lesung weiter. Versuchen Sie, ein Programm ohne Zwischendatenstrukturen

und Maybe-Konstrukte zu erhalten. 3

Aufgabe 14

Versuchen Sie, folgende Programmfragmente mittels foldr-fusion und/oder shortcut deforestation zu optimieren:

reverse ◦map h map h◦reverse reverse ◦reverse

Welche Auswirkung hat die Implementierungsvariante des reverse (effizient,

ineffizient)? 3

Eine neue Aufgabe:

Aufgabe 20

Schreiben Sie eine Funktion ppf :: (a → a → a) → [a] → [a], die f¨ur assoziative Funktionen auf Booleschen Werten, nicht aber auf Werten des Typs Three, semantisch zu scanl1 ¨aquivalent ist. 3

1

Referenzen

ÄHNLICHE DOKUMENTE

readFile :: FilePath -> IO String Mehr Operationen im Modul IO der Standardb¨ ucherei. Buffered/Unbuffered,

Abstrakte Datentypen Signaturen & Axiome Korrektheit von Programmen Zustand und Aktionen. Teil III: Beispiele,

isDoesNotExistError :: IOError -> Bool isIllegalOperation :: IOError -> Bool isPermissionError :: IOError -> Bool isUserError :: IOError -> Bool ioeGetErrorString ::

Typ-basiertes Programmieren und Schließen in Funktionalen

Jede Liste wird intern durch eine leere Liste abgeschlossen. Jede Liste wird intern durch Jede Liste wird intern durch eine leere

Versuchen Sie, die relationale Typinterpretation so zu erweitern, dass sie das Beispiel flat (incr t ) = map (+1) (flat t ) aus der Vorlesung mittels eines. freien Theorems beweisen

Beweisen Sie die Korrektheit der destroy / unfoldr -Regel. Versuchen Sie, ein Programm

Typ-basiertes Programmieren und Schließen in Funktionalen