2012-03-31 13 views
5

Empezando a grok mónadas. Creo que en Clojure, la pureza no es tan importante para mí.usando mónadas para hacer transformaciones no disponibles a granel?

Tengo una serie de operaciones comerciales (transformaciones compostables) que pueden fallar. Esto se puede abstraer muy bien con la mónada de error.

Algunas de las operaciones comerciales implican bases de datos IO, y debo realizar las operaciones a granel para obtener mayor velocidad. cada operación masiva actúa sobre un conjunto de elementos independientes, por lo que una falla no debe fallar en todo el conjunto.

¿Debería pensar en mis transformaciones masivas como una serie de funciones en un objeto (mapa) hecho dentro de algo así como error mónada pero actuando sobre elementos independientes en un seq? ¿me ayuda la seq-mónad aquí? ¿cómo debería estar pensando en esto? cualquier otra idea?

No veo ningún beneficio particular al combinar esto con IO-mónada para los efectos secundarios de mi base de datos en Clojure, ¿piensa en esto?

+1

¿Puedes poner un código de muestra que permita a las personas "ver más" en el problema que estás preguntando? – Ankur

Respuesta

1

Es difícil decir exactamente lo que necesita, porque su caso de negocio parece un poco complicado, pero creo que puede obtener un poco de rendimiento al usar la biblioteca clojure.algo.monads.

Puede crear su propia variación en una mónada de error o tal vez una mónada que se ocupe internamente de lotes.

Cuestiones relacionadas