ES4 note: Reserved namespaces
waldemar at google.com
Tue Apr 29 11:34:10 PDT 2008
Lars Hansen wrote:
>> -----Original Message-----
>> From: Waldemar Horwat [mailto:waldemar at google.com]
>> Sent: 28. april 2008 18:39
>> To: Lars Hansen
>> Cc: es4-discuss
>> Subject: Re: ES4 note: Reserved namespaces
>> I agree with everything except:
>> * reserved namespaces may not be aliased (ie they are illegal
>> on the right hand side of "=" in "namespace ns1 = ns2")
>> If we want to make reserved namespaces into keywords,
> We do not...
>> might be ok. However, at the current time they're not
>> keywords, and one could write:
>> const foo = intrinsic;
> But "foo" can't be used as a namespace qualifier in any
> context, so that's OK.
>> namespace instrinsic = my_namespace;
> That one either shadows an existing namespace or causes an
> ambiguity, so I don't think that's a problem either.
>> Being able to write those but not:
>> namespace foo = intrinsic;
>> is just splitting hairs without achieving anything important.
> I disagree. The rules guarantee that it is possible for the
> implementation to determine statically whether a particular
> fixture definition introduces a binding in one of the reserved
> namespaces. (That actually depends on namespace annotations
> always being statically resolvable. Some of the details
> of how that's handled are still open but that's the goal.)
That's missing the point. As far as I've seen in this discussion so far, prohibiting
namespace foo = intrinsic;
does not achieve anything important and it does introduce a weird asymmetry (and yet another strange rule for programmers to memorize) into the language. It does *not* achieve the guarantee that it's statically possible to determine whether a particular fixture definition introduces a binding in one of the reserved namespaces. That guarantee is satisfied by resolving namespaces at compile time, with or without this prohibition.
More information about the Es4-discuss