From: Oren Ben-K. <or...@ri...> - 2002-05-17 14:57:49
|
Andrew Kurn wrote: > On the topic of 'identity' of YAML nodes: > > As so often before, much of what you say > sounds a little weird to me . . . :-) > Oren: > > The question is, what is YAML's position on this. Are YAML nodes > > identity-based (read: require aliases structure to be preserved), > > value > > based (read: allow aliases structure to change), or what? > > It seems obvious to me that it's not up to YAML. If identity > is allowed at all, it must be possible to make anything identical. > It's the user's discretion. Identity isn't something to "allow". It just "is" in the sense that native data structures behave in certain ways. I think we agree it isn't up to YAML... we agreed that it is up to the native model to do whatever it needs/pleases, and hence that YAML models (graph/tree/syntax) must always preserve alias structure (otherwise they would be robbing the native model from its ability to do whatever it needs/pleases). In practical terms this means that the choice of whether alias==sharing is left to the specific dumper/loader implementation for the specific type family. This implementation may do anything it needs/pleases, and YAML guarantees that whatever was dumped, the same thing would be loaded. I think that answers your question: > I think you have to let the user decide how to treat > pointers. It's true that you might offer him some > policies that you think are likely to be useful most > of the time, but you must allow him to choose anything > at all in some cases. Quite. The dumper can choose to use aliases, explicit pointers, whatever it wants. I'm not worried about "automatic dumper/loader". To dump/load a native structure, you need to "know" it. Have fun, Oren Ben-Kiki |