[Hs-Generics] Request for code review: Generics for tuple/newtype introspection

AntC anthony_clayden at clear.net.nz
Fri Dec 20 07:44:23 UTC 2013


> Nicolas Frisby <nicolas.frisby <at> gmail.com> writes:
> 
> Disclaimer: I didn't read all of the previous emails.
> Does this do what you need?
> 
> I'm on GHC 7.4 at the moment, but I think this will work with later 
versions.
> 
> HTH.
> 

Thank you Nicolas (and yes it works on GHC 7.6).

It does look 'cleaner' than the version I posted. But I still see plenty of 
pileups of (type and data) constructors.

However, perhaps it looks 'cleaner' because it doesn't work in the corner 
cases you could have seen discussed in the previous emails?

* There's no instance for the unit tuple `toAttrs ()`
  -- that's easily fixed:

    instance ToAttrsR U1   where
      toAttrsR _ = []

* It crashes '*** Exception: Prelude.undefined'
  when toAttrs' argument is undefined.
  I tried a quick fix to the (:*:) instance, similar to my version,
  but that wasn't enough.

* (And a minor point: I wanted to be able to go feed toAttrs' output
   tuple into itself.
   -- that's fixable easily enough.
  My version for a bonus also grabbed the newtype's data constructor.
   -- that's also fixable, I think.)

AntC






More information about the Generics mailing list