Rohrleitungen, Zusammensetzung und Currying
Scheint es mir, dass all diese miteinander verwandt sind. Was ist der Unterschied?
- Hast du irgendein Beispiel, das zu finden, braucht eine angemessene Vorgehensweise? Ihre Frage ist sehr breit.
- Diese passen mehr zu den "Programmierer", SO Ort.
- Ich Stimme mit Pad--dies ist eine ziemlich offene Frage (Tomas' und Daniel ' s Antworten nicht standhalten).
- ich änderte das format der Frage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verrohrung wird verwendet, um eine Sequenz von Operationen auf einen Wert (ebenso wie Rohrleitungen in Unix). Die Eingabe für jede Funktion die Ausgabe der vorherigen Funktion. Offensichtlich verlangt dies jede Funktion einen einzelnen arg.
Zusammensetzung (
<<
/>>
) ist ähnlich, es ruft zwei Funktionen in der Reihenfolge (D. H., der Ausgang des ersten zum Eingang des zweiten), aber es gibt eine Funktion, anstatt sofort aufrufen der Sequenz.Currying erstellt eine neue Funktion, die durch anwenden von 1 bis N-1 Argumente an eine Funktion N args
So, Komposition und currying werden verwendet, um Funktionen in der Erwägung, dass Rohrleitungen verwendet wird, für den Aufruf. Zusammensetzung und currying unterscheiden sich in der Art, wie Sie neue Funktionen (durch Anwendung args vs chaining).
Zusätzlich zu dem, was Daniel schrieb, gibt es eine sehr enge Korrespondenz zwischen Rohrleitungen (die
|>
und<|
Betreiber) und in Funktion der Zusammensetzung (die>>
und<<
Betreiber).Wenn Sie Rohrleitungen, um einige Daten, um eine seqence von Funktionen:
... dann ist das äquivalent der übergabe der Eingabe einer Funktion, die mit Funktion Zusammensetzung:
In der Praxis bedeutet dies oft, dass Sie können ersetzen-Funktion Erklärung, die verwendet Rohrleitungen, die auf die Auseinandersetzung mit einer Komposition von Funktionen (und die Tatsache, dass die Funktionen verwendet werden können, als Werte). Hier ist ein Beispiel: