-- | 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
>>= :: forall (m :: * -> *) a b.
Monad m =>
m a -> (a -> Code m b) -> Code m b
(>>=) = forall (m :: * -> *) a b.
Monad m =>
m a -> (a -> Code m b) -> Code m b
bindCode
(>>) :: Monad m => m a -> Code m b -> Code m b
>> :: forall (m :: * -> *) a b. Monad m => m a -> Code m b -> Code m b
(>>)  = forall (m :: * -> *) a b. Monad m => m a -> Code m b -> Code m b
bindCode_