Sophie

Sophie

distrib > Fedora > 20 > x86_64 > by-pkgid > d2132803bbeabdd2b2ce94f38ae0ab31 > files > 53

ghc-cmdtheline-devel-0.2.3-1.fc20.x86_64.rpm

import System.Console.CmdTheLine
import Control.Applicative

import Control.Monad ( when )

-- Define a flag argument under the names '--silent' and '-s'
silent :: Term Bool
silent = value . flag $ optInfo [ "silent", "s" ]

-- Define the 0th positional argument, defaulting to the value '"world"' in
-- absence.
greeted :: Term String
greeted = value $ pos 0 "world" posInfo { posName = "GREETED" }

hello :: Bool -> String -> IO ()
hello silent str = when (not silent) . putStrLn $ "Hello, " ++ str ++ "!"

term :: Term (IO ())
term = hello <$> silent <*> greeted

termInfo :: TermInfo
termInfo = defTI { termName = "Hello", version = "1.0" }

main :: IO ()
main = run ( term, termInfo )