5 Stimmen

Verwendung von Monaden zur Durchführung von fakultativen Transformationen in Massen?

Ich fange gerade an, Monaden zu verstehen. Ich denke in Clojure, so Reinheit ist nicht furchtbar wichtig für mich.

Ich habe eine Reihe von Geschäftsvorgängen (zusammensetzbare Transformationen), die fehlschlagen können. Dies kann mit error-monad gut abstrahiert werden.

Einige der Geschäftsvorgänge umfassen Datenbank-IO, und ich muss die Vorgänge aus Geschwindigkeitsgründen als Massenoperationen ausführen. Jede Massenoperation wirkt auf eine Gruppe unabhängiger Elemente, so dass ein Fehler nicht die gesamte Gruppe zum Scheitern bringen darf.

Sollte ich nur denken, meine Bulk-Transformationen als eine Reihe von Funktionen auf ein Objekt (Karte) innerhalb so etwas wie Fehler monad aber handeln auf unabhängige Elemente in einem seq? hilft seq-monad mir hier? wie sollte ich über diese denken?

Ich sehe keinen besonderen Vorteil in der Kombination mit IO-Monad für meine Datenbank-Seiteneffekte in Clojure, Gedanken zu diesem?

1voto

Alex Baranosky Punkte 46516

Es ist schwer zu sagen, was Sie genau brauchen, weil Ihr Geschäftsfall scheint ein wenig verwickelt, aber ich denke, Sie können einige Meilen von der Verwendung der clojure.algo.monads Bibliothek erhalten.

Sie können Ihre eigene Variante einer Error-Monade oder Maybe-Monade erstellen, die intern mit Chargen arbeitet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X