
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/Insidene... 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