[Haskell-cafe] Text.CSV questions
Alejandro Serrano Mena
trupill at gmail.com
Mon Jun 20 17:30:28 CEST 2011
Maybe you can directly distinguish if the parser returned an error (Left) or
not (Right), instead of using lefts and rights:
import Text.CSV
import Data.Either
import System
import Data.List
main = do
[inpFileName] <- getArgs
putStrLn ("Parsing "++inpFileName++"...")
result <- parseCSVFromFile inpFileName
case result of
Left error -> do print "Parse error: "
print error
Right csv -> print csvL
putStrLn "All done."
2011/6/17 Dmitri O.Kondratiev <dokondr at gmail.com>
>
>
> 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."
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110620/e8334f1c/attachment.htm>
More information about the Haskell-Cafe
mailing list