• 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!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

7. ¨Ubungsblatt

Typ-basiertes Programmieren und Schließen in Funktionalen Sprachen

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

Aufgabe 25

Beweisen Sie den zur Typregel

Γ`t : [τ0] Γ`u:τ Γ, x10, x2 : [τ0]`v :τ Γ`(case t of {[]→u; (x1 :x2)→v}) :τ

geh¨orenden Induktionsfall des Parametrizit¨ats-Theorems (nach geeigneten Vor¨uberlegungen zur Termsemantik von case-Ausdr¨ucken). 3 Aufgabe 26

Uberlegen Sie, was zu tun w¨¨ are, um unsere formale Betrachtung freier Theo- reme f¨ur die angemessene Behandlung des Datentyps

dataTree a =Leaf a |Node (Tree a) (Tree a)

zu erweitern. 3

Aufgabe 27

Zeigen Sie mit Hilfe der Typregeln, dass

(++) = Λα.fix(λrec: [α]→[α]→[α]. λxs : [α]. λys: [α].

casexs of {[ ]→ys; (z :zs)→z : (rec zs ys)})

den Typ ∀α.[α]→[α]→[α] hat. 3

Aufgabe 28

Berechnen Sie schrittweise Jreverse Bool(True:False: [ ]Bool)K∅,∅, wobei:

reverse = Λα.fix (λrec: [α]→[α]. λxs : [α].

casexs of {[ ]→[ ]α; (z :zs)→(++) α(rec zs) (z : [ ]α)}). Sie k¨onnen verwenden, dass

J(++)Kθ,σ S [x1, . . . , xn] [y1, . . . , ym] = [x1, . . . , xn, y1, . . . , ym]. 3 1

(2)

Aufgabe 29

Betrachten Sie unser Kalk¨ul samt allgemeiner Rekursion. ¨Uberlegen Sie, auf welche Art(en)

”⊥“ das urspr¨ungliche freie Theorem f¨ur den Typ (α → Bool) → [α] → [α] zerst¨oren kann. Leiten Sie aus Ihren Beobachtungen Hypothesen zur partiellen Korrektheit ab (v bzw. w; mit m¨oglichst wenig einschr¨ankenden Nebenbedingungen). Welche ¨Anderungen ergeben sich bei

zus¨atzlicher Betrachtung von seq? 3

2

Referenzen

ÄHNLICHE DOKUMENTE

Praktische Informatik 3: Funktionale Programmierung Vorlesung 10 vom 18.12.2018: Aktionen und Zustände.. Christoph Lüth Universität Bremen

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 ::

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

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

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

Typ-basiertes Programmieren und Schließen in Funktionalen