mpc
Haskell-like feature supports in C++
maybe.hpp File Reference
#include <functional>
#include <variant>
#include <mpc/control/alternative.hpp>
#include <mpc/control/monad.hpp>
#include <mpc/prelude.hpp>
#include <mpc/utility/alternative_value_t.hpp>
#include <mpc/utility/single.hpp>

Go to the source code of this file.

Classes

struct  mpc::nothing_t
 
struct  mpc::detail::is_maybe_impl< class >
 
struct  mpc::detail::is_maybe_impl< maybe< T > >
 
struct  mpc::functor_traits< maybe< T1 > >
 
struct  mpc::functor_traits< maybe< T1 > >::fmap_op
 fmap :: (a -> b) -> f a -> f b More...
 
struct  mpc::functor_traits< maybe< T1 > >::replace2nd_op
 replace2nd :: a -> f b -> f a More...
 
struct  mpc::monad_traits< maybe< T1 > >
 
struct  mpc::monad_traits< maybe< T1 > >::bind_op
 bind :: forall a b. m a -> (a -> m b) -> m b More...
 
struct  mpc::applicative_traits< maybe< T1 > >
 
struct  mpc::applicative_traits< maybe< T1 > >::pure_op
 pure :: a -> f a More...
 
struct  mpc::applicative_traits< maybe< T1 > >::seq_apply_op
 seq_apply :: f (a -> b) -> f a -> f b More...
 
struct  mpc::applicative_traits< maybe< T1 > >::liftA2_op
 liftA2 :: (a -> b -> c) -> f a -> f b -> f c More...
 
struct  mpc::alternative_traits< maybe< T1 > >
 
struct  mpc::alternative_traits< maybe< T1 > >::empty_op
 
struct  mpc::alternative_traits< maybe< T1 > >::combine_op
 

Namespaces

namespace  mpc::detail
 Implementation details are here.
 

Typedefs

template<class T >
using mpc::just_t = single< T, nothing_t >
 
template<class T >
using mpc::maybe = std::variant< nothing_t, just_t< T > >
 data Maybe a = Nothing | Just a
 

Functions

template<class T >
constexpr just_t< std::unwrap_ref_decay_t< T > > mpc::make_just (T &&t)
 

Variables

constexpr nothing_t mpc::nothing