[Haskell-cafe] handling multiple versions of a data structure

Erik Hesselink hesselink at gmail.com
Fri Dec 17 10:57:02 CET 2010


I've recently been playing with code for versioning data types. It's
based on happstacks implementation, but uses type families to make it
more modular. I've got some proof of concept code on github [1]. We're
also writing a small library based on this at typLAB, which we'll
probably release as well.

Erik

[1] https://gist.github.com/704109

On Thu, Dec 16, 2010 at 19:26, Dmitry V'yal <akamaus at gmail.com> wrote:
> Greetings,
>
> while developing my neural net simulator I stumbled upon a problem.
>
> I have a data type NeuralNet and use Show and Read instances for saving and
> loading configurations. As time passed, I changed the data type, so the
> program can no longer load files saved in previous versions.
>
> I want fix it. My current idea looks as follows. I'm going to create a bunch
> of types NN1, NN2, NN3..NNn for different versions and write converters c12
> :: N1 -> N2, c23 :: N2 -> N3 and so on.
>
> But how to organize the whole process of parsing String into NNn so it's
> easy to change formats?
> Something based on using a list of parsers
> [read, c43 . read, c43 . c23 . read, c43, c23 . c12 . read, c43 . c32 . c21
> . read]
>
> looks rather verbose and grows quadratically with N.
>
> I'm sure there must be a more elegant way. Any ideas?
>
> Dmitry
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



More information about the Haskell-Cafe mailing list