Safe Haskell | None |
---|---|
Language | Haskell2010 |
WARNING: This module is an experiment to see how MonadPlus
may be encoded.
The authors are not aware of any generalized monads that make use of MonadPlus
.
Hence, we do not know if this encoding of it is sufficient.
Therefore, the encoding is not in its final form and may change in the future.
- class AlternativeEmpty m => MonadPlusZero m where
- type MonadPlusZeroCts m a :: Constraint
- class AlternativeAlt f g h => MonadPlusAdd f g h where
- type MonadPlusAddCts f g h a :: Constraint
Documentation
class AlternativeEmpty m => MonadPlusZero m where Source #
The encoding of the mzero
operation.
Return
is not a superclass, because the indices or constraints involved
in an MonadPlusZero
instance may differ from those involved with the Return
instance.
WARNING: This module is an experiment to see how MonadPlus
may be encoded.
The authors are not aware of any generalized applicatives that make use of MonadPlus
.
Hence, we do not know if this encoding of it is sufficient.
Therefore, the encoding is not in its final form and may change in the future.
type MonadPlusZeroCts m a :: Constraint Source #
mzero :: MonadPlusZeroCts m a => m a Source #
MonadPlusZero [] Source # | |
MonadPlusZero Maybe Source # | |
MonadPlusZero IO Source # | |
MonadPlusZero Option Source # | |
MonadPlusZero STM Source # | |
MonadPlusZero ReadPrec Source # | |
MonadPlusZero ReadP Source # | |
MonadPlusZero (U1 *) Source # | |
MonadPlusZero (Proxy *) Source # | |
MonadPlusZero f => MonadPlusZero (Rec1 * f) Source # | |
MonadPlusZero f => MonadPlusZero (Alt * f) Source # | |
(MonadPlusZero f, MonadPlusZero g) => MonadPlusZero ((:*:) * f g) Source # | |
(MonadPlusZero f, MonadPlusZero f') => MonadPlusZero (Product * f f') Source # | |
MonadPlusZero f => MonadPlusZero (M1 * i c f) Source # | |
class AlternativeAlt f g h => MonadPlusAdd f g h where Source #
The encoding of the mplus
operation
Bind
is not a superclass, because the indices or constraints involved
in an MonadPlusAdd
instance may differ from those involved with the Bind
instance.
WARNING: This module is an experiment to see how MonadPlus
may be encoded.
The authors are not aware of any generalized applicatives that make use of MonadPlus
.
Hence, we do not know if this encoding of it is sufficient.
Therefore, the encoding is not in its final form and may change in the future.
type MonadPlusAddCts f g h a :: Constraint Source #
mplus :: MonadPlusAddCts f g h a => f a -> g a -> h a Source #
MonadPlusAdd [] [] [] Source # | |
MonadPlusAdd Maybe Maybe Maybe Source # | |
MonadPlusAdd IO IO IO Source # | |
MonadPlusAdd Option Option Option Source # | |
MonadPlusAdd STM STM STM Source # | |
MonadPlusAdd ReadPrec ReadPrec ReadPrec Source # | |
MonadPlusAdd ReadP ReadP ReadP Source # | |
MonadPlusAdd (U1 *) (U1 *) (U1 *) Source # | |
MonadPlusAdd (Proxy *) (Proxy *) (Proxy *) Source # | |
MonadPlusAdd f g h => MonadPlusAdd (Rec1 * f) (Rec1 * g) (Rec1 * h) Source # | |
MonadPlusAdd f g h => MonadPlusAdd (Alt * f) (Alt * g) (Alt * h) Source # | |
(MonadPlusAdd f g h, MonadPlusAdd f' g' h') => MonadPlusAdd ((:*:) * f f') ((:*:) * g g') ((:*:) * h h') Source # | |
(MonadPlusAdd f g h, MonadPlusAdd f' g' h') => MonadPlusAdd (Product * f f') (Product * g g') (Product * h h') Source # | |
MonadPlusAdd f g h => MonadPlusAdd (M1 * i c f) (M1 * i c g) (M1 * i c h) Source # | |