Hi, The following code failed to compiled, with error: Attribute.hs:46:91: Couldn't match expected type `[t]' against inferred type `(a, String)' In the expression: (color_, rest_) In a case alternative: [(color_, rest_)] -> (color_, rest_) In the expression: case reads rest1 of { [(color_, rest_)] -> (color_, rest_) _ -> (Color 0 0 0, rest1) } 43 instance Read Attribute where 44 readsPrec _ str = [ (mkAttr attr_ color, rest) | (attr_, rest1) <- lex str 45 , (color, rest) <- case reads rest1 of 46 [(color_, rest_)] -> (color_, rest_) 47 _ -> (Color 0 0 0, rest1) ] 48 where mkAttr "AttrFgColor" color = AttrFgColor color 49 mkAttr "AttrBgColor" color = AttrBgColor color 50 mkAttr "AttrInverse" _ = AttrInverse 51 mkAttr "AttrWeak" _ = AttrWeak 52 mkAttr "AttrUnderline" _ = AttrUnderline -- 竹密岂妨流水过 山高哪阻野云飞