Browse Source

006/104: printenv

master
Maxim Likhachev 5 years ago
parent
commit
8dee9e72ab
  1. 25
      src/printenv.hs

25
src/printenv.hs

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
{-# LANGUAGE NoImplicitPrelude #-}
import Prelude (IO, String, ($), (.), (++), (/=), (==), (||),
filter, head, map, mapM_, null, otherwise, putStr,
putStrLn, tail)
import Control.Monad ((>>=))
import Data.Maybe (fromMaybe)
import System.Environment (getArgs, getEnvironment, lookupEnv)
import System.IO.Unsafe (unsafePerformIO)
env :: String -> String
env = fromMaybe [] . unsafePerformIO . lookupEnv
printenvs :: (String -> IO ()) -> [String] -> IO ()
printenvs fx [] = mapM_ fx [k ++ "=" ++ v | (k, v) <- unsafePerformIO getEnvironment]
printenvs fx vars = mapM_ fx (filter (/= []) $ map env vars)
printenv :: [String] -> IO ()
printenv str | null str = printenvs putStrLn []
| head str == "--null" || head str == "-0" = printenvs putStr (tail str)
| otherwise = printenvs putStrLn str
main :: IO ()
main = getArgs >>= printenv
Loading…
Cancel
Save