Hi,

I am trying to understand how to define instances for Read class for a user defined type.

 

This is the sample code I wrote, but I am not able to get it correctly. So, let me know what’s wrong with this program:

 

 

module Mark where

 

data Mark = Mark Int deriving (Show)

 

instance Read Mark where

 

            readsPrec _ str = [(Mark x, t') | ("mark",t) <- reads str,

                                                             (x,t') <- reads t

 

When I run it in ghci:

 

*Mark> reads "mark 5" :: [ (Mark,String)]         ( I am intentionally using mark in lowercase)

 []

 

Why is the output coming out as [] as against expected output [(Mark 5, “”)] ?

 

-Anurag