Difference between revisions of "Checking for correct invocation of a command line haskell program"
Jump to navigation
Jump to search
BrettGiles (talk | contribs) m (→See also:: link) |
m (Minor formatting changes) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
+ | [[Category:How to]] |
||
This page shows checking for correct invocation of a command line / shell haskell program. The first example is a version which gives a "user friendly" error message when invoked incorrectly, the second is an example of "ugly" argument checking that is slightly simpler to write, but gives a less user friendly error message |
This page shows checking for correct invocation of a command line / shell haskell program. The first example is a version which gives a "user friendly" error message when invoked incorrectly, the second is an example of "ugly" argument checking that is slightly simpler to write, but gives a less user friendly error message |
||
==Usage examples== |
==Usage examples== |
||
− | < |
+ | <tt><pre> |
runghc arghandling-nice.hs 0 1 2 |
runghc arghandling-nice.hs 0 1 2 |
||
"0 1 2" |
"0 1 2" |
||
Line 17: | Line 18: | ||
runghc arghandling-ugly.hs 0 1 |
runghc arghandling-ugly.hs 0 1 |
||
*** Exception: user error (Pattern match failure in do expression at arghandling-ugly.hs:3:10-29) |
*** Exception: user error (Pattern match failure in do expression at arghandling-ugly.hs:3:10-29) |
||
− | </ |
+ | </pre></tt> |
==The code== |
==The code== |
||
− | arghandling-nice.hs: |
+ | * <tt>arghandling-nice.hs</tt>: |
− | <haskell> |
+ | :<haskell> |
import System |
import System |
||
Line 34: | Line 35: | ||
</haskell> |
</haskell> |
||
− | arghandling-ugly.hs |
+ | * <tt>arghandling-ugly.hs</tt>: |
− | <haskell> |
+ | :<haskell> |
import System |
import System |
||
Latest revision as of 02:29, 9 April 2021
This page shows checking for correct invocation of a command line / shell haskell program. The first example is a version which gives a "user friendly" error message when invoked incorrectly, the second is an example of "ugly" argument checking that is slightly simpler to write, but gives a less user friendly error message
Usage examples
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)
The code
- 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]
- arghandling-ugly.hs:
import System main = do [first,second,third] <- getArgs process first second third process a b c = print $ unwords [a,b,c]