More general Generic and Data instances for Data.Proxy.Proxy?

José Pedro Magalhães dreixel at gmail.com
Sat Jul 18 06:30:40 UTC 2015


No time to go into details right now, unfortunately, but that is required
for the extension mechanism of ext/ext1 to work properly.

Cheers,
Pedro
On 18 Jul 2015 2:58 am, "Ryan Scott" <ryan.gl.scott at gmail.com> wrote:

> It does seem unnecessary. The Data instance for Proxy is manually written
> in Data.Data:
>
> proxyConstr :: ConstrproxyConstr = mkConstr proxyDataType "Proxy" [] PrefixproxyDataType :: DataTypeproxyDataType = mkDataType "Data.Proxy.Proxy" [proxyConstr]
>
>
> instance (Data t) => Data (Proxy t) where  gfoldl _ z Proxy  = z Proxy  toConstr Proxy  = proxyConstr  gunfold _ z c = case constrIndex c of                    1 -> z Proxy                    _ -> error "Data.Data.gunfold(Proxy)"  dataTypeOf _ = proxyDataType  dataCast1 f  = gcast1 f
>
> If dataCast1 weren't defined to be gcast1, then that instance would only require a Typeable t constraint, which would make it polykinded. To be honest, I'm not sure why gcast1 requires a Data t constraint (I don't use Data that often, so hopefully someone more knowledgeable than me can answer this).
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20150718/838d839e/attachment.html>


More information about the Libraries mailing list