Ich bin ein Universitätsstudent und wir studieren derzeit Lambda Calculus. Es fällt mir jedoch immer noch schwer, genau zu verstehen, warum dies für mich nützlich ist. Mir ist klar, dass es nützlich sein kann, wenn Sie eine Menge funktionaler Programmierung durchführen. Ich bin jedoch der Meinung, dass dies nicht wirklich für das Erlernen funktionaler Programmierung erforderlich ist. Was denken Sie?
Zweitens, gibt es eine Verwendung für Lambda-Kalkül im Bereich der Informatik, jedoch außerhalb der funktionalen Programmiersprachen?
Sie fordern eine Bewerbung außerhalb der Informatik und Logik. Das ist leicht zu finden, zum Beispiel in der algebraischen Topologie ist es zweckmäßig, eine kartesische geschlossene Kategorie von Räumen zu haben, siehe die bequeme Kategorie von topologischen Räumen in nLab. Die formale Sprache, die den kartesischen geschlossenen Kategorien entspricht, ist genau der Kalkulus. Lassen Sie mich anhand eines sehr einfachen Beispiels veranschaulichen, wie nützlich dies ist.λ
Stellen Sie sich zunächst als Aufwärmübung vor, jemand fragt Sie, ob die durch definierte Funktion ist differenzierbar. Das muss man eigentlich nicht beweisen, man stellt nur fest, dass es sich um eine Zusammensetzung differenzierbarer Funktionen handelt, also differenzierbar. Mit anderen Worten, Sie haben eine einfache Schlussfolgerung basierend auf der Form der Definition.f:R→R f(x)=x2ex+log(1+x2)
Nun zum wirklichen Beispiel. Angenommen, jemand fragt Sie, ob die Funktion definiert ist durch ist stetig kann sofort mit "yes" antworten, da die Funktion mit dem -calculus definiert wird und von kontinuierlichen Maps , , usw. ausgeht .f:R→R λ max ∫ sin
Verschiedene Erweiterungen des Kalküls ermöglichen es, dasselbe in anderen Bereichen zu tun. Da ein glatter Topos beispielsweise eine kartesisch geschlossene Kategorie ist, wird jede Karte, die mit dem Kalkül definiert wird, ausgehend von Ableitungen und der Ringstruktur der Reals (und Sie können die Exponentialfunktion einwerfen, wenn Sie dies wünschen) automatisch erstellt glatt. (Tatsächlich ist der Hauptschub des glatten Topos die Existenz von nullpotenten Infinitesimalen, mit denen man bedeutungsvoll Dinge wie "Wir zerlegen eine Scheibe in unendlich dünne gleichschenklige Dreiecke" sagen kann.)λλ λ
quelle
Eine Sichtweise auf -calculus ist das einfache und knappe Modell von Parametrierprogrammen. Sie parametrisieren Code in fast jeder Programmiersprache, die Funktionen, Prozeduren oder Methoden enthält, und in jeder Sprache, die Module enthält oder die es Ihnen ermöglicht, Typen zu parametrisieren. Die Parametrisierung ist eine Form der Wiederverwendung. Da -calculus so einfach ist, treten die Gemeinsamkeiten vieler Programmiersprachen, mit denen Sie Code parametrisieren können, besonders deutlich in den Vordergrund.λλ λ
Es ist sicherlich möglich, ein sehr guter Programmierer zu sein, ohne etwas über -calculus zu wissen , aber Sie verpassen etwas Schönes, das auch sehr nützlich ist.λ
quelle
Microsoft LINQ (Language INtegrated Query) übersetzt funktionale Programmierfunktionen in prozedurale Sprachen. Sie verwendet -calculus in großem Umfang und ganz direkt , um Abhängigkeiten zu entwirren und Teile des Ausdrucksbaums zu trennen, die an den Datenbankserver delegiert werden können. Dies ist eine äußerst praktische Anwendung mit hohem kommerziellen Wert.λ
Ich habe eine kleine kommerzielle Anwendung unter Verwendung einer funktionalen Sprache geschrieben und kann Ihnen versichern, dass sie für Wissenschaftler und Forscher zwar lohnenswert, aber kommerziell weniger nützlich sind als ihre prozeduralen Verwandten. Es ist wirklich eine Frage von Pferden für Kurse, und am praktischsten ist eine Sprache, die je nach Bedarf prozedural oder funktional sein kann. Infolgedessen werden Funktionen, die zur Unterstützung von LINQ (in C #) eingeführt wurden, wie z. B. -Expressions, außerhalb des Kontexts von Datenbankabfragen häufig verwendet.λ
Wenn Sie also endlich gezwungen sind, schlechte Dinge zu tun, weil Sie bezahlt werden möchten , ist -calculus möglicherweise nützlicher als erwartet, obwohl Sie mit ziemlicher Sicherheit keine funktionierende Sprache verwenden.λ
quelle
Ohne mehr darüber zu wissen, höre ich, dass Linguisten Lambda-Kalkül verwenden.
http://www.sfu.ca/~jeffpell/Ling406/LambdaAbstractionOH.pdf , https://files.nyu.edu/cb125/public/Lambda/
quelle