I must admit that looks rather mysterious to me. The documentation I saw doesn't make the benefit of the nested splice terribly obvious.

On Tue, Oct 25, 2022, 10:53 PM Michael Sloan <mgsloan@gmail.com> wrote:
You might also be interested in https://hackage.haskell.org/package/th-utilities-0.2.5.0/docs/TH-Derive.html - though afaik it didn't catch on.

The cleverness there is to use nesting splicing, where the inner one generates code involving something like "runDeriver (Proxy @ Storable X) ...", where runDeriver is a method of a typeclass.  The instances of this class implement the code generation that is ultimately used for the output.

$($(derive [d|
        instance Deriving (Storable X)
        |]))

On Sat, Oct 22, 2022, 13:48 David Feuer <david.feuer@gmail.com> wrote:
Okay, I found it: recursion-schemes.

On Sat, Oct 22, 2022, 3:05 PM David Feuer <david.feuer@gmail.com> wrote:
That doesn't work out so well when the class has a bunch of methods. I definitely saw the nice way on Hackage ... somewhere.

On Sat, Oct 22, 2022, 2:49 PM Brandon Allbery <allbery.b@gmail.com> wrote:
I'm not aware of anything specifically like that, but the `make…`
functions in https://hackage.haskell.org/package/deriving-compat-0.6.1/docs/Data-Deriving.html
may allow you to do something similar?

On Sat, Oct 22, 2022 at 2:32 PM David Feuer <david.feuer@gmail.com> wrote:
>
> I remember seeing a package that offered a function used something like this:
>
> $(deriveThingy [d| instance Foo a => Thingy a |])
>
> to allow the user to specify the constraint(s) for a generated instance. I'd love to borrow the code for that, but I can't remember what package it was in, what class it derived, etc. Can anyone help?
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



--
brandon s allbery kf8nh
allbery.b@gmail.com
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.