
Thank you very much for the help. Good tips for improving my code design.
I'm new to sequence, mapM, and mapM_; I've seen mapM a lot while reading
code and wanted to learn it; now I have a reason! Thanks.
-- Peter
On Thu, Nov 18, 2010 at 5:40 AM, steffen
1. Write one routine, which does all the work for just one command. 2. use sequence or mapM, mapM_ from Control.Monad (depending on your needs), to apply your function to a list of commands
accumulating results you may want to process the output of "sequence" or use the WriterT Monad Transformer.
If you want to stop processing the rest of the list on error, either write a recursive function yourself or use foldM or use ErrorT Monad Transformer.
On Nov 18, 3:03 am, Peter Schmitz
wrote: 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, -- Peter
run :: ... -> IO (Int) -- will return a fail count run -- 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
_______________________________________________ Haskell-Cafe mailing list Haskell-C...@haskell.orghttp:// www.haskell.org/mailman/listinfo/haskell-cafe
Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe