Mit Currysoße zuzubereiten

In der Mathematik und Informatik mit Currysoße zuzubereiten, ist die Technik, eine Funktion umzugestalten, die vielfache Argumente (oder ein N-Tupel von Argumenten) auf solche Art und Weise nimmt, dass es als eine Kette von Funktionen jeder mit einem einzelnen Argument (teilweise Anwendung) genannt werden kann. Es wurde von Moses Schönfinkel entdeckt und später durch den Curry von Haskell wieder entdeckt. Wegen dessen sagen einige, dass es richtiger sein würde, um es schönfinkeling zu nennen.

Mit Currysoße unzuzubereiten (auch bekannt als mit Currysoße gegenzuzubereiten), sind die Doppeltransformation dazu, mit Currysoße zuzubereiten, und können als eine Form von defunctionalization gesehen werden. Es nimmt eine Funktion f (x), der eine andere Funktion g (y) infolgedessen zurückgibt, und eine neue Funktion f nachgibt (x, y), der mehrere zusätzliche Rahmen nimmt und sie auf die durch f zurückgegebene Funktion anwendet. Der Prozess kann nötigenfalls wiederholt werden.

Motivation

Mit Currysoße zuzubereiten, ist dem Prozess ähnlich, eine Funktion von vielfachen Variablen für einige gegebene Werte auf Papier zu berechnen. Zum Beispiel, in Anbetracht der Funktion:

:To bewerten, ersetzen zuerst durch 2.

:Since das Ergebnis ist eine Funktion, diese Funktion, kann als definiert werden.

:Next, ersetzen Sie das Argument durch 3, erzeugend.

Auf Papier, mit der klassischen Notation, wird das gewöhnlich alle in einem Schritt getan. Jedoch kann jedes Argument folgend ebenso ersetzt werden. Jeder Ersatz läuft auf eine Funktion hinaus, die genau ein Argument nimmt. Das erzeugt eine Kette von Funktionen als in der Lambda-Rechnung, und Mehrargument-Funktionen werden gewöhnlich in der mit Currysoße zubereiteten Form vertreten.

Einige Programmiersprachen verwenden fast immer mit Currysoße zubereitete Funktionen, vielfache Argumente zu erreichen; bemerkenswerte Beispiele sind ML und Haskell, wo in beiden Fällen alle Funktionen genau ein Argument haben.

Wenn wir f eine Funktion sein

lassen:

dann die Funktion g

:

ist eine mit Currysoße zubereitete Version dessen. Hier, ist eine Funktion, die ein Argument y kartografisch darstellt, um z zu resultieren. In der besonderen Einzelheit,

:

ist die mit Currysoße zubereitete Entsprechung vom Beispiel oben. Bemerken Sie jedoch, dass, während ähnlich, mit Currysoße zuzubereiten, nicht dieselbe Operation wie teilweise Funktionsanwendung ist.

Definition

In Anbetracht einer Funktion f des Typs, es mit Currysoße zubereitend, macht eine Funktion. D. h. nimmt ein Argument des Typs und gibt eine Funktion des Typs zurück. Mit Currysoße unzuzubereiten, ist die Rücktransformation, und wird in Bezug auf sein Recht adjoint am leichtesten verstanden, sich wenden.

Der  Maschinenbediener wird häufig richtig-assoziativ betrachtet, so wird der mit Currysoße zubereitete Funktionstyp häufig als geschrieben. Umgekehrt, wie man betrachtet, ist Funktionsanwendung nach links assoziativ, so dass dazu gleichwertig ist.

Mit Currysoße zubereitete Funktionen können auf jeder Sprache verwendet werden, die Verschlüsse unterstützt; jedoch werden mit Currysoße unzubereitete Funktionen allgemein aus Leistungsfähigkeitsgründen bevorzugt, da die Gemeinkosten der teilweisen Anwendung und Verschluss-Entwicklung dann für die meisten Funktionsanrufe vermieden werden können.

Mathematische Ansicht

In der theoretischen Informatik mit Currysoße zuzubereiten, stellt eine Weise zur Verfügung, Funktionen mit vielfachen Argumenten in sehr einfachen theoretischen Modellen wie die Lambda-Rechnung zu studieren, in der Funktionen nur ein einzelnes Argument nehmen.

