Haskell-環境変数の値を取得する

環境変数の値を取得する

環境変数の値を取得するために、System.Environmentモジュールを利用します。


環境変数の名前から値を取得する。

getEnv関数の引数に環境変数名を渡すと、環境変数の値を取得できます。


$ cat envvar.hs 
#!/usr/bin/env runghc

import System.Environment

main = do
        buff <- getEnv "LANG"
        putStrLn buff

$ ./envvar.hs 
ja_JP.UTF-8

環境変数一覧を取得する。

getEnvironment関数で取得できます。

取得したデータはIO String型であり、環境変数名と値がタプルで構成されます。


$ cat envvar.hs 
#!/usr/bin/env runghc

import System.Environment
main = getEnvironment

$ ./envvar.hs 
[("TERM_PROGRAM","iTerm.app"),("TERM","xterm-256color"),
("SHELL","/bin/bash"),("LC_ALL","ja_JP.UTF-8"),("LANG","ja_JP.UTF-8"), 
  :

環境変数の名前のみを一覧で取得する。

getEnvironment関数で取得したタプルデータから、環境変数名の要素をリストに変換します。


#!/usr/bin/env runghc

import System.Environment

getEnvironmentNames :: IO [String]
getEnvironmentNames = getEnvironment >>= mapM (return . fst)

main = getEnvironmentNames


【備考】

遅延評価とは

遅延評価(lazy evaluation)とは、具体的な値が必要になった時点で計算を実行するという実行方式のことです。
与えられた値を必要になるまで評価(計算)しないことにより、不必要な計算が行われる無駄をなくすことができます。
遅延評価は怠惰評価とも言われます。

遅延評価のように、処理を遅延させて必要な部分だけ行うとは、コンピュータの世界または現実の世界で広く行われている技術といえます。
例えば、以下のような事例が挙げられます。
・プログラム実行時に、必要になるまでオブジェクトの生成やデータの取得などを保留することで、プログラムの高速化を図る手法があります。
・コンピュータ・グラフィックス(CG)においては、表画面に表示されない部分を計算(レンダリング)しないことにより、計算時間の無駄を省く手法がよく用いられます。
・現実世界の例としては、必要なものを必要なときに必要なだけ生産することによって仕掛在庫を抑える「カンバン方式」(ジャストインタイム生産方式)が挙げられます。


関連ページ