18 template<
typename Applicative>
21 template<
typename AF,
typename AV>
24 template<
template<
typename...>
class Applicative,
typename...
Args,
typename T>
30 template<
typename Applicative,
typename T>
36 template<
typename AF,
typename AV>
42 template<
typename AF,
typename AV>
61 using Type_t = std::optional<std::result_of_t<T (
const V&)>>;
65 static std::optional<U>
Pure (
const U&
v)
80 template<
typename L,
typename R>
100 template<
typename AV>
106 return R_t::Left (f.GetLeft ());
109 return R_t::Left (
v.GetLeft ());
111 return R_t::Right (f.GetRight () (
v.GetRight ()));
static Either Right(R &&r)
Container< T > Filter(const Container< T > &c, F f)
typename InstanceApplicative< AF >::template GSLResult< AV >::Type_t GSLResult_t
GSLResult_t< AF, AV > GSL(const AF &af, const AV &av)
auto operator*(const AF &af, const AV &av) -> decltype(GSL(af, av))
static Either< L, RP > Pure(const RP &v)
static GSLResult_t< Type_t, AV > GSL(const Type_t &f, const AV &v)
std::optional< std::result_of_t< T(const V &)> > Type_t
static std::optional< U > Pure(const U &v)
std::optional< T > Type_t
static GSLResult_t< Type_t, AV > GSL(const Type_t &f, const AV &v)