-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Python-generators notation for creation of monadic lists -- -- Generator monad transformer to create monadic lists in a manner -- similar to Python generators. @package generator @version 0.5.4 -- | A monad transformer for the creation of Lists. Similar to Python's -- generators. -- --
-- import Control.Monad.Identity (Identity(..))
-- import Data.List.Class (toList)
--
-- hanoi 0 _ _ _ = return ()
-- hanoi n from to other = do
-- hanoi (n-1) from other to
-- yield (from, to)
-- hanoi (n-1) other to from
--
-- > runIdentity . toList . generate $ hanoi 3 'A' 'B' 'C' :: [(Char, Char)]
-- [('A','B'),('A','C'),('B','C'),('A','B'),('C','A'),('C','B'),('A','B')]
--
module Control.Monad.Generator
-- | A monad transformer to create Lists. generate
-- transforms a GeneratorT v m a to a ListT m a.
newtype GeneratorT v m a
GeneratorT :: ContT v (ListT m) a -> GeneratorT v m a
runGeneratorT :: GeneratorT v m a -> ContT v (ListT m) a
generate :: Monad m => GeneratorT v m () -> ListT m v
yield :: Monad m => v -> GeneratorT v m ()
breakGenerator :: Monad m => GeneratorT v m a
instance MonadIO m => MonadIO (GeneratorT v m)
instance MonadTrans (GeneratorT v)
instance Monad m => Applicative (GeneratorT v m)
instance Monad m => Monad (GeneratorT v m)
instance Monad m => Functor (GeneratorT v m)