On Tue, 30 Sep 2008, wman wrote:
I got asked how to do one particular thing in excel, which led to discssion with "our local MSOffice expert". During the discussion I stated that's it too much of a PITA and that I'd rather write a script. Long story short, I promised him a one-liner to "show the power and beauty of Haskell". I got the csv package from hackage, modified the parseCSVFromFile so it's returns IO CSV rather than IO (Either ParseError CSV), and finished with following code (writeFile "output.csv") =<< (liftM printCSV $ liftM (map updateLine) $ parseCSVFromFile "input.csv") Is there room for improvement ? Could it still be made into one-liner without modifying the csv module (and without resorting to case parseCSVFromFile "input.csv" of { Left _ -> []; Right x -> x} kind of tricks) ?
The line will become a little longer, but you can wrap IO (Either ...) in an ErrorT, use its exception handling capability and unwrap the complete action. Or you replace 'case' on Either by 'either (const []) id' or 'either (error "could not open file") id'.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe