<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Excellent point. We could, if we wanted, use some custom code (or -ddump-deriv? or th-lift and -ddump-splices?) to generate all the Lift instances and then add them by hand. I wouldn't want to maintain these instances indefinitely, but now that it's not indefinite, I'm OK.</div><div><br></div><div>But I'm also not dying for the instances to begin with. So we could just table the discussion for a few years until we're ready to use 8.0 for bootstrapping.</div><div><br></div><div>Richard</div><br><div><div>On Sep 26, 2015, at 12:52 PM, Ryan Scott <<a href="mailto:ryan.gl.scott@gmail.com">ryan.gl.scott@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div><div>Hm, it looks like I proposed this much earlier than I probably should have, since I forgot that the GHC boot libraries have to be buildable by the last two major releases of GHC anyway [1], and since template-haskell is a stage-0 dependency, adding -XDeriveLift to template-haskell is a no-go at the moment.<br><br></div>But I can at least look forward to having this in GHC 8.4 in a couple of years :)<br><br></div>Ryan S.<br><div><br>-----<br>[1] <a href="https://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Compilerversionsandlanguageextensions">https://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Compilerversionsandlanguageextensions</a><br>[2] <a href="http://git.haskell.org/ghc.git/blob/HEAD:/ghc.mk#l419">http://git.haskell.org/ghc.git/blob/HEAD:/ghc.mk#l419</a><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 23, 2015 at 12:16 AM, Michael Sloan <span dir="ltr"><<a href="mailto:mgsloan@gmail.com" target="_blank">mgsloan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>+1,ideally, th-orphans would be essentially empty for newer GHCs (and so just be a compatibility shim for also getting the instances with older TH)<br></div><div><br></div>Actually, oddly enough, th-orphans ought to not be broken by this.  Other than a number of Lift instances for numeric types, here's how it defines all its Lift instances:<div><br></div><div><div>$(reifyManyWithoutInstances ''Lift [''Info, ''Loc] (const True) >>= <span style="line-height:1.5">deriveLiftMany)</span></div><div><br></div><div>This recursively derives Lift for every datatype transitively, but only if they don't already have a Lift instance.  I'd been hoping to use this for everything in th-orphans, but unfortunately older versions of TH don't support standalone deriving.</div></div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Michael</div></font></span></div><div class="HOEnZb"><div class="h5"><br><div class="gmail_quote"><div dir="ltr">On Tue, Sep 22, 2015 at 5:59 PM Richard Eisenberg <<a href="mailto:eir@cis.upenn.edu" target="_blank">eir@cis.upenn.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>+1 from me. Now that it's so easy, I think Lift should be instanced for all concrete types exported from the boot libraries. Do make sure to communicate with the authors of th-lift and th-orphans at some point, though.</div><div><br></div><div>Richard</div></div><div style="word-wrap:break-word"><br><div><div>On Sep 22, 2015, at 10:12 AM, Ryan Scott <<a href="mailto:ryan.gl.scott@gmail.com" target="_blank">ryan.gl.scott@gmail.com</a>> wrote:</div><br><blockquote type="cite"><div dir="ltr"><div><div>The DeriveLift extension has landed in GHC HEAD, so now it's become apparent that the bikeshed needs a new coat of paint. The only Lift instances at the moment are base types [1], but with DeriveLift, it would be possible to implement Lift for many for data types with ease.<br><br></div>I'll make (what I hope is) an uncontroversial first suggestion: we should derive Lift for every data type in the template-haskell library itself. These instances have proved to be useful for library authors who need to convert to and from the TH AST (th-desugar, for example, relies on this functionality via orphan instances [2]).<br><br></div>Adding this would break some code out in the wild (the th-lift [3] and th-orphans [4] packages come to mind; there may be others), so I'll request feedback before marching forth with this proposal.<br><div><div><br></div><div>Ryan S.<br></div><div><br>-----<br>[1] <a href="http://hackage.haskell.org/package/template-haskell-2.10.0.0/docs/Language-Haskell-TH-Syntax.html#t:Lift" target="_blank">http://hackage.haskell.org/package/template-haskell-2.10.0.0/docs/Language-Haskell-TH-Syntax.html#t:Lift</a><br>[2] <a href="http://hackage.haskell.org/package/th-desugar-1.5.4.1/docs/src/Language-Haskell-TH-Desugar-Lift.html" target="_blank">http://hackage.haskell.org/package/th-desugar-1.5.4.1/docs/src/Language-Haskell-TH-Desugar-Lift.html</a><br>[3] <a href="http://hackage.haskell.org/package/th-lift" target="_blank">http://hackage.haskell.org/package/th-lift</a><br>[4] <a href="http://hackage.haskell.org/package/th-orphans" target="_blank">http://hackage.haskell.org/package/th-orphans</a><br></div></div></div>
_______________________________________________<br>Libraries mailing list<br><a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br></blockquote></div><br></div>_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>
</div></div></blockquote></div><br></div>
</blockquote></div><br></body></html>