OK, I am rephrasing it a bit then :)
On 28 sep 2010, at 17:33, Ozgur Akgun wrote:This is really tricky. For example, consider storing a large tree in the database:
> How do you define relationships between data types?
>
> Well, why is it any different from other fields? From one of your examples [1], I'd expect you to have a list of questions in the Quiz data type, and if necessary, a quiz field in the Question data type. This might be a bit tricky but certainly achievable [2].
> data Tree = Node Int Tree Tree | Leaf Int
This means you need to read the entire tree from the database. Or consider cyclic datastructures (such as the example you gave). How do you store this? The only way to inspect this is using a library like data-reify [1].
I think the problem might be a bit harder than you suspect.
Another way to solve it is using Sebastiaan Visser's framework, described in his paper [2], but that's also rather complicated.
-chris
[1]: http://hackage.haskell.org/package/data-reify
[2]: http://github.com/downloads/sebastiaanvisser/msc-thesis/wgp10-genstorage.pdf