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.

Reply via email to