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


-- | HSX (Haskell Source with XML) allows literal XML syntax in Haskell source code.
--   
--   HSX (Haskell Source with XML) allows literal XML syntax in Haskell
--   source code. The trhsx preprocessor translates .hsx source files into
--   ordinary .hs files. Literal XML syntax is translated into function
--   calls for creating XML values of the appropriate forms. trhsx
--   transforms literal XML syntax into a series of function calls. Any
--   project can make use of the syntax by providing definitions for those
--   functions, and the XML values produced will be of the types specified.
--   This works for any types, since trhsx doesn't make any assumptions, or
--   inserts any information depending on types. XMLGenerator defines a few
--   typeclasses that together cover the functions injected by the
--   preprocessor. A project that uses these classes to provide the
--   semantics for the injected syntax will be able to use any functions
--   written in terms of these, allowing better code reusability than if
--   each project defines its own semantics for the XML syntax. Also, the
--   classes makes it possible to use the literal syntax at different types
--   within the same module. Achieving that is not as simple as it may
--   seem, but the XMLGenerator module provides all the necessary
--   machinery.
@package hsx2hs
@version 0.13.1


-- | Functions for transforming abstract Haskell code extended with regular
--   patterns into semantically equivalent normal abstract Haskell code. In
--   other words, we transform away regular patterns.
module Language.Haskell.HSX.Transform

-- | Transform away occurences of regular patterns from an abstract Haskell
--   module, preserving semantics.
transform :: Module -> Module

-- | Transform expressions by traversing subterms. Of special interest are
--   expressions that contain patterns as subterms, i.e. <tt>let</tt>,
--   <tt>case</tt> and lambda expressions, and also list comprehensions and
--   <tt>do</tt>-expressions. All other expressions simply transform their
--   sub-expressions, if any. Of special interest are of course also any
--   xml expressions.
transformExp :: Exp -> Exp
instance [overlap ok] Functor Tr
instance [overlap ok] Monad Tr
instance [overlap ok] Functor RN
instance [overlap ok] Monad RN
instance [overlap ok] Functor HsxM
instance [overlap ok] Monad HsxM

module Language.Haskell.HSX.QQ

-- | QuasiQuoter which can be used to parse HSX syntax
hsx :: QuasiQuoter
