mpc
Haskell-like feature supports in C++
stateT.hpp File Reference

Go to the source code of this file.

Classes

struct  mpc::StateT< S, M >
 newtype StateT s m a = StateT { runStateT :: s -> m (a,s) } More...
 
struct  mpc::detail::is_StateT_impl< class >
 
struct  mpc::detail::is_StateT_impl< StateT< S, M > >
 
struct  mpc::holding< StateT< S, M > >
 
struct  mpc::detail::make_StateT_op< S >
 
struct  mpc::detail::run_StateT_op
 
struct  mpc::monad_traits< StateT< S, M > >
 
struct  mpc::monad_traits< StateT< S, M > >::bind_op
 (>>=) :: forall a b. m a -> (a -> m b) -> m b More...
 
struct  mpc::monad_traits< StateT< S, M > >::bind_op::nested_closure
 
struct  mpc::monad_traits< StateT< S, M > >::bind_op::closure
 
struct  mpc::functor_traits< StateT< S, M > >
 
struct  mpc::functor_traits< StateT< S, M > >::fmap_op
 
struct  mpc::functor_traits< StateT< S, M > >::fmap_op::nested_closure
 
struct  mpc::functor_traits< StateT< S, M > >::fmap_op::closure
 
struct  mpc::applicative_traits< StateT< S, M > >
 
struct  mpc::applicative_traits< StateT< S, M > >::pure_op
 pure :: a -> f a More...
 
struct  mpc::applicative_traits< StateT< S, M > >::pure_op::closure
 
struct  mpc::detail::StateT_alternative_traits_empty< ST >
 
struct  mpc::detail::StateT_alternative_traits_empty< ST >
 
struct  mpc::detail::StateT_alternative_traits_empty< ST >::empty_op
 
struct  mpc::detail::StateT_alternative_traits_empty< ST >::empty_op::closure
 
struct  mpc::detail::StateT_alternative_traits_combine< ST >
 
struct  mpc::detail::StateT_alternative_traits_combine< ST >
 
struct  mpc::detail::StateT_alternative_traits_combine< ST >::combine_op
 
struct  mpc::detail::StateT_alternative_traits_combine< ST >::combine_op::closure
 
struct  mpc::alternative_traits< StateT< S, M > >
 
struct  mpc::monad_trans_traits< StateT< S, M > >
 
struct  mpc::monad_trans_traits< StateT< S, M > >::lift_op
 lift :: (Monad m) => m a -> t m a More...
 
struct  mpc::monad_trans_traits< StateT< S, M > >::lift_op::nested_closure
 
struct  mpc::monad_trans_traits< StateT< S, M > >::lift_op::closure
 
struct  mpc::monad_state_traits< StateT< S, M > >
 
struct  mpc::monad_state_traits< StateT< S, M > >::state_op
 
struct  mpc::detail::eval_StateT_op
 
struct  mpc::detail::exec_StateT_op
 
struct  mpc::detail::map_StateT_op
 
struct  mpc::detail::with_StateT_op
 

Namespaces

namespace  mpc::detail
 Implementation details are here.
 
namespace  mpc::cpo
 Customization point objects are here.
 

Typedefs

template<is_StateT ST>
using mpc::StateT_state_t = typename std::remove_cvref_t< ST >::state_type
 
template<is_StateT ST>
using mpc::StateT_monad_t = typename std::remove_cvref_t< ST >::monad_type
 
template<is_StateT ST>
using mpc::eval_StateT_t = decltype(mpc::fmap(fst, std::declval< StateT_monad_t< ST > >()))
 

Variables

template<class S >
constexpr partial< detail::make_StateT_op< S > > mpc::cpo::make_StateT {}
 
constexpr partial< detail::run_StateT_op > mpc::cpo::run_StateT {}
 
constexpr partial< detail::eval_StateT_op > mpc::cpo::eval_StateT {}
 
constexpr partial< detail::exec_StateT_op > mpc::cpo::exec_StateT {}
 
constexpr partial< detail::map_StateT_op > mpc::cpo::map_StateT {}
 
constexpr partial< detail::with_StateT_op > mpc::cpo::with_StateT {}