
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.
But I can at least look forward to having this in GHC 8.4 in a couple of
years :)
Ryan S.
-----
[1]
https://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Compilerversion...
[2] http://git.haskell.org/ghc.git/blob/HEAD:/ghc.mk#l419
On Wed, Sep 23, 2015 at 12:16 AM, Michael Sloan
+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)
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:
$(reifyManyWithoutInstances ''Lift [''Info, ''Loc] (const True) >>= deriveLiftMany)
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.
Michael
On Tue, Sep 22, 2015 at 5:59 PM Richard Eisenberg
wrote: +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.
Richard
On Sep 22, 2015, at 10:12 AM, Ryan Scott
wrote: 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.
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]).
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.
Ryan S.
----- [1] http://hackage.haskell.org/package/template-haskell-2.10.0.0/docs/Language-H... [2] http://hackage.haskell.org/package/th-desugar-1.5.4.1/docs/src/Language-Hask... [3] http://hackage.haskell.org/package/th-lift [4] http://hackage.haskell.org/package/th-orphans _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries