
Hi Felipe:
plainly speaking, it stores and send a pointer, it is not necessary to
serialize the code. It just send the pointer, since all the copies of the
program are the same in all the nodes. The code to be called is at the
same address in the other node. That is the reason why the closures must be
in a static address.
2014-09-11 5:50 GMT+02:00 felipe zapata
Dear Cafe, I'm trying to understand the implementation of Cloud Haskell, specially the closures. According to the documentation, the serialization of a function uses a map from Label to values (RemoteTable), where Remotable is implemented as:
newtype RemoteTable = RemoteTable (Map String Dynamic)
Where Dynamic is given by,
data Dynamic = Dynamic TypeRep GHC.Any
The question is then, How does this Dynamic data type encodes functions? And how is related this Dynamic type to the decoder function?
closure :: Static (ByteString -> a) -- Decoder -> ByteString -- Encoded closure environment -> Closure a
Static provides two function, one function related to the label to lookup at the RemoteTable and one used for composition. But how is this related to Dynamic?
Any guide will be appreciated.
Felipe Z.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Alberto.