Proposal: liftData for Template Haskell
Edward Z. Yang
ezyang at mit.edu
Fri Apr 17 11:21:16 UTC 2015
I propose adding the following function to Language.Haskell.TH:
-- | 'liftData' is a variant of 'lift' in the 'Lift' type class which
-- works for any type with a 'Data' instance.
liftData :: Data a => a -> Q Exp
liftData = dataToExpQ (const Nothing)
I don't really know which submodule this should come from;
since it uses 'dataToExpQ', you might put it in Language.Haskell.TH.Quote
but arguably 'dataToExpQ' doesn't belong in this module either,
and it only lives there because it is a useful function for defining
quasiquoters and it was described in the quasiquoting paper.
I might propose getting rid of the 'Lift' class entirely, but you
might prefer that class since it doesn't go through SYB (and have
the attendant slowdown).
This mode of use of 'dataToExpQ' deserves more attention.
Discussion period: 1 month
More information about the Libraries