mpc
Haskell-like feature supports in C++
monad.hpp File Reference
#include <functional>
#include <mpc/control/applicative.hpp>
#include <mpc/functional/partial.hpp>

Go to the source code of this file.

Classes

struct  mpc::detail::bind_op
 bind :: forall a b. m a -> (a -> m b) -> m b More...
 
struct  mpc::monads::detail::fmap_op
 fmap :: (a -> b) -> f a -> f b More...
 
struct  mpc::monads::detail::seq_apply_op
 seq_apply :: f (a -> b) -> f a -> f b More...
 
struct  mpc::monads::detail::seq_apply_op::closure
 
struct  mpc::monads::detail::discard1st_op
 discard1st :: f a -> f b -> f b More...
 
struct  mpc::detail::karrow_op
 karrow :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c) More...
 

Namespaces

namespace  mpc::detail
 Implementation details are here.
 
namespace  mpc::cpo
 Customization point objects are here.
 
namespace  mpc::monads
 Methods deducible from other methods of monad .
 

Concepts

concept  mpc::monad_traits_specialized
 monad_traits_specialized
 
concept  mpc::monad
 Requires applicative and bind is valid in monad_traits .
 

Variables

constexpr partial< detail::bind_op > mpc::cpo::bind {}
 bind :: forall a b. m a -> (a -> m b) -> m b More...
 
constexpr partial< detail::fmap_op > mpc::monads::fmap {}
 fmap :: (a -> b) -> f a -> f b More...
 
constexpr partial< detail::seq_apply_op > mpc::monads::seq_apply {}
 seq_apply :: f (a -> b) -> f a -> f b More...
 
constexpr partial< detail::discard1st_op > mpc::monads::discard1st {}
 discard1st :: f a -> f b -> f b More...
 
template<class M >
constexpr auto mpc::cpo::returns = mpc::pure<M>
 returns :: a -> m a More...
 
constexpr partial< detail::karrow_op > mpc::cpo::karrow {}
 karrow :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c) More...