Checking for correct invocation of a command line haskell program
From HaskellWiki
(Difference between revisions)
| Line 42: | Line 42: | ||
| - | See also: [[Simple unix tools]] | + | See also: |
| + | |||
| + | * [[Simple unix tools]] | ||
| + | * Command line options in haskell: http://leiffrenzel.de/papers/commandline-options-in-haskell.html | ||
Revision as of 15:34, 10 April 2007
thartman@linodehaskell:~/learning/haskell/UnixTools/arghandling>./args.sh This demonstrates checking for correct invocation of a command line / shell haskell program It runs a version which gives a "user friendly" error message when invoked incorrectly, alongside an example of "ugly" argument checking that is slightly simpler to write, but gives a less user friendly error message
********** runghc arghandling-nice.hs 0 1 2 "0 1 2"
runghc arghandling-ugly.hs 0 1 2 "0 1 2"
runghc arghandling-nice.hs 0 1 *** Exception: args length does not equal 3. args: : ["0","1"] usage example: $ runghc arghandling-nice.hs firstarg secondarg thirdarg
runghc arghandling-ugly.hs 0 1 *** Exception: user error (Pattern match failure in do expression at arghandling-ugly.hs:3:10-29)
thartman@linodehaskell:~/learning/haskell/UnixTools/arghandling>cat arghandling-nice.hs import System
main = do args <- getArgs
let usagemsg = "usage example: $ runghc arghandling-nice.hs firstarg secondarg thirdarg"
case args of
[first,second,third] -> process first second third
_ -> error $ "args length does not equal 3. args: : " ++ ( show args ) ++ "\n" ++ usagemsg
process a b c = print $ unwords [a,b,c]
thartman@linodehaskell:~/learning/haskell/UnixTools/arghandling>cat arghandling-ugly.hs import System
main = do [first,second,third] <- getArgs
process first second third
process a b c = print $ unwords [a,b,c]
See also:
- Simple unix tools
- Command line options in haskell: http://leiffrenzel.de/papers/commandline-options-in-haskell.html
