Kapitel 8. Currying und partielle Anwendung

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Currying und partielle Anwendung sind zwei weitere funktionale Konzepte, die direkt aus alten Mathearbeiten stammen. Ersteres hat absolut nichts mit indischem Essen zu tun, so lecker es auch ist;1 Tatsächlich ist es nach dem herausragenden amerikanischen Mathematiker Haskell Brooks Curry benannt, nach dem nicht weniger als drei Programmiersprachen benannt sind.2

Wie in Kapitel 1 erwähnt, stammt das Currying aus Currys Arbeit über kombinatorische Logik, die als Grundlage für die moderne FP diente. Anstatt eine trockene, formale Definition zu geben, werde ich es anhand eines Beispiels erklären. Dies ist ein wenig C#-ähnlicher Pseudocode für eine Add() Funktion:

public interface ICurriedFunctions
{
    decimal Add(decimal a, decimal b);
}

var curry = // some logic for obtaining an implementation of the interface

var answer = curry.Add(100, 200);

In diesem Beispiel würden wir erwarten, dass die Antwort einfach 300 (also 100 + 200) lautet, und das ist sie auch.

Was wäre aber, wenn wir nur einen einzigen Parameter angeben würden? Etwa so:

public interface ICurriedFunctions
{
    decimal Add(decimal a, decimal b);
}

var curry = // some logic for obtaining an implementation of the interface

var answer = curry.Add(100); // What could it be?

Wenn es sich in diesem Szenario um eine hypothetische Curried-Funktion handeln ...

Get Funktionale Programmierung mit C# now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.