On Wednesday, 13 March 2013 at 06:31:57 UTC, Lars T. Kyllingstad
wrote:
That's a lot better than ["____":"_____"], at least. :)
But still, the difference between a null AA and an empty AA is
still very subtle, and I am hesitant to design an API that
depends on it. We'd have to explain to the users that "ok, so
there are two kinds of empty AAs: the ones you've done nothing
with, and the ones you've added and removed a value from..."
Furthermore, the language spec doesn't seem to mention "null"
in relation to AAs. Shouldn't the difference between null and
empty then be treated as an implementation detail? Can we even
be sure that "aa is null" will work in two years?
It doesn't need to be part of the API. Just treat
emptyEnvironment as a magic value that means to pass an empty
environment. If the language's AA semantics change, the
implementation can return an arbitrary AA literal from
emptyEnvironment, and spawnProcess would do a "if (environment is
emptyEnvironment)" check.
Making use of the current distinction between empty and null AAs
is useful as it simplifies the implementation, and I think is
marginally better than a magic (non-empty) value.