<br>On Mon, Jun 20, 2011 at 7:30 PM, Alejandro Serrano Mena <span dir="ltr">&lt;<a href="mailto:trupill@gmail.com">trupill@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Maybe you can directly distinguish if the parser returned an error (Left) or not (Right), instead of using lefts and rights:<div class="im"><div><br></div><div>import Text.CSV<br>import Data.Either<br>import System<br>import Data.List<div>


<br>main = do<br>     [inpFileName] &lt;- getArgs<br>     putStrLn (&quot;Parsing &quot;++inpFileName++&quot;...&quot;)<br></div>     result &lt;- parseCSVFromFile inpFileName</div></div><div>     case result of</div><div>
       Left error -&gt; do print &quot;Parse error: &quot;</div>

<div>                             print error</div><div>       Right csv -&gt; print csvL</div><div>     putStrLn &quot;All done.&quot;<br><br></div></blockquote><div><br>Yes, you right, this is better, then printing empty error list.<br>
<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div class="gmail_quote">2011/6/17 Dmitri O.Kondratiev <span dir="ltr">&lt;<a href="mailto:dokondr@gmail.com" target="_blank">dokondr@gmail.com</a>&gt;</span><br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div class="h5"><div><div></div><div><br><br><div class="gmail_quote">On Fri, Jun 17, 2011 at 1:04 PM, Vincent Hanquez <span dir="ltr">&lt;<a href="mailto:tab@snarc.org" target="_blank">tab@snarc.org</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div></div><div>On 06/17/2011 10:00 AM, Dmitri O.Kondratiev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
I try to parse csv file with Text.CSV, like this:<br>
<br>
import Text.CSV<br>
import System<br>
<br>
main = do<br>
     [inpFileName] &lt;- getArgs<br>
     putStrLn (&quot;Parsing &quot;++inpFileName++&quot;...&quot;)<br>
     let result = parseCSVFromFile inpFileName<br>
     print result<br>
<br>
<br>
=== As a result I get:<br>
<br>
 No instance for (Show<br>
                    (IO (Either Text.Parsec.Error.ParseError CSV)))<br>
   arising from a use of `print&#39;<br>
 Possible fix:<br>
   add an instance declaration for<br>
   (Show (IO (Either Text.Parsec.Error.ParseError CSV)))<br>
<br>
=== Question:<br>
How to add a Show instance for &quot;(IO (Either Text.Parsec.Error.ParseError CSV)))&quot; ?<br>
</blockquote></div></div>
Hi Dmitri,<br>
<br>
you don&#39;t add a show instance for IO, but you &quot;unwrap&quot; the IO Monad first and then show the result.<br>
<br>
let result = parseCSVFromFile inpFileName<br>
<br>
should be:<br>
<br>
result &lt;- parseCSVFromFile inpFileName<br>
<br>
-- <br><font color="#888888">
Vincent<br>
</font></blockquote></div><br></div></div>Thanks everybody!  This is how I solved it:<br><br clear="all">import Text.CSV<br>import Data.Either<br>import System<br>import Data.List<div><br><br>main = do<br>     [inpFileName] &lt;- getArgs<br>



     putStrLn (&quot;Parsing &quot;++inpFileName++&quot;...&quot;)<br></div>     result &lt;- parseCSVFromFile inpFileName<br>     let errors = lefts [result]<br>     let csvL = rights [result]<br>     print &quot;CSV list&quot;<br>



     print csvL<br>     print &quot;Errors&quot;<br>     print errors<br>     putStrLn &quot;All done.&quot;<br><br>
<br></div></div><div class="im">_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></div></blockquote></div><br></div>
</blockquote></div><br><br clear="all"><br>