-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Derive Template Haskell's Lift class for datatypes.
--   
--   Derive Template Haskell's Lift class for datatypes.
@package th-lift
@version 0.7.5

module Language.Haskell.TH.Lift

-- | Derive Lift instances for the given datatype.
deriveLift :: Name -> Q [Dec]

-- | Derive Lift instances for many datatypes.
deriveLiftMany :: [Name] -> Q [Dec]

-- | Obtain Info values through a custom reification function. This is
--   useful when generating instances for datatypes that have not yet been
--   declared.
deriveLift' :: Info -> Q [Dec]
deriveLiftMany' :: [Info] -> Q [Dec]

-- | Generates a lambda expresson which behaves like <a>lift</a> (without
--   requiring a <a>Lift</a> instance). Example:
--   
--   <pre>
--   newtype Fix f = In { out :: f (Fix f) }
--   
--   instance Lift (f (Fix f)) =&gt; Lift (Fix f) where
--     lift = $(makeLift ''Fix)
--   </pre>
makeLift :: Name -> Q Exp

-- | Like <a>makeLift</a>, but using a custom reification function.
makeLift' :: Info -> Q Exp
class Lift t
lift :: Lift t => t -> Q Exp
instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Syntax.Name
instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Syntax.OccName
instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Syntax.PkgName
instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Syntax.ModName
instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Syntax.NameFlavour
instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Syntax.NameSpace
