ANNOUNCE: GHC version 6.8.2

Yitzchak Gale gale at
Thu Dec 13 17:31:31 EST 2007

Juanma Barranquero wrote:
>> In fact, it'd be better if GHC/GHCi would do what Emacs on Windows
>> does: use HOME if defined, else use ShGetFolderPath to find the
>> Windows-defined "home directory".

I agree, that is closer to the correct behavior.
Except that on Vista ShGetFolderPath is deprecated.
Use ShGetKnownFolderPath instead on Vista.

On Vista, users may have their settings stored
somewhere else on the network. The old interface
does not support that.

Claus Reinke wrote:
> in the interest of backwards-compatibility, perhaps.
> but as the links i gave should demonstrate, there is no
> %HOME% on windows, unless you invent it.

%HOMEPATH% is *not* the usual Windows native way
of finding a place for files like dot-ghci.

Your link to MS documentation of %HOMEPATH% for
XP doesn't use the word "legacy", but it certainly
smells that way to any modern Windows developer.
It is a throwback to the old DOS days.

I was unable to find any mention of %HOMEPATH%
at all for Vista on the MS site, though it does
still seem to exist. Anyone have a link?

Note that the old cmd.exe shell itself is deprecated
on Vista - the new MSH shell is based on .NET.
There I think you would use the IKnownFolders
interface to get (something vagualy analagous to)
the home directory, not %HOMEPATH%

Also, %HOMEPATH% is unsuitable for a Unix-style home
directory on pre-Vista systems, because it usually points to
a directory with spaces in its path name.

%HOME% is the de-facto standard for Unix-like
shell applications that were ported to Windows and
need a home directory. If someone sets that, it
means they want to use the folder in that way. And
yes, that is the way GHCi has been working until
now, so I think it should still be supported if someone
sets it.

Otherwise, the native Windows way is via ShGetFolderPath
on pre-Vista, and ShGetKnownFolder on Vista.
The installer should create a GHC subfolder of that,
and that is where dot-ghci should go on Windows,
unless %HOME% is set.

> now, imagine the surprise when, in your %HOME%/.ghci, you
>   do home <- System.Directory.getHomeDirectory
>        System.Directory.getDirectoryContents home
> and the script ghci claims to be executing isn't even there!-)

Yes, that is a problem. A user who sets %HOME% has
indicated that this should be used. I think that should be
returned by getHomeDirectory.

If you like using "Documents and Settings..." no one is
forcing you to set %HOME% to anything, you can just
use the default settings.


More information about the Glasgow-haskell-users mailing list