Hi,
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 :)

Best,
C


On Sat, Aug 8, 2015 at 1:15 AM, Donn Cave <donn@avvanta.com> wrote:
quoth Corentin Dupont <corentin.dupont@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@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe