Gut, dann würde ich sagen, können wir anfangen.
Ich muss nur den Bildschirm schon noch schnell deaktivieren.
Ja, willkommen in der vierten Übung.
Heute wollte ich erstmal noch mal ein bisschen das wiederholen, was wir am letzten Mal so schnell gemacht hatten,
nämlich Church-Numerale bzw. allgemein irgendwelche eingebauten Typen, also Typen, die wir in Lande-Termen einbauen.
Wer hat sich denn eventuell das Übungsplatz schon angeschaut und eventuell sogar eines der Dinge programmiert?
Programmiert nicht, aber in der vierten Übung die ersten zwei Raum-B-Karten.
Okay, magst du es hier an der Tafel machen?
Hast du Lust?
Nein, nicht gerade.
Dann entscheide dich.
Ich muss mal die Nummer dazu geben, dann kann ich es machen.
Okay, dann, also so intuitiv ist das, wir müssen Wahrheitswerte kutieren als Funktion, die zwei Parameter bekommen
und einen Wert wieder zurückgeben und je nachdem ob der Wahrheitswert True oder False ist, wird der erste oder der zweite der Parameter zurückgegeben.
Das heißt, es war die Definition, z.B. True ist, bekommt ein x und ein y, zwei Parameter und gibt immer konstant den ersten zurück.
Und False den zweiten.
Magst du eine machen? Vielleicht ist es dann intuitiver als wie ich es definieren würde.
Okay, also das war die Ft.
Ich muss mal zeigen, dass für jegliche Terme s und t gilt, dass s rauskommt.
Genau. Also du gehst jetzt davon aus.
Ich habe jetzt erstmal dieses y zu jeder, sehr leicht, und dann bekommt man wieder lambda dx, epsilon und dx, epsilon und dann wieder true, s, t.
Das wird dann genannt nach epsilon, dann kommt es jetzt zu, das ist x, s, t.
Und wenn man dann einfach diesen Teil da alles geben, das wird x und das wird epsilon.
Du solltest nur, hier geht die Klammer zu, also hier die Klammer auf und hier zu.
Das ist analog in dieser Zeile, da der lambda-Ausdruck sonst das alles mitfressen würde.
Genau, das ist das x, das ist das y, dann setzt man das da so ein und dann kommt hier nur noch das lambda x, y, x raus.
Genau.
Genau, das andere ist dann analog.
Also wir machen nur noch schnell da vollständig.
Was haben wir hier reduziert? Also das erste haben wir nur Definition entfaltet.
Hier von denen haben wir auch nur die Definition entfaltet und dann einmal reduziert und nochmal reduziert.
Und die Intuition ist eben, wir können uns irgendwelche Wahrheitswerte ausdecken, also true, false, on, off, heiss, kalt.
Und wir lassen diese Funktion rechnen, bekommen ein Bunion raus und setzen dann unsere Definition von true und false ein
und schauen welches der 2, also ob der erste oder der zweite zurückgegeben wird.
Und das wird überall durchexerziert.
Und ähnlich kann man das auch bei NOT machen.
Also NOT bekommt irgendein B und das soll jetzt ein, wie wir das beim letzten Mal schon hatten, if then else.
Man kann einfach machen, wenn der Bunion gilt, dann ist das false und sonst ist es true.
Aber ITE bekommt 3 Parameter und hier haben wir 3 Parameter gegeben, das heißt das können wir auch gleich besser reduzieren zu B.
Ja, wir setzen einfach ein, das heißt es ist B und was haben wir noch? Jetzt muss ich kurz schauen, dass ich nicht durcheinander komme.
Ja, es findet einfach die 3 aufeinander ein. B, false, true. Und das heißt es ist auch eine Möglichkeit.
Ich hatte beim letzten Mal noch eine weitere Möglichkeit angegeben, das direkt so zu definieren, wenn man nämlich, wir machen es mal noch intuitiver.
Also die Intuition ist, true bekommt den Wert für true und für false und sagt eben true und false bekommt es true und es false und sagt immer false.
Und wenn wir jetzt ein Bullion bekommen und denegieren, dann vertauschen wir einfach die Rollen von dem true und dem false. Also B, F und T.
Und das Ganze kann man auch so programmieren, wenn man möchte und das würde ich sagen, machen wir einfach mal. Ich mache jetzt gerade nicht die Angabe, das macht nichts.
Also das hier ist einfach hässlich. Kann man das einigermaßen lesen oder soll ich das Licht ausmachen? Ich mache es mal aus.
Also wir gehen das mal zeilenweise durch. Was sagt uns die erste Zeile? Die erste Zeile sagt von der Standard-Haskell-Bibliothek, die Prelude heißt.
Lassen wir einfach diese ganzen Funktionen, Successor, Expand und so weiter weg, damit wir die selber definieren können.
Die Bullions sind genauso definiert, also zum Beispiel, wenn wir das in unserer, mit der anderen Variablenbelegung so schreiben wollen, dann ist es eben true, false, gibt immer false.
Da passt jetzt gerade, das ist natürlich ein true. Und wir machen ein Reload und wenn wir jetzt zum Beispiel uns anschauen, was macht true, wenn wir ihm 23 unter 42 geben, dann kommt die 23 raus.
Presenters
Zugänglich über
Offener Zugang
Dauer
01:32:32 Min
Aufnahmedatum
2014-05-13
Hochgeladen am
2019-05-04 08:39:03
Sprache
de-DE