Schönfinkeln

Schönfinkeln

Currying (selten auch: Schönfinkeln) ist die Umwandlung einer Funktion mit mehreren Argumenten in mehrere Funktionen mit je einem Argument. Obwohl das Verfahren von Moses Schönfinkel und Gottlob Frege erfunden wurde, ist es ist nach Haskell Brooks Curry benannt. Nach ihm ist auch die funktionale Programmiersprache Haskell benannt.

Inhaltsverzeichnis

Verfahren

Es sei eine Funktion gegeben, die n Argumente erfordert. Wird diese auf n Argumente angewendet, so konsumiert sie nur ein einziges dieser und liefert als Funktionswert eine weitere Funktion, die noch n-1 Argumente verlangt. Die zurückgegebene Funktion wird anschließend auf alle weiteren Argumente angewendet.

Beispiel

Ein Beispiel in Lambda-Notation soll das Verfahren verdeutlichen, wobei die Funktion konkret folgendermaßen definiert sei:


\lambda_{x,y,z} \left(x\ y\ z\right)

Die Funktion verlangt also 3 Argumente und gibt diese zurück. Die Definition ist äquivalent zu:


\lambda_x \lambda_y \lambda_z \left(x\ y\ z\right)

Bei der Anwendung der Funktion auf die Argumente a, b und c geschieht Folgendes:

\left(\lambda_x \lambda_y \lambda_z \left(x\ y\ z\right)\right)\ a\ b\ c\ \mathsf{-\ Die\ Anwendung}

\left(\lambda_y \lambda_z \left(a\ y\ z\right)\right)\ b\ c

\left(\lambda_z \left(a\ b\ z\right)\right)\ c

a\ b\ c\ \mathsf{-\ Resultat}

Nach erstmaliger Anwendung der Funktion auf a, b und c wird x im Funktionskörper durch das erste Argument a ersetzt. Das Resultat ist eine Funktion, die noch die Argumente y und z verlangt. Diese wird sofort auf b und c angewendet.

Besonderheiten

Wendet man eine Funktion auf eine geringere Anzahl von Argumenten als verlangt an, so erhält man eine reduzierte Funktion, die ebenfalls wiederverwendbar ist. Hätte man eine currying-fähige Additionsfunktion addiere, könnte man sie mit addiere 3 aufrufen und bekäme eine Funktion, die zu jedem ihrer Argumente 3 addiert.

Anwendung

Currying wird überwiegend in Sprachen verwendet, in denen Funktionen nur ein einzelnes Argument erhalten dürfen. Dazu gehören beispielsweise ML, Unlambda und der Lambda-Kalkül. Viele dieser Sprachen bieten dem Programmierer allerdings syntaktische Möglichkeiten, dies zu verschleiern. Ein Beispiel hierfür ist die Äquivalenz der Funktionsdefinition im oben gezeigten Beispiel.


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Alpha-Konversion — Der Lambda Kalkül ist eine formale Sprache zur Untersuchung von Funktionen, die Funktionsdefinitionen, das Definieren formaler, sowie das Auswerten und Einsetzen aktueller Parameter regelt. Inhaltsverzeichnis 1 Geschichte 2 Der untypisierte… …   Deutsch Wikipedia

  • Epotoponym — Ein Eponym ist ein Begriff, der eine Sache mit einer namengebenden realen oder fiktiven Person (Namensgeber) oder einem Ort verbindet. Dem entspricht das Epotoponym, bei dem der Namensgeber ein geografisches Toponym ist (z. B. Champagne zu… …   Deutsch Wikipedia

  • Generischer Begriff — Ein Eponym ist ein Begriff, der eine Sache mit einer namengebenden realen oder fiktiven Person (Namensgeber) oder einem Ort verbindet. Dem entspricht das Epotoponym, bei dem der Namensgeber ein geografisches Toponym ist (z. B. Champagne zu… …   Deutsch Wikipedia

  • Lambda-Ausdruck — Der Lambda Kalkül ist eine formale Sprache zur Untersuchung von Funktionen, die Funktionsdefinitionen, das Definieren formaler, sowie das Auswerten und Einsetzen aktueller Parameter regelt. Inhaltsverzeichnis 1 Geschichte 2 Der untypisierte… …   Deutsch Wikipedia

  • Lambda-Notation — Der Lambda Kalkül ist eine formale Sprache zur Untersuchung von Funktionen, die Funktionsdefinitionen, das Definieren formaler, sowie das Auswerten und Einsetzen aktueller Parameter regelt. Inhaltsverzeichnis 1 Geschichte 2 Der untypisierte… …   Deutsch Wikipedia

  • Lambdakalkül — Der Lambda Kalkül ist eine formale Sprache zur Untersuchung von Funktionen, die Funktionsdefinitionen, das Definieren formaler, sowie das Auswerten und Einsetzen aktueller Parameter regelt. Inhaltsverzeichnis 1 Geschichte 2 Der untypisierte… …   Deutsch Wikipedia

  • Namensgeber — Ein Eponym ist ein Begriff, der eine Sache mit einer namengebenden realen oder fiktiven Person (Namensgeber) oder einem Ort verbindet. Dem entspricht das Epotoponym, bei dem der Namensgeber ein geografisches Toponym ist (z. B. Champagne zu… …   Deutsch Wikipedia

  • Strikte Auswertung — Auswertung (engl. evaluation als Beschreibung, Analyse und Bewertung) bezeichnet in der Informatik den Vorgang, der einem Ausdruck (eventuell in einem gegebenen Kontext von Variablenbindungen) einen Wert zuordnet. Programmiersprachen sind nach… …   Deutsch Wikipedia

  • Auswertung (Informatik) — Auswertung (engl. evaluation als Beschreibung, Analyse und Bewertung) bezeichnet in der Informatik den Vorgang, der einem Ausdruck (eventuell in einem gegebenen Kontext von Variablenbindungen) einen Wert zuordnet. Programmiersprachen sind nach… …   Deutsch Wikipedia

  • Currying — (selten auch: Schönfinkeln) ist die Umwandlung einer Funktion mit mehreren Argumenten in eine Funktion mit einem Argument. Obwohl das Verfahren von Moses Schönfinkel und Gottlob Frege erfunden wurde, ist es nach Haskell Brooks Curry benannt.… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”