Language/Haskell/TH/CodeDo.hs

    -- | This module exists to work nicely with the QualifiedDo
    -- extension.
    -- @
    -- import qualified Language.Haskell.TH.CodeDo as Code
    -- myExample :: Monad m => Code m a -> Code m a -> Code m a
    -- myExample opt1 opt2 =
    --   Code.do
    --    x <- someSideEffect               -- This one is of type `M Bool`
    --    if x then opt1 else opt2
    -- @
    module Language.Haskell.TH.CodeDo((>>=), (>>)) where

    import Language.Haskell.TH.Syntax
    import Prelude(Monad)

    -- | Module over monad operator for 'Code'
    (>>=) :: Monad m => m a -> (a -> Code m b) -> Code m b
    (>>=) = bindCode
    (>>) :: Monad m => m a -> Code m b -> Code m b
    (>>)  = bindCode_