Frank Heckenbach wrote:
Gale Paeper wrote:
This should also export `a' and `b' from m2 (since `a' is principal, `c' is not):
Frank, this comment doesn't seem to match up with the following example as you have typed it. Is there a typo in "export m2 = (c .. b);"?
[snip]
If you meant exactly what you posted "export m2 = (c .. b);", then your comment makes no sense and is not correct in several ways since "export m2 = (c .. b);" does not lead to a constituent-identifier "a" being exported through interface "m2" and the export-range usage is illegal since the imported constituent-identifier "c" from interface "m" is not a principal identifier of the denoted value.
module m; export m = (e, a, b, a => c); type e = (a, b); end; end.
module m2; export m2 = (c .. b); import m; end; end.
I really mean it. Note this part of 6.11.2 (emphasis by me):
[snip]
So if I read the standard correctly, the range export indeed does not export the identifier `c', although it's explicitly named, but exports `a' and `b' as principal identifiers (export ranges always export principal identifiers, according to c). See also note 6.
Geesh! With note 6 and a more careful reading of the requirements, I see you are indeed correct that the requirements require the behavior you've described for the example.
That aspect of the export-range feature doesn't seem to be very Pascal-like to me. However, regardless of one's opinion about it, it is required by the export-range requirements and thus must be supported to be fully compliant with ISO 10206.
As the whole text of ISO 10206 is presently written, there seems to be a logic conflict no matter which position you try to take on exporting of 6.2.2.10 required-identifiers. Perhaps I'm missing come critical point, [...]
I don't know. Perhaps we should take it to the newsgroup again, but if the standard really is unclear, I'll surely prefer the simpler (and intended, according to John Reagan) option of not allowing it.
I think a revisit/follow-up in the newsgroup or directly with John Reagan is probably warrented. First, until one can show an explicit, concrete derivation from ISO 10206 requirments which proves GPC's implementation is compliant, there will always be an open question as to whether or not GPC is compliant in this area. Second, if it does turn out that there is indeed a problem with ISO 10206 as it is presently written, John Reagan, as the X3J9 Secretary, needs to be aware of it so the deficiency can be addressed if and when X3J9 undertakes a maintenance revision of ISO 10206.
In case there is any doubt, I also prefer the simpler option of not allowing it. (Allowing it would add a great deal of complexity both from language implementors and language users perspectives. There is no real world problem that I'm aware of that would justify that sort of added complexity.)
Gale Paeper gpaeper@empirenet.com