Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Haskell.TH.Lift
Contents
Synopsis
- deriveLift :: Name -> Q [Dec]
- deriveLiftMany :: [Name] -> Q [Dec]
- deriveLift' :: [Role] -> Info -> Q [Dec]
- deriveLiftMany' :: [([Role], Info)] -> Q [Dec]
- makeLift :: Name -> Q Exp
- makeLift' :: Info -> Q Exp
- class Lift (t :: TYPE r) where
Documentation
deriveLift :: Name -> Q [Dec] #
deriveLiftMany :: [Name] -> Q [Dec] #
Derive Lift
instances for many datatypes.
deriveLift' :: [Role] -> Info -> Q [Dec] #
Obtain Info
values through a custom reification function. This is useful
when generating instances for datatypes that have not yet been declared.
deriveLiftMany' :: [([Role], Info)] -> Q [Dec] #
Generates a lambda expresson which behaves like lift
(without requiring
a Lift
instance). Example:
newtype Fix f = In { out :: f (Fix f) } instance Lift (f (Fix f)) => Lift (Fix f) where lift = $(makeLift ''Fix)
This can be useful when deriveLift
is not clever enough to infer the
correct instance context, such as in the example above.
class Lift (t :: TYPE r) where #
Minimal complete definition
Instances
Lift Bool | |
Defined in Language.Haskell.TH.Syntax | |
Lift Char | |
Defined in Language.Haskell.TH.Syntax | |
Lift Double | |
Defined in Language.Haskell.TH.Syntax | |
Lift Float | |
Defined in Language.Haskell.TH.Syntax | |
Lift Int | |
Defined in Language.Haskell.TH.Syntax | |
Lift Int8 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Int16 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Int32 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Int64 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Integer | |
Defined in Language.Haskell.TH.Syntax | |
Lift Natural | |
Defined in Language.Haskell.TH.Syntax | |
Lift Word | |
Defined in Language.Haskell.TH.Syntax | |
Lift Word8 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Word16 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Word32 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Word64 | |
Defined in Language.Haskell.TH.Syntax | |
Lift Name # | |
Defined in Language.Haskell.TH.Lift | |
Lift () | |
Defined in Language.Haskell.TH.Syntax | |
Lift NameSpace # | |
Defined in Language.Haskell.TH.Lift | |
Lift OccName # | |
Defined in Language.Haskell.TH.Lift | |
Lift NameFlavour # | |
Defined in Language.Haskell.TH.Lift | |
Lift ModName # | |
Defined in Language.Haskell.TH.Lift | |
Lift PkgName # | |
Defined in Language.Haskell.TH.Lift | |
Lift Void | |
Defined in Language.Haskell.TH.Syntax | |
Lift Int# | |
Defined in Language.Haskell.TH.Syntax | |
Lift Char# | |
Defined in Language.Haskell.TH.Syntax | |
Lift Word# | |
Defined in Language.Haskell.TH.Syntax | |
Lift Addr# | |
Defined in Language.Haskell.TH.Syntax | |
Lift Float# | |
Defined in Language.Haskell.TH.Syntax | |
Lift Double# | |
Defined in Language.Haskell.TH.Syntax | |
Lift a => Lift ([a] :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
Lift a => Lift (Maybe a :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
Integral a => Lift (Ratio a :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
Lift a => Lift (NonEmpty a :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b) => Lift (Either a b :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b) => Lift ((a, b) :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c) => Lift ((a, b, c) :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d) => Lift ((a, b, c, d) :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((a, b, c, d, e) :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((a, b, c, d, e, f) :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((a, b, c, d, e, f, g) :: Type) | |
Defined in Language.Haskell.TH.Syntax | |
Lift (# #) | |
Defined in Language.Haskell.TH.Syntax | |
Lift a => Lift ((# a #) :: TYPE ('TupleRep '['LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b) => Lift ((# a, b #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b) => Lift ((# a | b #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c) => Lift ((# a, b, c #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c) => Lift ((# a | b | c #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d) => Lift ((# a, b, c, d #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d) => Lift ((# a | b | c | d #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a, b, c, d, e #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a | b | c | d | e #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a, b, c, d, e, f #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a | b | c | d | e | f #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a, b, c, d, e, f, g #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax | |
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a | b | c | d | e | f | g #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | |
Defined in Language.Haskell.TH.Syntax |