base- Basic libraries

Copyright(c) Habib Alamin 2017
LicenseBSD-style (see the file libraries/base/LICENSE)
Safe HaskellSafe



A setEnv implementation that allows blank environment variables. Mimics the Env module from the unix package, but with support for Windows too.

The matrix of platforms that:

  • support putenv(FOO) to unset environment variables,
  • support putenv("FOO=") to unset environment variables or set them to blank values,
  • support unsetenv to unset environment variables,
  • support setenv to set environment variables,
  • etc.

is very complicated. Some platforms don't support unsetting of environment variables at all.



getArgs :: IO [String] Source #

Computation getArgs returns a list of the program's command line arguments (not including the program name).

getProgName :: IO String Source #

Computation getProgName returns the name of the program as it was invoked.

However, this is hard-to-impossible to implement on some non-Unix OSes, so instead, for maximum portability, we just return the leafname of the program as invoked. Even then there are some differences between platforms: on Windows, for example, a program invoked as foo is probably really FOO.EXE, and that is what getProgName will return.

withArgs :: [String] -> IO a -> IO a Source #

withArgs args act - while executing action act, have getArgs return args.

withProgName :: String -> IO a -> IO a Source #

withProgName name act - while executing action act, have getProgName return name.

getEnvironment :: IO [(String, String)] Source #

getEnvironment retrieves the entire environment as a list of (key,value) pairs.

If an environment entry does not contain an '=' character, the key is the whole entry and the value is the empty string.

getEnvDefault Source #


:: String

variable name

-> String

fallback value

-> IO String

variable value or fallback value

Get an environment value or a default value.

setEnv Source #


:: String

variable name

-> String

variable value

-> Bool


-> IO () 

Like setEnv, but allows blank environment values and mimics the function signature of setEnv from the unix package.

unsetEnv :: String -> IO () Source #

Like unsetEnv, but allows for the removal of blank environment variables. May throw an exception if the underlying platform doesn't support unsetting of environment variables.