In der Präsentation von Strange Loop auf Transducers erwähnt Rich Hickey ein Konzept in einer Tabelle namens 'parallel'.
Sie können einfach Beispiele für seqs und in und Kanäle verwenden Wandler .
Jetzt können Sie herausfinden, dass Observables über RxJava sprechen .
Meine Frage ist Was ist das "parallele" Konzept in Rich Hickey's Transducer Strange Loop-Talk? Ist dies eine Liste von futures oder pmap oder etwas anderes?
Es gab einige Gedanken über die Schaffung paralleler übertragbarer Prozesse. Dies wird als CLJ-1553 verfolgt. Momentan planen wir nicht, dies in Clojure 1.7 zu behandeln, möchten aber etwas in Clojure 1.8 machen.
Es ist nun möglich, einen Reducer einzurichten, der einen Transducer als untere Reduzierphase verwendet (zusammen mit traditionelleren Kombinierer fns), aber im Idealfall könnten wir das "selbstreduzierbare" Konzept der persistenten Vektoren und Karten nutzen parallel auf eine natürlichere Weise zu transduzieren.
Es ist höchstwahrscheinlich gerade jetzt, dass dies als eine Art Vorbereitungsfunktion erscheinen würde, aber immer noch viel zu entscheiden.Ein problematischer Bereich ist der Umgang mit KV-Formen - Minderer haben dort einige Entscheidungen getroffen, die mit Wandlern schwierig oder unpraktisch sind, so dass man sie durcharbeiten muss.
Das Konzept besteht einfach darin, die Berechnung parallel durchzuführen. Es gibt mehrere mögliche Implementierungen:
clojure.core.reducers/fold
, was ähnlich wie reduce
ist, außer dass es nur mit assoziativen Reduktionsfunktionen verwendet werden sollte. Es wird von einem Protokoll unterstützt, das die Baumstruktur verschiedener Clojure-Datenstrukturen nutzt, um den Rechenaufwand zu parallelisieren. Es ist noch nicht wirklich wandlerfreundlich, aber es ist reduziererfreundlich und es scheint, dass eine Wandler-fähige Version irgendwann ankommen wird.
Kürzliche Versionen von core.async
mit Transducer-Unterstützung exportieren eine Funktion namens pipeline
, die Kanal-Transducer-basierte Transformationen parallelisiert.
Tags und Links clojure transducer