Proposal Summary: Add setEnv/unsetEnv to "base"

Conrad Parker conrad at metadecks.org
Mon Nov 19 01:54:11 CET 2012


On 19 November 2012 03:43, Simon Hengel <sol at typeful.net> wrote:
>> I propose to add setEnv/unsetEnv to System.Environment, so that it is
>> easier to write applications that behave the same on POSIX and Windows
>> systems.
>
> I finally prepared a patch for "base" [1].  Contrary to what I
> originally assumed, getting it right on POSIX systems is much harder
> than on Windows.
>
> Here is the summary of the discussion:
>
> As I understand it, Duncan Coutts, Gregory Collins, Edward A. Kmett and
> Ben Millwood support the proposal.
>
> Gregory Collins noted that
>
>> you can get rid of unsetEnv if you make setEnv take a "Maybe String",
>> which might be better.  Ultimately though, who cares what color the
>> bike shed is painted :)
>
> And I explained that
>
>> on Windows, setEnv "FOO" "" will remove FOO from the environment.  I
>> don't particularly like it, but as my stated goal was to provide the
>> exact same behavior on all platforms and there is no way to work
>> around this on Windows my implementation does the same thing.
>>
>> People who don't care for Windows support and want to set an
>> environment variable to the empty string can still use "unix".
>>
>> So short answer: setEnv already supports removing.

I don't understand why we need the same interface everywhere.

Surely we don't want to have a base package that mimics the
worst-designed of all systems, and no-one wants to be stuck forever
with a big difficult lump of code implementing legacy idiosyncrasies
from Windows (which is about as relevant nowadays as VMS).

Conrad.



More information about the Libraries mailing list