BuK/IIm20/Vorlesung 9 Lemke
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Python</language> == Übungsaufgabe S. 5 == === Implementation der angegebenen Lambdafunktionen in Python === '''(λx. x)''' <code id="60aa825353519"> identity_function = lambda x : x </code> '''(λf . (λx. (f x) ) )''' Als Python-Lambdafunktion: <code id="60aa825353582"> application = lambda f : lambda x : f(x) </code> <run id="60aa825353648"> test_f = lambda x : x * 3 applied = application(test_f) print(applied(4)) </run> Als reguläre Pythonfunktion: <code id="60aa8253535e9"> def outer(f): def inner(x): return f(x) return inner </code> <run id="60aa825353697"> def test_f(x): return x * 3 applied = outer(test_f) print(applied(4)) </run> == Übungsaufgabe S. 11 == === Erklärung der Funktion free() (bound() funktioniert analog) === [[Bild:Erklaerung free().jpg]] == Übungsaufgabe S. 13 == === Anwendung der ɑ-Konvention === [[Bild:Alpha-regel.jpg]] == Übungsaufgabe S. 14 == === Reduktion mit η-Regel und mit β-Regel === [[Bild:Eta-regel.jpg]] == Übungsaufgaben S. 15 == === Reduzieren Sie ((λ(x)(x x))(λ(x) x)) und ((λ(x)(x x))(λ(x)(x x))) === [[Bild:1.reduktion s.15.jpg.jpg]] === Zeigen Sie, dass für Y := (λf . ((λx. (f (x x)))(λx. (f (x x))))) gilt: (Y g ) = (g (Y g )) === [[Bild:2.reduktion s.15.jpg]] == Übungsaufgabe S. 17 == === Zeigen Sie, dass es von der Reduktionsreihenfolge abhängen kann, ob die für ((λy . z)((λx. (x x))(λx. (x x)))) existierende Normalform z gefunden wird oder nicht === [[Bild:1.reduktionsreihenfolge s.17.jpg]] === Verwenden Sie zur Berechnung von ((λx. ((x d)((λy . (x y )) a))) b) unterschiedliche Reduktionsreihenfolgen === [[Bild:2.reduktionsreihenfolge s.17.jpg]] == Übungsaufgabe S. 22 == === Currifizieren Sie f (x, y , z) = x + y + z === Mit Python-Lambdafunktionen: <code id="60aa8a3a01c1e"> xyz = lambda x : lambda y : lambda z : x + y + z </code> <run id="60aa8a3a01d07"> x = xyz(1) y = x(2) z = y(3) print(z) </run> Mit regulären Pythonfunktionen: <code id="60aa8a3a01c92"> def pythonic_xyz(x): def fy(y): def fz(z): return x + y + z return fz return fy </code> <run id="60aa8a3a01d67"> x = pythonic_xyz(1) y = x(2) z = y(3) print(z) </run> == Übungsaufgabe S. 23 == === Erklärung der boolschen Werte === [[Bild:Boolsche werte erklaerung.jpg]] === Berechnen Sie if true e1 e2 = e1 === [[Bild:Boolsche werte uebungsaufgabe.jpg]]