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


-- | Compatibility for data definition template of TH
--   
--   This package contains wrapped name definitions of data definition
--   template
@package th-data-compat
@version 0.1.1.0


-- | This module provides compatibility definitions of data-type
--   declaration templates for before temaplate-haskell-2.11
module Language.Haskell.TH.Compat.Data

-- | Definition against <a>dataD</a>, compatible with before
--   temaplate-haskell-2.11
dataD' :: CxtQ -> Name -> [TyVarBndr ()] -> [ConQ] -> [Name] -> DecQ

-- | Definition against <a>newtypeD</a>, compatible with before
--   temaplate-haskell-2.11
newtypeD' :: CxtQ -> Name -> [TyVarBndr ()] -> ConQ -> [Name] -> DecQ

-- | Definition against <a>dataInstD</a>, compatible with before
--   temaplate-haskell-2.11
dataInstD' :: CxtQ -> Name -> [TypeQ] -> [ConQ] -> [Name] -> DecQ

-- | Definition against <a>newtypeInstD</a>, compatible with before
--   temaplate-haskell-2.11
newtypeInstD' :: CxtQ -> Name -> [TypeQ] -> ConQ -> [Name] -> DecQ

-- | Compatible interface to destruct <a>DataD</a>
unDataD :: Dec -> Maybe (Cxt, Name, [TyVarBndr ()], Maybe Kind, [Con], [Type])

-- | Compatible interface to destruct <a>NewtypeD</a>
unNewtypeD :: Dec -> Maybe (Cxt, Name, [TyVarBndr ()], Maybe Kind, Con, [Type])

-- | Compatible interface to destruct <a>DataInstD</a>
unDataInstD :: Dec -> Maybe (Cxt, Maybe [TyVarBndr ()], Type, Maybe Kind, [Con], [Type])

-- | Compatible interface to destruct <a>NewtypeInstD</a>
unNewtypeInstD :: Dec -> Maybe (Cxt, Maybe [TyVarBndr ()], Type, Maybe Kind, Con, [Type])

-- | Compatible interface to destruct <a>InstanceD</a> No Overlap type is
--   defined before template-haskell-2.11.
unInstanceD :: Dec -> Maybe (Cxt, Type, [Dec])
