mpc
Haskell-like feature supports in C++
mpc::monads Namespace Reference

Methods deducible from other methods of monad . More...

Variables

constexpr partial< detail::fmap_opfmap {}
 fmap :: (a -> b) -> f a -> f b More...
 
constexpr partial< detail::seq_apply_opseq_apply {}
 seq_apply :: f (a -> b) -> f a -> f b More...
 
constexpr partial< detail::discard1st_opdiscard1st {}
 discard1st :: f a -> f b -> f b More...
 

Detailed Description

Methods deducible from other methods of monad .

Variable Documentation

◆ discard1st

constexpr partial<detail::discard1st_op> mpc::monads::discard1st {}
inlineconstexpr

discard1st :: f a -> f b -> f b

(*>) in Haskell

discard1st m1 m2 = m1 `bind` (constant m2)
constexpr partial< detail::bind_op > bind
bind :: forall a b. m a -> (a -> m b) -> m b
Definition: monad.hpp:45
constexpr partial< detail::constant_op > constant
Returns a unary function always returning the first input.
Definition: constant.hpp:21
constexpr partial< detail::discard1st_op > discard1st
discard1st :: f a -> f b -> f b
Definition: monad.hpp:109

◆ fmap

constexpr partial<detail::fmap_op> mpc::monads::fmap {}
inlineconstexpr

fmap :: (a -> b) -> f a -> f b

fmap f xs = xs `bind` (returns . f)
constexpr auto returns
returns :: a -> m a
Definition: monad.hpp:143
constexpr partial< detail::fmap_op > fmap
fmap :: (a -> b) -> f a -> f b
Definition: monad.hpp:103

◆ seq_apply

constexpr partial<detail::seq_apply_op> mpc::monads::seq_apply {}
inlineconstexpr

seq_apply :: f (a -> b) -> f a -> f b

(<*>) in Haskell

seq_apply mf xs = mf `bind` (\f -> xs `bind` (returns . f))
constexpr partial< detail::seq_apply_op > seq_apply
seq_apply :: f (a -> b) -> f a -> f b
Definition: monad.hpp:106