Description
A simple way to read environment variables in Haskell.
Description
A simple way to read environment variables with fallback values in Haskell.
README.md
Mr. Env
A simple way to read environment variables in Haskell.
-- Read environment variables, with defaults
host <- envAsString "HOST" "localhost"
port <- envAsInt "PORT" 8000
Simple Example
Read environment variables with do
notation:
import System.Environment.MrEnv ( envAsBool, envAsInt, envAsInteger, envAsString )
main :: IO ()
main = do
-- Get a string, with a fallback value if nothing is set.
host <- envAsString "HOST" "localhost"
-- Get an int. If you need an integer instead you could also use envAsInteger.
port <- envAsInt "PORT" 8000
-- Get a boolean. Here we're expecting the environment variable to read
-- something along the lines of "true", "TRUE", "True", "truE" and so on.
debug <- envAsBool "DEBUG" False
putStrLn $
"Let's connect to "
++ host
++ " on port "
++ show port
++ ". Debug mode is "
++ if debug then "on" else "off"
++ "."
Fancy Example
Read environment variables into a record:
import System.Environment.MrEnv ( envAsBool, envAsInt, envAsInteger, envAsString )
data Config =
Config { host :: String
, port :: Int
, debug :: Bool
}
getConfig :: IO Config
getConfig = Config
<$> envAsString "HOST" "localhost"
<*> envAsInt "PORT" 8000
<*> envAsBool "DEBUG" False
main :: IO ()
main =
getConfig >>= \conf ->
putStrLn $
"Let's connect to "
++ host conf
++ " on port "
++ show $ port conf
++ ". Debug mode is "
++ if debug conf then "on" else "off"
++ "."
We suggest pronouncing <*>
brackety-splat (as opposed to ap). In that vein, <$>
is brackety-cash.
Authors
License
MIT.