LanguageExt.Core

LanguageExt.Core Traits Monads Monad

Contents

class MonadExtensions Source #

Monad module

Methods

method K<M, B> Bind <M, A, B> ( this K<M, A> ma, Func<A, K<M, B>> f) Source #

where M : Monad<M>

Monad bind operation

Parameters

type A

Initial bound value type

type B

Intermediate bound value type

param f

Monadic bind function

returns

M

method K<M, B> Bind <M, A, B> ( this K<M, A> ma, Func<A, Pure<B>> f) Source #

where M : Functor<M>

Monad bind operation

Parameters

type A

Initial bound value type

type B

Intermediate bound value type

param f

Monadic bind function

returns

M

method K<M, B> Bind <M, A, B> ( this K<M, A> ma, Func<A, K<IO, B>> f) Source #

where M : Monad<M>

Monad bind operation

Parameters

type A

Initial bound value type

type B

Intermediate bound value type

param f

Monadic bind function

returns

M

method K<M, C> SelectMany <M, A, B, C> ( this K<M, A> ma, Func<A, K<M, B>> bind, Func<A, B, C> project) Source #

where M : Monad<M>

Monad bind operation

Parameters

type A

Initial bound value type

type B

Intermediate bound value type

type C

Target bound value type

param bind

Monadic bind function

param project

Projection function

returns

M

method K<M, C> SelectMany <M, A, B, C> ( this K<M, A> ma, Func<A, Pure<B>> bind, Func<A, B, C> project) Source #

where M : Functor<M>

Monad bind operation

Parameters

type A

Initial bound value type

type B

Intermediate bound value type

type C

Target bound value type

param bind

Monadic bind function

param project

Projection function

returns

M

method K<M, C> SelectMany <M, A, B, C> ( this K<M, A> ma, Func<A, K<IO, B>> bind, Func<A, B, C> project) Source #

where M : Monad<M>

Monad bind operation

Parameters

type A

Initial bound value type

type B

Intermediate bound value type

type C

Target bound value type

param bind

Monadic bind function

param project

Projection function

returns

M

method K<M, A> Flatten <M, A> (this K<M, K<M, A>> mma) Source #

where M : Monad<M>

Monadic join operation

Parameters

type M

Monad trait

type A

Bound value type

param mma
returns

Joined monad

class MonadExtensions Source #

Monad module

Methods

method K<M, K<N, B>> BindT <M, N, A, B> (this K<M, K<N, A>> mna, Func<A, K<N, B>> f) Source #

where M : Functor<M>
where N : Monad<N>

Runs a monadic bind operation on the nested monads

If you're working with an inner monad that is concrete then you will first need to call KindT to cast the monad to a more general K version. This enables the T variant extensions (like BindT, `MapT, etc.) to work without providing excessive generic arguments all the way down the chain.

Parameters

type M

Outer monad trait

type N

Inner monad trait

type A

Input bound value

type B

Output bound value

param mna

Nested monadic value

param f

Bind function

returns

Mapped value

Examples

var mx = Seq<Option>(Some(1), Some(2), Some(3));

var ma = mx.KindT<Seq, Option, Option, int>() .BindT(a => Some(a + 1)) .MapT(a => a + 1); .AsT<Seq, Option, Option, int>();

method K<M, K<N, B>> BindT <M, N, A, B> (this K<M, K<N, A>> mna, Func<A, K<M, K<N, B>>> f) Source #

where M : Monad<M>
where N : Monad<N>, Traversable<N>

Runs a monadic bind operation on the nested monads

If you're working with an inner monad that is concrete then you will first need to call KindT to cast the monad to a more general K version. This enables the T variant extensions (like BindT, `MapT, etc.) to work without providing excessive generic arguments all the way down the chain.

Parameters

type M

Outer monad trait

type N

Inner monad trait

type A

Input bound value

type B

Output bound value

param mna

Nested monadic value

param f

Bind function

returns

Mapped value

Examples

var mx = Seq<Option>(Some(1), Some(2), Some(3));

var ma = mx.KindT<Seq, Option, Option, int>() .BindT(a => Seq(Some(a + 1))) .MapT(a => a + 1); .AsT<Seq, Option, Option, int>();

class Monad Source #

Monad module

Methods

method K<M, A> pure <M, A> (A value) Source #

where M : Monad<M>

method K<M, A> flatten <M, A> (K<M, K<M, A>> mma) Source #

where M : Monad<M>

method K<M, B> bind <M, A, B> (K<M, A> ma, Func<A, K<M, B>> f) Source #

where M : Monad<M>

method MB bind <M, MB, A, B> (K<M, A> ma, Func<A, MB> f) Source #

where MB : K<M, B>
where M : Monad<M>

method K<M, Unit> when <M> (K<M, bool> Pred, K<M, Unit> Then) Source #

where M : Monad<M>

When the predicate evaluates to true, compute Then

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

returns

Unit monad

method K<M, Unit> when <M> (K<M, bool> Pred, K<IO, Unit> Then) Source #

where M : Monad<M>

When the predicate evaluates to true, compute Then

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

returns

Unit monad

method K<M, Unit> when <M> (K<M, bool> Pred, Pure<Unit> Then) Source #

where M : Monad<M>

When the predicate evaluates to true, compute Then

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

returns

Unit monad

method K<M, Unit> unless <M> (K<M, bool> Pred, K<M, Unit> Then) Source #

where M : Monad<M>

When the predicate evaluates to false, compute Then

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

returns

Unit monad

method K<M, Unit> unless <M> (K<M, bool> Pred, K<IO, Unit> Then) Source #

where M : Monad<M>

When the predicate evaluates to false, compute Then

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

returns

Unit monad

method K<M, Unit> unless <M> (K<M, bool> Pred, Pure<Unit> Then) Source #

where M : Monad<M>

When the predicate evaluates to false, compute Then

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, K<M, A> Then, K<M, A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, K<M, A> Then, K<IO, A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, K<IO, A> Then, K<M, A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, K<IO, A> Then, K<IO, A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, K<M, A> Then, Pure<A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, Pure<A> Then, K<M, A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, Pure<A> Then, Pure<A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, Pure<A> Then, K<IO, A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

method K<M, A> iff <M, A> (K<M, bool> Pred, K<IO, A> Then, Pure<A> Else) Source #

where M : Monad<M>

Compute the predicate and depending on its state compute Then or Else

Parameters

type M

Monad

param Pred

Predicate

param Then

Computation

param Else

Computation

returns

Unit monad

interface Monad <M> Source #

where M : Monad<M>

Monad trait

Parameters

type M

Self referring trait

Methods

method K<M, B> Bind <A, B> (K<M, A> ma, Func<A, K<M, B>> f) Source #

method K<M, A> Flatten <A> (K<M, K<M, A>> mma) Source #

method K<M, B> Map <A, B> (Func<A, B> f, K<M, A> ma) Source #