[Haskell-cafe] Text.CSV questions

Vincent Hanquez tab at snarc.org
Fri Jun 17 11:04:11 CEST 2011


On 06/17/2011 10:00 AM, Dmitri O.Kondratiev wrote:
> Hi,
> I try to parse csv file with Text.CSV, like this:
>
> import Text.CSV
> import System
>
> main = do
>      [inpFileName] <- getArgs
>      putStrLn ("Parsing "++inpFileName++"...")
>      let result = parseCSVFromFile inpFileName
>      print result
>
>
> === As a result I get:
>
>  No instance for (Show
>                     (IO (Either Text.Parsec.Error.ParseError CSV)))
>    arising from a use of `print'
>  Possible fix:
>    add an instance declaration for
>    (Show (IO (Either Text.Parsec.Error.ParseError CSV)))
>
> === Question:
> How to add a Show instance for "(IO (Either Text.Parsec.Error.ParseError CSV)))" ?
Hi Dmitri,

you don't add a show instance for IO, but you "unwrap" the IO Monad first and 
then show the result.

let result = parseCSVFromFile inpFileName

should be:

result <- parseCSVFromFile inpFileName

-- 
Vincent



More information about the Haskell-Cafe mailing list