Dieser Audiobeitrag wird von der Universität Erlangen-Nürnberg präsentiert.
Ja, also heute.
Ja, ich weiß nicht inwieweit das Skript, das schon auf der Webseite steht,
nebenher gelesen wird. Da kann man also, ja der Nachteil von so einem Skript ist,
dass dann die launigen Ansagen vom letzten Mal wieder drinstehen. Das kann ich jetzt
also nicht wieder verwenden. Ich habe also anscheinend letztes Mal gesagt,
dass der Lambda-Kalkül also auf einer Stufe mit großen Erfindungen der Menschheit
bis hin zur Currywurst steht. Ja, gut. Auch wenn ich das jetzt also so in der Form
genau jetzt nicht wiederholen kann, der Lambda-Kalkül ist etwas sehr, sehr
fundamental ist. Auch nicht nur für die Informatik, sondern für die Logik und
das Denken und die Mathematik schlechthin, auch wenn die Mathematiker das
natürlich wieder noch nicht mitbekommen haben. So, dementsprechend ist da auch
schon ein durchaus älteres, gut abgehangenes Konzept.
Stammt also, ja jetzt, wenn wirklich jetzt ein Mathematikhistoriker kommt, der
erzählt mir wahrscheinlich, dass das eigentlich noch wieder ganz anders
einzuordnen ist. Aber sagen wir mal, wichtige Leute aus der Anfangszeit des
Lambda-Kalküls, vermutlich die Erfinder, sind Church und Kleeney. Church kennen
sie deswegen schon, weil ich ihn hier schon erwähnt habe. Diese bewusste
Church-Rosser-Eigenschaft, über die wir schon gesprochen haben, die wurde
ursprünglich mal für den Lambda-Kalkül bewiesen und erst später hat man gemerkt,
also das mit dem Termen ersetzen, was nämlich die Grundlage des Lambda-
kalküls ist, das kann man auch in allgemeinem Kontext noch anwenden. Und den
Kleeney kennen sie auch, das ist der mit dem Sternchen an den regulären
Ausdrücken der Kleeney-Stalk.
So, ja was ist der Lambda-Kalkül?
Also, erste Antwort, Lambda-Kalkül ist funktionales Programmieren. Fehlt noch
ein bisschen was, ich wurde eben schon gefragt, muss man hier PFP gehört
haben, um das zu verstehen? Nein, muss man nicht. Aber in der Tat nicht, also für
funktionale Programmierung ist der Lambda-Kalkül grundlegend.
Da habe ich ja schon mal behauptet, dass was wir hier machen, ist funktionales
Programmieren und da hatten wir den Lambda-Kalkül noch gar nicht.
Genauer gesagt also
ist das funktionales Programmieren mit höheren Funktionen. Was meine ich mit
einer höheren Funktion? Nun, zum Beispiel kann ich, wenn ich Haskell
programmiere, also ich bringe jetzt gewissermaßen gerade Haskell-
programmieren bei, da kann ich eine Funktion definieren, indem ich hier den
Funktionsnamen links hinschreibe, irgendwelche Argumente dahinter und dann
ein Gleichheitszeichen, dann sage ich halt, was diese Funktion ist. Zum Beispiel
kann sie das hier sein. Das ist jetzt mal eine nicht recursive
Definition.
Also twice von f und x ist einfach f zweimal angewendet auf x, das heißt die
Funktion, die nimmt hier ein Argument, das selber wieder eine Funktion ist und
verdoppelt dann praktisch diese Funktion. Können sie ausprobieren, wird in Haskell
gefressen. Und was gibt es noch?
So, wenn sie jemals was mit Listen gemacht haben, ob nur in Haskell oder
nicht, dann haben sie sicher mal eine Map-Funktion verwendet, die kann ich im
Prinzip sogar in C hinschreiben, wenn ich will. Eine Map-Funktion ist eine, die
nimmt sich als Argument eben eine Funktion auf den Typen der Einträge und
macht daraus eine Funktion zwischen den entsprechenden Listen-Typen, indem sie
die gegebenen Funktionen auf jedes Listen-Element anwendet. Das heißt, ich
Presenters
Zugänglich über
Offener Zugang
Dauer
01:20:50 Min
Aufnahmedatum
2015-05-04
Hochgeladen am
2015-05-04 20:21:43
Sprache
de-DE