That works, but is probably not what you want. You can use the lex 
function to parse identifiers not enclosed in quotes:
 
 > instance Read Mark where
 >   readsPrec _ str = [(Mark x, t') | ("mark",t) <- lex str,
 >                                     (x,t') <- reads t
 

I played a bit around with lex function and it seems that under certain
circumstances it doesn't read the string of token properly 

 

For e.g. 

 

 

-- IP address 

 

*Mark> lex "192.168.0.1"

[("192.168",".0.1")]

 

-- digit + char 

 

Also lex "8021p"   output is 

 

*Mark> lex "8021p"

[("8021","p")]

 

Is there any other lex variant available?  Or should I switch to using
Parsec library, in that case, will I still be able to use it with Read
instances? If so, how?

 

Anurag

 

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to