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


-- | Do notation for free
--   
--   Please see README.md
@package do-list
@version 1.0.1


-- | Construct monoids with do notation. For more information see
--   <a>https://github.com/tserduke/do-list#readme</a>.
module Data.DoMonoid

-- | The type shortcut.
type DoMonoid m = DoMonoidM m ()

-- | <a>DoMonoidM</a> is not a real instance of <a>Monad</a>,
--   <a>Applicative</a> or <a>Functor</a>. It pretends being them with a
--   phantom result type.
newtype DoMonoidM m r
DoM :: m -> DoMonoidM m r

-- | Unwrap the monoid.
runDoM :: DoMonoidM m r -> m
instance Data.String.IsString m => Data.String.IsString (Data.DoMonoid.DoMonoidM m r)
instance GHC.Show.Show m => GHC.Show.Show (Data.DoMonoid.DoMonoidM m r)
instance GHC.Read.Read m => GHC.Read.Read (Data.DoMonoid.DoMonoidM m r)
instance GHC.Classes.Ord m => GHC.Classes.Ord (Data.DoMonoid.DoMonoidM m r)
instance GHC.Classes.Eq m => GHC.Classes.Eq (Data.DoMonoid.DoMonoidM m r)
instance GHC.Base.Functor (Data.DoMonoid.DoMonoidM a)
instance GHC.Base.Applicative (Data.DoMonoid.DoMonoidM a)
instance GHC.Base.Monoid a => GHC.Base.Monad (Data.DoMonoid.DoMonoidM a)
instance GHC.Exts.IsList m => GHC.Exts.IsList (Data.DoMonoid.DoMonoidM m r)


-- | Construct lists with do notation. For more information see
--   <a>https://github.com/tserduke/do-list#readme</a>.
module Data.DoList

-- | The type shortcut.
type DoList a = DoListM a ()

-- | <a>DoListM</a> is not a real instance of <a>Monad</a>,
--   <a>Applicative</a> or <a>Functor</a>. It pretends being them with a
--   phantom result type.
newtype DoListM a r
DoList :: (DoMonoidM [a] r) -> DoListM a r

-- | Create a <a>DoList</a> holding a single item.
item :: a -> DoListM a r

-- | Convert from a list.
fromList :: [a] -> DoListM a r

-- | Convert to a list.
toList :: DoListM a r -> [a]
instance GHC.Base.Monad (Data.DoList.DoListM a)
instance GHC.Base.Applicative (Data.DoList.DoListM a)
instance GHC.Base.Functor (Data.DoList.DoListM a)
instance GHC.Show.Show a => GHC.Show.Show (Data.DoList.DoListM a r)
instance GHC.Read.Read a => GHC.Read.Read (Data.DoList.DoListM a r)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.DoList.DoListM a r)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.DoList.DoListM a r)
instance Data.String.IsString a => Data.String.IsString (Data.DoList.DoListM a r)
instance GHC.Exts.IsList (Data.DoList.DoListM a r)
