Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- newtype SeqT m a = SeqT (Queue (m (Maybe (a, SeqT m a))))
- type Seq a = SeqT Identity a
- type Queue = MSeq FastTCQueue
- newtype MSeq s a = MSeq {
- getMS :: s (AsUnitLoop a) () ()
- data AsUnitLoop a b c where
- UL :: !a -> AsUnitLoop a () ()
- observeAllT :: Monad m => SeqT m a -> m [a]
- observeAll :: Seq a -> [a]
- observeT :: MonadFail m => SeqT m a -> m a
- observe :: Seq a -> a
- observeMaybeT :: Monad m => SeqT m (Maybe a) -> m (Maybe a)
- observeMaybe :: Seq (Maybe a) -> Maybe a
- module Control.Monad
- class MonadTrans (t :: (Type -> Type) -> Type -> Type) where
Documentation
Instances
MonadTrans SeqT Source # | |
Defined in Control.Monad.Logic.Sequence | |
Monad m => Monad (SeqT m) Source # | |
Monad m => Functor (SeqT m) Source # | |
Monad m => MonadFail (SeqT m) Source # | |
Defined in Control.Monad.Logic.Sequence | |
Monad m => Applicative (SeqT m) Source # | |
MonadIO m => MonadIO (SeqT m) Source # | |
Defined in Control.Monad.Logic.Sequence | |
Monad m => Alternative (SeqT m) Source # | |
Monad m => MonadPlus (SeqT m) Source # | |
Monad m => MonadLogic (SeqT m) Source # | |
Defined in Control.Monad.Logic.Sequence | |
Monad m => Semigroup (SeqT m a) Source # | |
Monad m => Monoid (SeqT m a) Source # | |
type Queue = MSeq FastTCQueue Source #
Based on the LogicT improvements in the paper, Reflection without Remorse. Code is based on the code provided in: https://github.com/atzeus/reflectionwithoutremorse
Note: that code is provided under an MIT license, so we use that as well.
MSeq | |
|
Instances
TASequence s => Functor (MSeq s) Source # | |
TASequence s => Foldable (MSeq s) Source # | |
Defined in Control.Monad.Logic.Sequence fold :: Monoid m => MSeq s m -> m # foldMap :: Monoid m => (a -> m) -> MSeq s a -> m # foldMap' :: Monoid m => (a -> m) -> MSeq s a -> m # foldr :: (a -> b -> b) -> b -> MSeq s a -> b # foldr' :: (a -> b -> b) -> b -> MSeq s a -> b # foldl :: (b -> a -> b) -> b -> MSeq s a -> b # foldl' :: (b -> a -> b) -> b -> MSeq s a -> b # foldr1 :: (a -> a -> a) -> MSeq s a -> a # foldl1 :: (a -> a -> a) -> MSeq s a -> a # elem :: Eq a => a -> MSeq s a -> Bool # maximum :: Ord a => MSeq s a -> a # minimum :: Ord a => MSeq s a -> a # | |
TASequence s => Traversable (MSeq s) Source # | |
TASequence s => Sequence (MSeq s) Source # | |
data AsUnitLoop a b c where Source #
UL :: !a -> AsUnitLoop a () () |
observeAllT :: Monad m => SeqT m a -> m [a] Source #
observeAll :: Seq a -> [a] Source #
module Control.Monad
class MonadTrans (t :: (Type -> Type) -> Type -> Type) where #
The class of monad transformers. Instances should satisfy the
following laws, which state that lift
is a monad transformation:
lift :: Monad m => m a -> t m a #
Lift a computation from the argument monad to the constructed monad.
Instances
MonadTrans SeqT Source # | |
Defined in Control.Monad.Logic.Sequence | |
MonadTrans (ErrorT e) | |
Defined in Control.Monad.Trans.Error |