Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
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')]
- newtype GeneratorT v m a = GeneratorT {
- runGeneratorT :: 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
Documentation
newtype GeneratorT v m a Source
A monad transformer to create List
s.
generate
transforms a "GeneratorT v m a" to a "ListT m a".
GeneratorT | |
|
MonadTrans (GeneratorT v) | |
Monad m => Monad (GeneratorT v m) | |
Monad m => Functor (GeneratorT v m) | |
Monad m => Applicative (GeneratorT v m) | |
MonadIO m => MonadIO (GeneratorT v m) |
generate :: Monad m => GeneratorT v m () -> ListT m v Source
yield :: Monad m => v -> GeneratorT v m () Source
breakGenerator :: Monad m => GeneratorT v m a Source