cat/monad

Monad type {minimal implementation - bind}.

Types

Monad type.

class Applicative f => Monad f where
  (>>=) :: m a -> (a -> m b) -> m b
pub opaque type Monad(ap, a, ma, mb)

Functions

pub fn apply(
  m: Monad(
    Applicative(Functor(a, b, c, d, e), b, f, d, e),
    b,
    g,
    h,
  ),
) -> fn(f) -> fn(d) -> e

Getter for Monad apply.

pub fn bind(
  m: Monad(
    Applicative(Functor(a, b, c, d, e), b, f, d, e),
    b,
    g,
    h,
  ),
) -> fn(g) -> fn(fn(b) -> h) -> h

Getter for Monad bind.

pub fn fmap(
  m: Monad(
    Applicative(Functor(a, b, c, d, e), b, f, d, e),
    b,
    g,
    h,
  ),
) -> fn(fn(b) -> c) -> fn(d) -> e

Getter for Monad fmap.

pub fn new(
  ap: fn() -> Applicative(Functor(a, b, c, d, e), b, f, d, e),
  return: fn(b) -> g,
  bind: fn(g) -> fn(fn(b) -> h) -> h,
) -> Monad(
  Applicative(Functor(a, b, c, d, e), b, f, d, e),
  b,
  g,
  h,
)

Smart constructor for Monad type.

pub fn pure(
  m: Monad(
    Applicative(Functor(a, b, c, d, e), b, f, d, e),
    b,
    g,
    h,
  ),
) -> fn(b) -> d

Getter for Monad pure.

pub fn return(
  m: Monad(
    Applicative(Functor(a, b, c, d, e), b, f, d, e),
    b,
    g,
    h,
  ),
) -> fn(b) -> g

Getter for Monad return.

Search Document