I noticed that the ZipList newtype in Control.Applicative has no derived instances at all. We can&#39;t show a ZipList, check it for equality, or do anything to it except unpack it or treat it like an Applicative or Functor.<div>
<br></div><div>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&#39;ve missed? For the Read/Show instances, do we want manual ones that don&#39;t use the verbose record-style output? Since it&#39;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.</div>
<div><br></div><div>Discussion period: 2 weeks, I guess</div><div><br></div><div>- Dan</div>