[Haskell-cafe] Serialize to Haskell

Corentin Dupont corentin.dupont at gmail.com
Fri Aug 7 23:41:05 UTC 2015

it's for the Nomyx game (www.nomyx.net). In this game the players submit
pieces of code ("rules") that are written in Haskell.
I would like to serialize the rules submitted to a Haskell format, to give
the possibility to the players
to work on their rules offline, to check them with a compiler and store
them on Github.
I would look like:

module MyRules where

  myRule1 :: Rule
  myRule1 = Rule {name = "my rule 1",
                  descr = "this is my rule"
                  code = [c|putStrLn "test"|]

Currently the player is able to submit this module file to Nomyx. Nomyx
loads the file through a Haskell interpreter.
Once it's done, the player is able to propose "myRule1" in the game.
But what if the player wants to modify the rule in Nomyx? Then I would like
to modify the original file to reflect the changes.

In the example, the field "code" contains the actual code of the rule in
Haskell. I use a quasi-quotation because I parse it with an interpreter to
validate it.
But otherwise it is is considered as a simple string.
This is why a format in Haskell would suit me (instead of XML or JSON):
some of the data I need to serialize is indeed Haskell code.

Hope I was not too obscure :)


On Sat, Aug 8, 2015 at 1:15 AM, Donn Cave <donn at avvanta.com> wrote:

> quoth Corentin Dupont <corentin.dupont at gmail.com>
> > I want to do exactly what you would do with a JSON file (read, write),
> but
> > with a data format that would be valid Haskell (instead of valid
> > javascript).
> OK, but I think this doesn't do much to clear up the mystery.
> Why valid Haskell?
> That will shed a lot of light on what you really want.  You know
> you can write and read any value that supports Read and Show classes,
> but there's more valid Haskell that isn't values at all, like the
> type declarations in your example.  And the module declaration,
> not sure whether that's in any sense a value but I don't think
> it's going to support Read or Show.
> The applications I can think of don't need type declarations, and
> the module would complicate things at best.
>         Donn
> PS  - if you're happy to simply read and write values, next I think
> it would probably be prudent to verify that this scales to whatever
> you have in mind, I mean very large values might be more efficiently
> processed in some other way.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150808/da31a2a4/attachment.html>

More information about the Haskell-Cafe mailing list