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

Go to the source code of this file.

Classes

struct  mpc::detail::empty_op< F >
 empty :: f a More...
 
struct  mpc::detail::combine_op
 combine :: f a -> f a -> f a More...
 

Namespaces

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

Concepts

concept  mpc::detail::has_alternative_traits_empty
 has_alternative_traits_empty
 
concept  mpc::detail::has_alternative_traits_combine
 has_alternative_traits_combine
 
concept  mpc::alternative_traits_specialized
 alternative_traits_specialized
 
concept  mpc::alternative
 Requires applicative and empty and combine is valid in alternative_traits .
 

Functions

template<class Fa , class Fb >
requires std::same_as<std::remove_cvref_t<Fa>, std::remove_cvref_t<Fb>>
constexpr auto mpc::operators::alternatives::operator|| (Fa &&fa, Fb &&fb) noexcept(noexcept(mpc::combine(std::forward< Fa >(fa), std::forward< Fb >(fb)))) -> decltype(mpc::combine(std::forward< Fa >(fa), std::forward< Fb >(fb)))
 combine :: f a -> f a -> f a More...
 

Variables

template<class F >
constexpr detail::empty_op< F > mpc::cpo::empty {}
 empty :: f a More...
 
constexpr partial< detail::combine_op > mpc::cpo::combine {}
 combine :: f a -> f a -> f a More...
 

Function Documentation

◆ operator||()

template<class Fa , class Fb >
requires std::same_as<std::remove_cvref_t<Fa>, std::remove_cvref_t<Fb>>
constexpr auto mpc::operators::alternatives::operator|| ( Fa &&  fa,
Fb &&  fb 
) -> decltype( mpc::combine(std::forward<Fa>(fa), std::forward<Fb>(fb)))
inlineconstexprnoexcept

combine :: f a -> f a -> f a

(<|>) in Haskell