On 04/08/2014 08:38 AM, Kevin Grandon wrote:
> If you're comparing to null, I would think that we should use |===|. 

I intentionally went with == since treating undefined like null seems 
more desirable than someone putting in undefined and ending up with the 
string "undefined" in the environment variable.

> Also checking against null seems a bit brittle. My personal preference 
> would be to add another option, possibly something like |envRemove|. I 
> won't block the review on this though - so up to you if you want to 
> implement or not.
>

My rationale was that a straight-forward "mix" idiom of enumerating over 
user-provided keys and merging them into a dictionary has a more 
mathematical/consistent set of semantics than two separate dicts.  For 
example, if we have:

```js
A = { envOverrides: { foo: 'bar' }}
Bcur = { envOverrides: { foo: null } }
Balt = { envRemove: { foo: 'ignored value, probably still better than a 
list' } }
```

then deepmix(deepmix(blah, A), Bcur) has arguably intuitive behaviour.  
But deepmix(deepmix(blah, A, Balt) will be ambiguous and arguably 
requires the override/remove semantics to be understood at each mixing 
level to eliminate that ambiguity.

I suspect you have some situation in mind with the brittleness comment 
that I don't see; if you could elaborate my mind is open to being 
changed!  (I'm not being lazy here about changing the patch, at least 
not yet ;)