mpc
Haskell-like feature supports in C++
mpc::detail::karrow_op Struct Reference

karrow :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c) More...

#include <monad.hpp>

Public Member Functions

template<class Fn , class Gn , class A >
constexpr auto operator() (Fn &&fn, Gn &&gn, A &&a) const noexcept(noexcept(mpc::bind(std::invoke(std::forward< Fn >(fn), std::forward< A >(a)), std::forward< Gn >(gn)))) -> decltype(mpc::bind(std::invoke(std::forward< Fn >(fn), std::forward< A >(a)), std::forward< Gn >(gn)))
 

Detailed Description

karrow :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)

(>=>) in Haskell

karrow f g x = f x `bind` g
constexpr partial< detail::bind_op > bind
bind :: forall a b. m a -> (a -> m b) -> m b
Definition: monad.hpp:45
constexpr partial< detail::karrow_op > karrow
karrow :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
Definition: monad.hpp:146

The documentation for this struct was generated from the following file: