By Alvin Alexander. Last updated: June 10, 2017
As a quick note to self, this source code from the online version of Learn You a Haskell shows how to read command line arguments in Haskell:
-- from "Learn You a Haskell"
-- http://learnyouahaskell.com/input-and-output
import System.Environment
import Data.List
main = do
args <- getArgs -- IO [String]
progName <- getProgName -- IO String
putStrLn "The arguments are:"
mapM putStrLn args
putStrLn "The program name is:"
putStrLn progName
If you save that source code in a file named args.hs, and then compile it with ghc like this:
ghc args.sh
you can test it with no command line args like this:
$ ./args The arguments are: The program name is: CommandLineArgs
and then give it a few test command line args like this:
$ ./args foo bar The arguments are: foo bar The program name is: CommandLineArgs
As I show in the comments that I added, getArgs has the type IO [String], and progName has the type IO String.
I want to try writing a few simple scripts/programs in Haskell, so hopefully over time I’ll add more information on how to process command line arguments in Haskell. Until then, the Learn You a Haskell link I shared at the beginning has good information on handling I/O in Haskell.

