LeechCraft 0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
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< std::optional< T > >
 
struct  LC::Util::InstanceMonad< Either< L, R > >
 

Namespaces

namespace  LC
 
namespace  LC::Util
 
namespace  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)