[Haskell-cafe] Text.CSV questions

Dmitri O.Kondratiev dokondr at gmail.com
Fri Jun 17 11:11:22 CEST 2011


On Fri, Jun 17, 2011 at 1:04 PM, Vincent Hanquez <tab at snarc.org> wrote:

> 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
>

Thanks everybody!  This is how I solved it:

import Text.CSV
import Data.Either
import System
import Data.List

main = do
     [inpFileName] <- getArgs
     putStrLn ("Parsing "++inpFileName++"...")
     result <- parseCSVFromFile inpFileName
     let errors = lefts [result]
     let csvL = rights [result]
     print "CSV list"
     print csvL
     print "Errors"
     print errors
     putStrLn "All done."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110617/dace3472/attachment.htm>


More information about the Haskell-Cafe mailing list