In einem mit dem Satz theoretischen Paradigma mit Currysoße zuzubereiten, ist die natürliche Ähnlichkeit zwischen dem Satz von Funktionen von zu und dem Satz von Funktionen von zum Satz von Funktionen von dazu. In der Kategorie-Theorie mit Currysoße zuzubereiten, kann im universalen Eigentum eines Exponentialgegenstands gefunden werden, der den folgenden adjunction in kartesianischen geschlossenen Kategorien verursacht: Es gibt einen natürlichen Isomorphismus zwischen dem morphisms von einem binären Produkt und dem morphisms zu einem Exponentialgegenstand. Mit anderen Worten mit Currysoße zuzubereiten, ist die Behauptung, dass Produkt und Hom adjoint functors sind; das ist es gibt eine natürliche Transformation:

:

Das ist das Schlüsseleigentum, eine Kartesianische geschlossene Kategorie zu sein.

Unter der Ähnlichkeit des Currys-Howard ist die Existenz davon, mit Currysoße zuzubereiten und mit Currysoße unzuzubereiten, zum logischen Lehrsatz gleichwertig, weil Tupel (Produkttyp) Verbindung in der Logik entsprechen, und Funktionstyp Implikation entspricht.

Curry ist eine dauernde Funktion in der Topologie von Scott.

Das Namengeben

Der Name "mit Currysoße zubereitend", ins Leben gerufen von Christopher Strachey 1967, ist eine Verweisung auf den Curry des Logikers Haskell. Der alternative Name "Schönfinkelisation", ist als eine Verweisung auf Moses Schönfinkel vorgeschlagen worden.

Unähnlichkeit mit der teilweisen Funktionsanwendung

Mit Currysoße zuzubereiten, und teilweise Funktionsanwendung wird häufig verschmelzt. Der Unterschied zwischen den zwei ist für Funktionen am klarsten, die mehr als zwei Argumente nehmen.

In Anbetracht einer Funktion des Typs mit Currysoße zuzubereiten, erzeugt. D. h. während eine Einschätzung der ersten Funktion als vertreten werden könnte, würde die Einschätzung der mit Currysoße zubereiteten Funktion als vertreten, jedes Argument der Reihe nach für eine durch die vorherige Beschwörung zurückgegebene Funktion des einzelnen Arguments anwendend. Bemerken Sie, dass nach dem Benennen wir mit einer Funktion verlassen werden, die ein einzelnes Argument nimmt und eine andere Funktion, nicht eine Funktion zurückgibt, die zwei Argumente nimmt.

Im Gegensatz bezieht sich teilweise Funktionsanwendung auf den Prozess, mehrere Argumente für eine Funktion zu befestigen, eine andere Funktion von kleinerem arity erzeugend. In Anbetracht der Definition von obengenannten könnten wir befestigen (oder 'binden') das erste Argument, eine Funktion des Typs erzeugend. Die Einschätzung dieser Funktion könnte als vertreten werden. Bemerken Sie, dass das Ergebnis der teilweisen Funktionsanwendung in diesem Fall eine Funktion ist, die zwei Argumente nimmt.

Intuitiv sagt teilweise Funktionsanwendung, "wenn Sie die ersten Argumente der Funktion befestigen, bekommen Sie eine Funktion der restlichen Argumente". Zum Beispiel, wenn Funktion div für die Abteilungsoperation x/y eintritt, dann ist div mit dem Parameter x befestigt an 1 (d. h., div 1) eine andere Funktion: Dasselbe als die Funktion inv, der das multiplicative Gegenteil seines Arguments zurückgibt, das durch inv (y) = 1/y definiert ist.

Die praktische Motivation für die teilweise Anwendung ist, dass sehr häufig die erhaltenen Funktionen durch die Versorgung von einigen, aber nicht allen Argumenten für eine Funktion nützlich sind; zum Beispiel haben viele Sprachen eine Funktion oder Maschinenbediener, der dem ähnlich ist. Teilweise Anwendung macht es leicht, diese Funktionen, zum Beispiel durch das Schaffen einer Funktion zu definieren, die den Hinzufügungsmaschinenbediener mit 1 gebundenem als sein erstes Argument vertritt.

Siehe auch

Zeichen

Außenverbindungen


Chaldea / Cyrus
Impressum & Datenschutz