Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

meowgorithm/mr-env

Repository files navigation

Mr. Env

build Hackage

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

About

A simple way to read environment variables in Haskell

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /