Sie programmieren darin! Schauen Sie sich die Kodierungen der Kirche an . Sie können sehen, wie so ziemlich alle Arithmetik ausgeführt werden kann, was Sie wahrscheinlich davon überzeugen dürfte, dass sie äußerst leistungsfähig ist. Ich mag es jedoch, Operationen auf Listen zu betrachten. Sie können fast jede Datenstruktur anhand einer Funktion definieren, die die wichtigste Operation ausführt.
Zum Beispiel ist eine Kodierung einer Liste die Fold-Funktion, die darüber faltet. Beachten Sie, dass dies nicht die Codierung von Church ist, sondern eine, die ich von Percies Typen und Programmiersprachen erhalten habe. Churchs Paarkodierungen geben uns keine Rekursion, wir müssen sie mit einer Art Rekursionskombinator wieder in uns selbst einfügen.
Daher benötigt eine Liste zwei Argumente, eine Funktion zum Falten und einen Anfangswert, um an einem bestimmten Punkt in die Falte eingefügt zu werden.
cons x xs = lam f. lam a. f x (xs f a)
nil = lam f. lam a. a
Jetzt können wir eine Summation mit einer Additionsfunktion definieren (siehe oben).
sum xs = xs add 0
Wir können mehr tun und eine Kartenfunktion definieren
consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil
Wenn Sie immer noch nicht davon überzeugt sind, dass hier eine Berechnung stattfindet, und sicherstellen möchten, dass Sie eine Berechnung durchführen können, überprüfen Sie diese den Festkomma-Kombinator . Es tut mir ein bisschen weh, manchmal darüber nachzudenken, also bin ich mir nicht sicher, ob ich es als intuitiv bezeichnen würde, aber wenn Sie es manuell mit einigen Argumenten auswerten, können Sie sehen, was los ist.