LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
monad.h File Reference
#include <optional>
#include "typelist.h"
#include "applicative.h"
#include "either.h"
+ Include dependency graph for monad.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  LC::Util::InstanceMonad< T >
 
struct  LC::Util::InstanceMonad< std::optional< T > >
 
struct  LC::Util::InstanceMonad< Either< L, R > >
 

Namespaces

 LC
 
 LC::Util
 
 LC::Util::detail
 

Typedefs

template<typename MV , typename F >
using LC::Util::BindResult_t = typename InstanceMonad< MV >::template BindResult_t< F >
 

Functions

template<template< typename... > class Monad, typename... Args, typename V >
auto LC::Util::Return (const V &v)
 
template<template< typename... > class Monad, typename... Args1, typename... Args2>
constexpr bool LC::Util::detail::IsCompatibleMonadImpl (const Monad< Args1... > *, const Monad< Args2... > *, int)
 
template<typename T1 , typename T2 >
constexpr bool LC::Util::detail::IsCompatibleMonadImpl (const T1 *, const T2 *,...)
 
template<typename T >
constexpr T * LC::Util::detail::declptr () noexcept
 
template<typename T1 , typename T2 >
constexpr bool LC::Util::detail::IsCompatibleMonad ()
 
template<typename MV , typename F >
BindResult_t< MV, F > LC::Util::Bind (const MV &value, const F &f)
 
template<typename MV , typename F >
auto LC::Util::operator>> (const MV &value, const F &f) -> decltype(Bind(value, f))
 
template<typename MV >
auto LC::Util::Do (const MV &value)
 
template<typename MV , typename FHead , typename... FArgs>
auto LC::Util::Do (const MV &value, const FHead &fHead, const FArgs &... fArgs)