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

Go to the source code of this file.

Classes

struct  mpc::detail::pure_op< F >
 pure :: a -> f a More...
 
struct  mpc::detail::seq_apply_op
 seq_apply :: f (a -> b) -> f a -> f b More...
 
struct  mpc::detail::liftA2_op
 liftA2 :: (a -> b -> c) -> f a -> f b -> f c More...
 
struct  mpc::detail::discard2nd_op
 discard2nd :: f a -> f b -> f a More...
 
struct  mpc::detail::discard1st_op
 discard1st :: f a -> f b -> f b More...
 
struct  mpc::applicatives::detail::fmap_op
 fmap :: (a -> b) -> f a -> f b More...
 
struct  mpc::applicatives::detail::liftA2_op
 liftA2 :: (a -> b -> c) -> f a -> f b -> f c More...
 
struct  mpc::applicatives::detail::discard1st_opt_op
 discard1st :: f a -> f b -> f b More...
 
struct  mpc::detail::liftA_op< N, std::index_sequence< Idx... > >
 A partial specialization of liftA. More...
 

Namespaces

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

Concepts

concept  mpc::applicative_traits_specialized
 applicative_traits_specialized
 
concept  mpc::applicative
 Requires functor and pure, seq_apply, liftA2, discard2nd and discard1st is valid in applicative_traits .
 

Variables

template<class F >
constexpr partial< detail::pure_op< F > > mpc::cpo::pure {}
 pure :: a -> f a More...
 
constexpr partial< detail::seq_apply_op > mpc::cpo::seq_apply {}
 seq_apply :: f (a -> b) -> f a -> f b More...
 
constexpr partial< detail::liftA2_op > mpc::cpo::liftA2 {}
 liftA2 :: (a -> b -> c) -> f a -> f b -> f c More...
 
constexpr partial< detail::discard2nd_op > mpc::cpo::discard2nd {}
 discard2nd :: f a -> f b -> f a More...
 
constexpr partial< detail::discard1st_op > mpc::cpo::discard1st {}
 discard1st :: f a -> f b -> f b More...
 
constexpr partial< detail::fmap_op > mpc::applicatives::fmap {}
 fmap :: (a -> b) -> f a -> f b More...
 
constexpr auto mpc::applicatives::seq_apply = mpc::liftA2 % identity
 seq_apply :: f (a -> b) -> f a -> f b More...
 
constexpr partial< detail::liftA2_op > mpc::applicatives::liftA2 {}
 liftA2 :: (a -> b -> c) -> f a -> f b -> f c More...
 
constexpr auto mpc::applicatives::discard2nd = mpc::liftA2 % constant
 discard2nd :: f a -> f b -> f a More...
 
constexpr auto mpc::applicatives::discard1st = mpc::liftA2 % (flip % constant)
 discard1st :: f a -> f b -> f b More...
 
constexpr partial< detail::discard1st_opt_op > mpc::applicatives::discard1st_opt {}
 discard1st :: f a -> f b -> f b More...
 
template<std::size_t N>
constexpr partial< detail::liftA_op< N > > mpc::cpo::liftA {}
 liftA :: Applicative f => (a -> b -> ... -> z) -> f a -> f b -> ... -> f z More...