[Haskell-cafe] Re: I just don't get it (data structures and OO)
Christopher Lane Hinson
lane at downstairspeople.org
Sun Jun 3 10:01:34 EDT 2007
> Let's say i have a deep nested data structure.
> Universe containing galaxies, containing solar systems, containing
> planets, containing countries, containing inhabitants, containing
> ...whatever.
Oh. I had /exactly/ this problem. If you use separate types (i.e. a
newtyped integer, acting kindof like a pointer) to represent (1) the
identity and (2) the state of the object, you can use a separate data
structure that remembers which object is inside which other object.
http://www.downstairspeople.org/darcs/unstable/roguestar-engine/src/InsidenessMap.hs
Where "InsidenessMap a b c" represents a relationship where b's are inside
a's, and b's have a state of c. Then, you need to declare a separate
InsidenessMap for each possible relationship, but this ensures that you'll
never put a galaxy inside a solar system. Or you can make 'a' be a
reference to any type of object; there are options.
But, you just update this structure once, with no thought of recursively
updating a heterogenous tree of data.
It may not be the best solution, but if I knew of something better I
would be using the better thing instead.
--Lane
More information about the Haskell-Cafe
mailing list