[Haskell-cafe] Make a DSL serializable

Corentin Dupont corentin.dupont at gmail.com
Mon Mar 25 13:53:52 CET 2013


Workflow is impressive! I didn't know you could serialize IO
states/computations.

On Mon, Mar 25, 2013 at 2:06 AM, Alberto G. Corona <agocorona at gmail.com>wrote:

> 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/65a4c103/attachment.htm>


More information about the Haskell-Cafe mailing list