Moduleth-lift-0.8.7Haskell2010
Language.Haskell.TH.Lift
- 1 class
- 6 values
- Packageth-lift-0.8.7
- Exports7
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceLift.hs
Derive Lift instances for many datatypes.
Obtain Info values through a custom reification function. This is useful when generating instances for datatypes that have not yet been declared.
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.
Like makeLift, but using a custom reification function.
A Lift instance can have any of its values turned into a Template
Haskell expression. This is needed when a value used within a Template
Haskell quotation is bound outside the Oxford brackets ([| ... |] or
[|| ... ||]) but not at the top level. As an example:
add1 :: Int -> Code Q Int
add1 x = [|| x + 1 ||]Template Haskell has no way of knowing what value x will take on at
splice-time, so it requires the type of x to be an instance of Lift.
A Lift instance must satisfy $(lift x) ≡ x and $$(liftTyped x) ≡ x
for all x, where $(...) and $$(...) are Template Haskell splices.
It is additionally expected that lift x ≡ unTypeCode (liftTyped x).
Lift instances can be derived automatically by use of the -XDeriveLift
GHC language extension:
{-# LANGUAGE DeriveLift #-}
module Foo where
import Language.Haskell.TH.Syntax
data Bar a = Bar1 a (Bar a) | Bar2 String
deriving LiftRepresentation-polymorphic since template-haskell-2.16.0.0.
This is exposed both from the template-haskell-lift and template-haskell packages.
Consider importing it from the more stable template-haskell-lift if you don't need the full breadth of the template-haskell interface.
Instances124Lift, …
Lift ByteArrayDefined in base-4.23.0.0 · Data.Array.ByteLift IntSetDefined in containers-0.8 · Data.IntSet.InternalLift PrefixDefined in containers-0.8 · Data.IntSet.Internal.IntTreeCommonsLift VoidDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift IntegerDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift NaturalDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ForeignSrcLangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Int16Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Int32Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Int64Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Int8Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ExtensionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Addr#Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftProduces an Addr# literal from the NUL-terminated C-string starting at the given memory address.
Lift Char#Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Double#Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Float#Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Int#Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Word#Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift BangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift BodyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift BytesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ConDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift DecDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ExpDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift FixityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift GuardDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift InfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift InlineDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift LitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift LocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift MatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift NameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift NameIsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift PatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift RangeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift RoleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift StmtDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift TypeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift BoolDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift CharDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift DoubleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift FloatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift IntDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift WordDefined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Word16Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Word32Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Word64Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift Word8Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift ()Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift (# #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftIntegral a => Lift (Ratio a)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift a => Lift (IntMap a)Defined in containers-0.8 · Data.IntMap.InternalLift a => Lift (Digit a)Defined in containers-0.8 · Data.Sequence.InternalLift a => Lift (FingerTree a)Defined in containers-0.8 · Data.Sequence.InternalLift a => Lift (Node a)Defined in containers-0.8 · Data.Sequence.InternalLift a => Lift (Seq a)Defined in containers-0.8 · Data.Sequence.InternalLift a => Lift (ViewL a)Defined in containers-0.8 · Data.Sequence.InternalLift a => Lift (ViewR a)Defined in containers-0.8 · Data.Sequence.InternalLift a => Lift (Set a)Defined in containers-0.8 · Data.Set.InternalLift a => Lift (PostOrder a)Defined in containers-0.8 · Data.TreeLift a => Lift (Tree a)Defined in containers-0.8 · Data.TreeLift a => Lift (NonEmpty a)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift a => Lift (Maybe a)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift a => Lift (TyVarBndr a)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift a => Lift [a]Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift vertex => Lift (SCC vertex)Defined in containers-0.8 · Data.GraphLift (Fixed a)Defined in base-4.23.0.0 · Data.FixedLift (TExp a)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b) => Lift (Either a b)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b) => Lift (a, b)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift k, Lift a) => Lift (Map k a)Defined in containers-0.8 · Data.Map.Internal(Lift a, Lift b, Lift c) => Lift (a, b, c)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d) => Lift (a, b, c, d)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift (a, b, c, d, e)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift (a, b, c, d, e, f)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift (a, b, c, d, e, f, g)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftLift a => Lift (# a #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b) => Lift (# a, b #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b) => Lift (# a | b #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c) => Lift (# a, b, c #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c) => Lift (# a | b | c #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d) => Lift (# a, b, c, d #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d) => Lift (# a | b | c | d #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift (# a, b, c, d, e #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift (# a | b | c | d | e #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift (# a, b, c, d, e, f #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift (# a | b | c | d | e | f #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift (# a, b, c, d, e, f, g #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift (# a | b | c | d | e | f | g #)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Lift