Before starting my take-home assignment, the instructions advised me to create a "Hello, world" program in the language of my choice. Since I'm choosing Haskell, I created this example as my starter boilerplate.
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
{-# LANGUAGE RecordWildCards #-}
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
module Main where
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
import Options.Applicative
 | 
						|
import Data.Semigroup ((<>))
 | 
						|
 | 
						|
import qualified System.Environment as Env
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
 | 
						|
data CommandArgs = CommandArgs
 | 
						|
  { hello :: String
 | 
						|
  , quiet :: Bool
 | 
						|
  , enthusiasm :: Int
 | 
						|
  } deriving (Eq, Show)
 | 
						|
 | 
						|
parseArgs :: Parser CommandArgs
 | 
						|
parseArgs =
 | 
						|
  CommandArgs <$> strOption
 | 
						|
                  ( long "hello"
 | 
						|
                 <> metavar "TARGET"
 | 
						|
                 <> help "Target for the greeting" )
 | 
						|
              <*> switch
 | 
						|
                  ( long "quiet"
 | 
						|
                 <> short 'q'
 | 
						|
                 <> help "Whether to be quiet" )
 | 
						|
              <*> option auto
 | 
						|
                  ( long "enthusiasm"
 | 
						|
                 <> help "How enthusiastic to greet"
 | 
						|
                 <> showDefault
 | 
						|
                 <> value 1
 | 
						|
                 <> metavar "INT" )
 | 
						|
 | 
						|
main :: IO ()
 | 
						|
main = do
 | 
						|
  args <- execParser opts
 | 
						|
  greet args
 | 
						|
  where
 | 
						|
    opts = info (parseArgs <**> helper)
 | 
						|
      ( fullDesc
 | 
						|
     <> progDesc "Print a greeting for TARGET"
 | 
						|
     <> header "header - a test for optparse-applicative" )
 | 
						|
 | 
						|
greet :: CommandArgs -> IO ()
 | 
						|
greet CommandArgs{..} = putStrLn $ "Hello, " ++ hello ++ replicate enthusiasm '!'
 |