Proposal: Lifting to TExpQ
Simon Peyton Jones
simonpj at microsoft.com
Mon Jan 15 09:00:22 UTC 2018
I agree too. I've created
https://ghc.haskell.org/trac/ghc/ticket/14671
Now all we need is someone to execute on it.
Simon
| -----Original Message-----
| From: Michael Sloan [mailto:mgsloan at gmail.com]
| Sent: 14 January 2018 22:14
| To: Dan Burton <danburton.email at gmail.com>
| Cc: Simon Peyton Jones <simonpj at microsoft.com>; Haskell Libraries
| <libraries at haskell.org>
| Subject: Re: Proposal: Lifting to TExpQ
|
| Cool! Yeah, the name bikeshedding on typedLift vs liftT is that
| "lift" is already too transformer-ey for my taste, and liftT makes it
| even moreso.
|
| Also, I realized I mistyped the type of 'lift', it should be 'Lift t
| => t -> Q Exp'.
|
| -Michael
|
| On Sun, Jan 14, 2018 at 12:05 PM, Dan Burton
| <danburton.email at gmail.com> wrote:
| > +1 to Michael's suggestion; that's basically the same thing I would
| > +have
| > suggested, modulo bikeshedding.
| >
| > On Jan 13, 2018 15:03, "Michael Sloan" <mgsloan at gmail.com> wrote:
| >
| > Hmm, I'm not sure about changing the Lift class, there are good
| > reasons to leave it the same and good reasons to change as well.
| > There is a lot of precedent for providing safe functions which use
| > unsafe functions (e.g. unsafeDupablePerformIO in bytestring / text).
| > Also, not much of the TH API uses TExp, just typed splices. On the
| > other hand, it does make the method's type stronger and directly
| > suggest more properties. It may encourage people to use typed
| splices
| > to define manual instances, which I think is good.
| >
| > I propose a somewhat less breaking change, defining the following:
| >
| > class Lift t where
| > typedLift :: t -> Q (TExp t)
| >
| > lift :: Lift t => t -> Q t
| > lift = fmap unType . typedLift
| >
| > The advantage of this is that a lot more code depends on usage of
| > 'lift' than defining instances of 'Lift'. A lot of the code that
| > defines instances of 'Lift' does it via the 'th-lift' package. I
| > believe that only a handful of packages would need to be updated as
| a
| > result of this change, vs the dozens that would need to be updated
| by
| > changing the type of 'lift'.
| >
| > Even after this change, I think that since 'TExp' is only useful
| with
| > typed splices, the 'lift' form would still find much more usage as
| the
| > more convenient function.
| >
| > -Michael
| > _______________________________________________
| > Libraries mailing list
| > Libraries at haskell.org
| >
| https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.h
| > askell.org%2Fcgi-
| bin%2Fmailman%2Flistinfo%2Flibraries&data=02%7C01%7Cs
| >
| imonpj%40microsoft.com%7C1a64d01a0c6141a3e75808d55b9c27dc%7C72f988bf86
| >
| f141af91ab2d7cd011db47%7C1%7C0%7C636515648605968445&sdata=%2FsPADsgmpl
| > J2zKS3q8oPC4HUwrU7P3VQrutIODMIjsY%3D&reserved=0
| >
| >
More information about the Libraries
mailing list