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


-- | The 'QuasiQuoter' interface.
--   
--   The stable home of TemplateHaskell's <a>QuasiQuoter</a> interface.
@package template-haskell-quasiquoter
@version 0.1.0.0

module Language.Haskell.TH.QuasiQuoter
data QuasiQuoter
QuasiQuoter :: (String -> Q Exp) -> (String -> Q Pat) -> (String -> Q Type) -> (String -> Q [Dec]) -> QuasiQuoter
[quoteExp] :: QuasiQuoter -> String -> Q Exp
[quotePat] :: QuasiQuoter -> String -> Q Pat
[quoteType] :: QuasiQuoter -> String -> Q Type
[quoteDec] :: QuasiQuoter -> String -> Q [Dec]

-- | A <a>QuasiQuoter</a> that fails with a helpful error message in every
--   context. It is intended to be modified to create a <a>QuasiQuoter</a>
--   that fails in all inappropriate contexts.
--   
--   For example, you could write
--   
--   <pre>
--   myPatQQ = (namedDefaultQuasiQuoter "myPatQQ")
--     { quotePat = ... }
--   </pre>
--   
--   If <tt>myPatQQ</tt> is used in an expression context, the compiler
--   will report that, naming <tt>myPatQQ</tt>.
--   
--   See also <a>defaultQuasiQuoter</a>, which does not name the
--   <a>QuasiQuoter</a> in the error message, and might therefore be more
--   appropriate when the users of a particular <a>QuasiQuoter</a> tend to
--   define local "synonyms" for it.
namedDefaultQuasiQuoter :: String -> QuasiQuoter

-- | A <a>QuasiQuoter</a> that fails with a helpful error message in every
--   context. It is intended to be modified to create a <a>QuasiQuoter</a>
--   that fails in all inappropriate contexts.
--   
--   For example, you could write
--   
--   <pre>
--   myExpressionQQ = defaultQuasiQuoter
--     { quoteExp = ... }
--   </pre>
--   
--   See also <a>namedDefaultQuasiQuoter</a>, which names the
--   <a>QuasiQuoter</a> in the error messages.
defaultQuasiQuoter :: QuasiQuoter
data Q a
data Exp
data Pat
data Type
data Dec
