From: Clark C. E. <cc...@cl...> - 2002-09-09 12:50:55
|
On Mon, Sep 09, 2002 at 02:36:04PM +0300, Oren Ben-Kiki wrote: | The latter is only possible if one is semantics-aware (obviously). For | example, reading "!int 10" and emitting "!int 012" is _not_ the same under | the graph model (nor was it "the same" under the current draft's "generic | model") but it is the same as far as the application is concerned (what we | used to call "the native model"). Note that this has nothing to do with | explicit vs. implicit typing (it is the same if the application reads "10" | and writes "012"). We solved this (and I'd like to keep the solution) by using the distinction between the type family and the format in the transfer method. You are using two formats... in our older model it required that only the canonical format be used (eliminating the ambiguity) in the graph model. I'd like to keep it that way. Note that this doesn't say that it has to be stored that way; but that the equality comparison is done in this way. There are two implications: a) To construct the graph model *all* types must be resolved and converted to canonical format. b) Allow the format in the graph model (making it much less useful) I'm leaning towards (a) since (b) weakens the model so much that its not useable (it undermines equality operator, which is essential for the graph model). It's ok that one may have a generic or native binding which isn't compliant with the graph model since necessary information about the type is missing. Clark |