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


-- | Compatibility for bang-type template
--   
--   This package provides compatible interfaces for bang-type template
@package th-bang-compat
@version 0.0.1.0


-- | This module provides compatibility definitions of bang-type template
--   for before temaplate-haskell-2.10
module Language.Haskell.TH.Compat.Bang
data () => Bang
type BangQ = Q Bang
type BangType = (Bang, Type)
type BangTypeQ = Q BangType
type VarBangType = (Name, Bang, Type)
type VarBangTypeQ = Q VarBangType
data () => SourceUnpackedness

-- | <pre>
--   C a
--   </pre>
NoSourceUnpackedness :: SourceUnpackedness

-- | <pre>
--   C { {-# NOUNPACK #-} } a
--   </pre>
SourceNoUnpack :: SourceUnpackedness

-- | <pre>
--   C { {-# UNPACK #-} } a
--   </pre>
SourceUnpack :: SourceUnpackedness
type SourceUnpackednessQ = Q SourceUnpackedness
data () => SourceStrictness

-- | <pre>
--   C a
--   </pre>
NoSourceStrictness :: SourceStrictness

-- | <pre>
--   C {~}a
--   </pre>
SourceLazy :: SourceStrictness

-- | <pre>
--   C {!}a
--   </pre>
SourceStrict :: SourceStrictness
type SourceStrictnessQ = Q SourceStrictness
bang :: Quote m => m SourceUnpackedness -> m SourceStrictness -> m Bang
bangType :: Quote m => m Bang -> m Type -> m BangType
varBangType :: Quote m => Name -> m BangType -> m VarBangType
noSourceUnpackedness :: Quote m => m SourceUnpackedness
sourceNoUnpack :: Quote m => m SourceUnpackedness
sourceUnpack :: Quote m => m SourceUnpackedness
noSourceStrictness :: Quote m => m SourceStrictness
sourceLazy :: Quote m => m SourceStrictness
sourceStrict :: Quote m => m SourceStrictness
