Si desea obtener más información sobre el paquete remote
, a.k. un CloudHaskell, consulte the paper, así como thesis de Jeff Epstein. Su objetivo es proporcionar precisamente la abstracción del actor que desea, pero como usted dice, está en las primeras etapas. Existe una discusión activa con respecto a las mejoras en el parallel-haskell mailing list, por lo que si tiene necesidades específicas que remote
no proporciona, estaremos encantados de que intervenga y nos ayude a decidir sus direcciones futuras.
Más maduro pero de menor nivel que remote
es el paquete haskell-mpi
. Si se atiene a la interfaz Simple
, se pueden enviar mensajes que contengan instancias arbitrarias Serialize
, pero la abstracción es aún mucho menor que remote
.
Existen algunos sistemas experimentales, como los descritos en Implementación de un Haskell paralela de memoria distribuida de alto nivel en Haskell (Patrick Maier y Phil Trinder, IFL 2011, no se puede encontrar un pdf en línea). Combina un enfoque monad-par
del paralelismo de flujo de datos determinístico con una capacidad limitada para hacer que las estructuras I puedan serializarse a través de la red. Este tipo de abstracción es prometedor para hacer cálculos distribuidos, pero dado que la atención se centra en el cálculo de valores puramente funcionales en lugar de proporcionar procesos al estilo de Erlang, probablemente no sean adecuados para su aplicación.
Además, para ser completo, debo señalar la página wiki de Haskell en cloud and HPC Haskell, que cubre lo que describo aquí, así como la subsección en distributed Haskell, que parece necesitar una actualización.
Como usted dice, parece ser un ajuste natural para Erlang - ¿no es ese el tipo de problema Erlang fue * diseñado * para? Me gusta mucho Haskell, pero esto suena como una muy clara "herramienta adecuada para el trabajo". ¿Por qué no usar Erlang? –
Porque hay otras consideraciones además de la concurrencia, y creo que Haskell proporciona mejores beneficios en estas áreas. Lo que estoy buscando es una recomendación sobre cómo hacer mejor la concurrencia orientada a procesos en Haskell. – Ana