I think (I'm not sure) I was thinking about similar things while planning
the graph package (well, it's not done yet, due to lack of time...)
I wanted to keep as much useful information as possible, ie. when a
single thing of the graph is changed, not everything has to be recomputed
and the like. The difficulty I encountered was where to store this
information:
eg (simple) : given an edge and a vertex set, the adjacency matrix is
computed.
Now, we could throw away the original information -- ie edge and vertex
set -- or we could keep it. But if we want to keep it, where?
I postponed the question by having all functions return two values: all
the information of the graph and the wanted specific property.
If my approach is stupid (it possibly is), please tell me so (and say why)
Martin