Tweak Read instance: allow optional parentheses around the outside
(for consistency), and don't propagate precedence to elements.
Read
--------------------------------------------------------------------}
instance (Read a, Ord a) => Read (Set a) where
Read
--------------------------------------------------------------------}
instance (Read a, Ord a) => Read (Set a) where
- readsPrec i r = [ (fromList xs, t) | ("{",s) <- lex r, (xs,t) <- readl s ]
+ readsPrec _ = readParen False $ \ r ->
+ [(fromList xs,t) | ("{",s) <- lex r,
+ (xs,t) <- readl s]
where readl s = [([],t) | ("}",t) <- lex s] ++
where readl s = [([],t) | ("}",t) <- lex s] ++
- [(x:xs,u) | (x,t) <- readsPrec i s
+ [(x:xs,u) | (x,t) <- reads s
, (xs,u) <- readl' t]
readl' s = [([],t) | ("}",t) <- lex s] ++
[(x:xs,v) | (",",t) <- lex s
, (xs,u) <- readl' t]
readl' s = [([],t) | ("}",t) <- lex s] ++
[(x:xs,v) | (",",t) <- lex s
- , (x,u) <- readsPrec i t
, (xs,v) <- readl' u]
{--------------------------------------------------------------------
, (xs,v) <- readl' u]
{--------------------------------------------------------------------