Wie verbinden sich anwendungsbezogene Funktoren mit Parallelisierungsalgorithmen? (Scala und Scalaz)

8

Aus Josh Suereths "Scala in Depth":

"Applikative Funktoren bieten eine Möglichkeit, zwei Berechnungen durchzuführen und sie mithilfe einer Funktion zusammenzufügen. Das Beispiel" Traversable "zeigt, wie zwei Sammlungen zu Paaren parallelisiert werden können. Die anwendungsspezifischen Funktoren und die parallele Verarbeitung sind wie Brot und Butter."

Ich habe eine vage Vorstellung von den ganzen Funktoren / Monaden / Anwendungsbeispielen, aber nicht gerade ein starkes Verständnis davon (neu für die ganze Monade, Funktor Zeug). Ich verstehe ein bisschen das Konzept von Monaden (flatten, flatMap) und monadischen Workflow und Funktoren (Karten).

Kann jemand bitte für mich in Bezug darauf, wie es gemacht wird, Beispiele und / oder Vorteile davon im Vergleich zur "traditionellen" Parallelisierung ausarbeiten?

    
adelbertc 29.08.2012, 18:35
quelle

1 Antwort

12

Ich habe die Frage an Josh Suereth weitergeleitet. Dies ist seine Antwort:

Mike -

  

Ich habe nicht viel Zeit zu antworten, aber ich werde Beispiele anbieten   was ich meine:

     

Beispiel # 1 - Formularvalidierung.

     

Ich möchte eine Validierung für die Eingabe ausführen und all aggregieren   Fehler, d. h. sie in parallel erkennen. Mit Anwendungsfunktionen I   kann es tun.

     

Also, mit einer Reihe von "Verarbeitungs" -Funktionen, wie folgt:

%Vor%      

Jetzt handle Formular wird Fehler mit Kreditkarte / Benutzername + ausdrucken   adressieren Sie alle zur gleichen Zeit, da Sie sie mit einem kombiniert haben   Anwendungsfunktor. Das ist parallele Fehlermeldung (obwohl   Tests werden nicht parallel durchgeführt.)

     

(2) Futures

     

Ich möchte ein paar Dinge parallel machen und Ergebnisse kombinieren. Zukunft ist   Die "Zip" -Methode ist eigentlich ein applizierender Funktor in Verkleidung. ich kann   das:

%Vor%      

Ich habe gerade Applicative Functors verwendet, um parallele Berechnungen zu "verbinden".
  Es entspricht genau dem Formularüberprüfungsbeispiel.

     

Hoffe das hilft!   - Josh

(Beachten Sie, dass diese Code-Snippets nicht kompilierbare Beispiele sind; ich habe die anwendungsspezifische Syntax von SBT mit den Konzepten in Scalaz verwendet, also müssen Sie eine Bibliothek auswählen, um die Anwendung anzuwenden und was sie anwenden)

    
Mike Slinn 29.08.2012, 18:47
quelle