distributed-closure alternatives and similar packages
Based on the "distributed" category.
Alternatively, view distributed-closure alternatives based on common mentions on social networks and blogs.
-
distributed-fork
A distributed data processing framework in Haskell. -
distributed-process-platform
DEPRECATED (Cloud Haskell Platform) in favor of distributed-process-extras, distributed-process-async, distributed-process-client-server, distributed-process-registry, distributed-process-supervisor, distributed-process-task and distributed-process-execution -
distributed-process-async
Cloud Haskell - Asynchronous Execution -
distributed-process-client-server
Cloud Haskell - gen_server implementation -
distributed-process-simplelocalnet
Simple cloud haskell backend for local networks -
distributed-process-extras
Core utilities for distributed-process-platform -
distributed-process-supervisor
Cloud Haskell Supervision Trees -
distributed-process-monad-control
distributed-process-monad-control -
distributed-process-registry
Extended Process Registry -
distributed-process-execution
Cloud Haskell Process Execution Framework -
distributed-process-fsm
Cloud Haskell implementation of Erlang's gen_statem (ish) -
distributed-process-azure
Microsoft Azure backend for Cloud Haskell -
distributed-fork-aws-lambda
AWS Lambda backend for distributed-fork.
Access the most powerful time series database as a service
Do you think we are missing an alternative of distributed-closure or a related project?
README
distributed-closure
Leverage the -XStaticPointers
extension
from GHC 7.10 onwards for distributed programming using lightweight
serializable closures. This package implements a serializable
closure abstraction on top of static pointers. Serializable closures
can be shipped around a computer cluster. This is useful for
implementing intuitive and modular distributed applications. See
this blog post for a hands on introduction
and this paper for the original motivation.
Example
In GHC 8 and above, remoting a computation on another node using this library goes along the lines of
data NodeId
-- Assume we're given a spaw primitive.
spawn :: NodeId -> Closure (IO ()) -> IO ()
-- A computation to remote on another node.
hello :: String -> IO ()
hello name = putStrLn ("Hello, " ++ name)
main = do
name <- getLine
spawn "someAddress" (static hello `cap` name)
An example of sending static pointers and closures through a communication channel is provided under [examples/ClientServer.hs](examples/ClientServer.hs) in the source repository.
distributed-closure
does not implement sending/receiving/spawning
closures - that's left for higher-level frameworks. Only closure
creation, composition and (de)serialization.