
On Sat, Dec 17, 2011 at 01:37:35PM -0500, Daniel Peebles wrote:
I noticed that the ZipList newtype in Control.Applicative has no derived instances at all. We can't show a ZipList, check it for equality, or do anything to it except unpack it or treat it like an Applicative or Functor.
It seems fairly uncontroversial to suggest adding some instances for it, but there are some minor questions to address: the obvious instances to add might be Eq, Ord, Show, Read, and possibly Typeable and/or Data. Are there any others I've missed? For the Read/Show instances, do we want manual ones that don't use the verbose record-style output? Since it's just defined as data ZipList a = ZipList { getZipList :: [a] } to get an easy accessor (does anyone actually use getZipList as a field for record updates?), it might be easier to write the projection manually and change the definition to data ZipList a = ZipList [a] with a separate getZipList function, so the deriving mechanism can give us a less noisy Show instance.
+1 -Brent