[Haskell-cafe] Make a DSL serializable

Alberto G. Corona agocorona at gmail.com
Mon Mar 25 02:06:10 CET 2013


the package Workflow  serialize also the state of a computation, so it can
be re-started and continued. It uses also the above mentioned event trick
to serialize the state.

By the way you can use the workflow monad transformer to recover the state
of the game. You don´t need to serialize anything explicitly, the
transformer will do it, but your step results must be serializable.

 If you have this code:

  loop= do
       eventhandlercode <- receive
       handler <- compile eventhandlercode
       execute handler
       loop

then the lifted process in the workflow monad would be:

  loop=do
       eventhandlercode <- step receive
       handler <- liftIO $ compile eventhandlercode
       liftIO $ execute handler
       loop

step will store the result and will recover the execution state.
Only the step result should be serializable.


2013/3/24 Corentin Dupont <corentin.dupont at gmail.com>

> I also came across Scala's Swarm, making use serializable delimited
> continuations. Looks good!
> http://www.scala-lang.org/node/3485
>
>
> On Sun, Mar 24, 2013 at 11:13 PM, Michael Better <mbetter at gmail.com>wrote:
>
>> Isn't this similar to the problem Cloud Haskell had to solve to send code
>> to another process to run?
>>
>> Mike
>> On Mar 24, 2013 5:06 PM, "Brandon Allbery" <allbery.b at gmail.com> wrote:
>>
>>> On Sun, Mar 24, 2013 at 5:44 PM, Corentin Dupont <
>>> corentin.dupont at gmail.com> wrote:
>>>
>>>> But I always bothered me that this state is not serializable...
>>>
>>>
>>> I am not quite sure how to respond to that. You seem to be asking for
>>> magic.
>>>
>>> That kind of state has never been sanely serializeable. Not in Haskell,
>>> not anywhere else. The usual hack is to dump an entire memory image to
>>> disk, either as an executable (see "gcore" and "undump"; also see how the
>>> GNU emacs build dumps a "preloaded" emacs executable) or by dumping the
>>> data segment as raw bytes and reloading it as such (which doesn't work so
>>> well in modern demand paged executables; it can work better with a virtual
>>> machine environment, and various Lisp and Smalltalk implementations dump
>>> and reload their raw VM images this way).
>>>
>>> I would not be surprised if what you seem to be asking for turns out to
>>> be yet another guise of the halting problem.
>>>
>>> --
>>> brandon s allbery kf8nh                               sine nomine
>>> associates
>>> allbery.b at gmail.com
>>> ballbery at sinenomine.net
>>> unix, openafs, kerberos, infrastructure, xmonad
>>> http://sinenomine.net
>>>
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>
>>>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>


-- 
Alberto.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130325/3fd0891f/attachment.htm>


More information about the Haskell-Cafe mailing list