
Another attempt: These [standard] instances are uncontroversial and can accompany the Data class: [] Maybe Either () tuples Bool Ordering Char Double Float Integer Int Int8 Int16 Int32 Int64 Word Word8 Word16 Word32 Word64 These instances could also be [standard], after fixing: Ratio Complex These instances are [partial]: DataType TyCon TypeRep Handle Ptr StablePtr ForeignPtr
That depends on whether the [partial] 'Data' instances can be completed in a sensible way for these types. If they can't, then the way forward would be to split the 'Data' class into those operations supported by all current instances and those only supported by the types in [standard]. That way, one would the presence of instances would at least be indicative of the presence of instance methods, providing more static type safety. But if the 'Data' class and some instances are in 'base', there'd be no changing them (*).
Unless anyone can imagine a completion for these types, it seems the fix must await restructuring of the Data class, so these might as well accompany the Data class too. Stuff in base can be changed, just not easily or quickly. And given that Data is tied up with GHC, that may be unavoidable.