[Haskell-cafe] Tracing Prelude.read exceptions

Malcolm Wallace malcolm.wallace at me.com
Mon Dec 12 08:49:08 CET 2011


I suggest switching from 'read' to a real parser that can give you proper error messages.  I use Text.Parse from the polyparse package, which is designed to parse back exactly the format produced by derived Show instances.  To derive the Parse class from your datatypes, the tool DRiFT is handy.

'runParser parse' will give you Either String a, where the string contains any error message.

Regards, Malcolm

On 11/12/2011, at 18:19, dokondr <dokondr at gmail.com> wrote:

> Hi,
> I got quite used to a sequence providing simple data persistence :
> 1) Store my data to a file:
> writeFile fileName (show someData)
> 
> 2) Some time later read this data back:
> line <- readFile fileName
> let someData = read line :: SomeDataType
> 
> Having this done hundreds of times I now got stuck with step 2)  trying to read moderately complex structure back. I get read exception in run-time:  
> fromList *** Exception: Prelude.read: no parse
> 
> I have checked and rechecked my types, data files, etc. - and still no idea.
> 
> So my question:
> Is there any way to trace Prelude.read exceptions to see exactly on what data element read fails in run-time?
> 
> Thanks!
> 
>  
> 
> 
> 
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list