• Keine Ergebnisse gefunden

Aufgabe 1. Wir haben im letzten ¨ Ubungsblatt begonnen, Typinferenz f¨ ur Γ ` \x −> ((+) x) 1 : α

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe 1. Wir haben im letzten ¨ Ubungsblatt begonnen, Typinferenz f¨ ur Γ ` \x −> ((+) x) 1 : α"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Siegen

Lehrstuhl Theoretische Informatik Carl Philipp Reh

Funktionales Programmieren SS 2020

Ubungsblatt 13 ¨

Aufgabe 1. Wir haben im letzten ¨ Ubungsblatt begonnen, Typinferenz f¨ ur Γ ` \x −> ((+) x) 1 : α

durchzuf¨ uhren. Dies f¨ uhrte zu dem Typgleichungssystem

E = {α = α

1

→ α

2

, α

4

→ α

3

→ α

2

= Int → Int → Int, α

4

= α

1

, α

3

= Int}, was wir allerdings noch nicht gel¨ ost haben. L¨ osen Sie E, indem Sie den Uni- fikationsalgorithmus anwenden. Was ist das Endergebnis der Typinferenz?

Aufgabe 2. Zeigen Sie, dass der folgende Ausdruck im nicht polymorphen Typsystem nicht wohlgetypt ist, indem Sie Typinferenz darauf anwenden:

let f = \ x -> x

in case f True of { True -> f 0 }

Aufgabe 3. Wir nehmen nun an, dass Nil :: f o r a l l a . List a

Cons :: f o r a l l a . a -> List a -> List a

Zeigen Sie, dass der folgende Ausdruck im polymorphen Typsystem wohlge- typt ist:

let f = \ x -> Cons x Nil

in case f 0 of { Nil -> f True }

1

Referenzen

ÄHNLICHE DOKUMENTE

Wenn man zeigen will, dass Funktionen stetig sind, kommt es oft vor, dass man mit mehreren Ketten auf einmal zu tun hat.. Diese Funktion ist stetig, weil sie

Er besagt, dass jede stetige Funktion einen kleinsten Fixpunkt hat und zeigt sogar, wie man diesen erh¨ alt..

Allerdings terminiert g c nicht, weil es sein Argument so weit auswerten muss, bis klar ist, welcher Wertkonstruktor (hier M a k e ) angewandt wurde. Wir ben¨ otigen also nicht

Wir werden hierbei einige Einschr¨ ankungen vornehmen, die allerdings keine wirklichen Einschr¨ ankungen sind, da man alle anderen Haskell-Programme in unsere erlaubte Syntax

Wir m¨ ussten eigentlich noch zeigen, dass alle Funktionen, die wir in der Definition der Semantik benutzt haben, auch stetig sind.. Da dies allerdings sehr aufw¨ andig ist, m¨

Intuitiv geschieht dies, indem man Typvariablen so ersetzt, dass alle Typgleichungen von der Form τ = τ sind, also zum Beispiel α = Int wird zu Int = Int, indem man α durch

I ” nicht l¨ osbar“ liefert, wenn es keine L¨ osung f¨ ur E gibt, I und andernfalls eine allgemeinste L¨ osung f¨ ur E liefert.. Wir starten mit einer Substitution s, die am

Lehrstuhl Theoretische Informatik Carl Philipp Reh. Funktionales Programmieren