Ich habe nach einem Datentyp für asynchrone Operationen gesucht.
Ich habe festgestellt, dass scalaz.ContT[Trampoline, Unit, ?]
alle Features in scalaz.concurrent.Future
zusätzlich zu BindRec
unterstützt.
Es gibt jedoch mehr Dienstprogramme für scalaz.concurrent.Future
als scalaz.ContT[Trampoline, Unit, ?]
, z. Eine Applicative-Instanz führt Futures parallel aus.
Ich dachte, diese Dienstprogramme könnten auch für ContT[Trampoline, Unit, ?]
implementiert werden.
Warum hat der Autor eine neue Future
-basierte scalaz-concurrent
-Bibliothek erstellt, anstatt ContT
? wiederzuverwenden?
Auf der Gefahr des Seins facetious, ein wichtiger Vorteil ist, dass Future
ist ein benanntes Konzept, das viele Menschen erkennen und verstehen, zum Beispiel es hat eine eigene Wikipedia-Seite .
Ich erkenne den ContT
-Typ nicht, von dem Sie sagen, dass er gleichwertig ist. Ich versuchte, es in dem scalaz docs zu finden, aber es ist dort ohne Erklärung aufgeführt . Wo kann ich mehr darüber lesen und woher wissen Sie, dass es einer Zukunft entspricht?
Sie sagen, dass "eine Applicative-Instanz Futures parallel ausführt"; Würden mehrere Operationen ContT
nicht parallel ausgeführt werden? Das ist ein Schlüsselmerkmal von Futures
und könnte eine Antwort auf Ihre Frage sein.
Ich sehe jetzt, dass ContT
ist eine Implementierung des Fortsetzungsübertragungsstil, und das scalaz.ContT[Trampoline, Unit, ?]
ist ein Spezialfall einer Fortsetzung vorbei Funktion, die isomorph sein kann Future
, wenn bestimmte externe Annahmen halten.
Ich denke, dass die Antwort auf Ihre Frage ist aus den gleichen Gründen, dass viele andere Sonderfälle Bedeutung gegeben werden, wenn sie vielleicht als ein Fall einer allgemeineren Struktur gedacht werden:
Future
s parallel ausgeführt werden, während wir wissen nicht, dass über Fortsetzung Funktionen im Allgemeinen übergeben. (Natürlich ist es möglich, Futures in Folge auszuführen, wie es in einigen Test-Frameworks der Fall ist, aber das wäre keine herkömmliche Implementierung von Future) Tags und Links scala concurrency continuations scalaz future