| 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 | |