[Haskell-cafe] How to generalize executing a series of commands,
based on a list?
ps.haskell at gmail.com
Wed Nov 17 21:03:44 EST 2010
I am able to use System.Cmd (system) to invoke a shell command
and interpret the results.
Please see the code below that works okay for one such command.
(I invoke a program, passing two args.)
I am wondering how to generalize this to do likewise for a
series of commands, where the varying args (filenames, in this
case) are in a list ('inOutLeafs').
I will also want to accumulate some results; probably just a
failure count at this time.
Any advice or pointers to examples would be much appreciated.
Thanks in advance,
> run :: ... -> IO (Int) -- will return a fail count
> -- some args to this function here...
> = do
> -- ... set up: inputLeafs, outputLeafs, etc.
> -- zip two lists of filenames:
> let inOutLeafs = zip inputLeafs outputLeafs
> -- the first pair for the first command:
> let (inFile1,outFile1) = head inOutLeafs
> -- build 1st command using 1st pair of filenames:
> let cmd1 = ...
> exitCode <- system cmd1
> case (exitCode) of
> ExitSuccess -> do
> putStrLn $ "-- OK."
> return 0
> ExitFailure failCnt -> do
> putStrLn $ "-- Failed: " ++ show failCnt
> return 1
More information about the Haskell-Cafe