croma v0.4.5 Croma.Monad

This module defines an interface for monad.

Modules that use this module must provide concrete implementations of the following:

  • @type t(a)
  • @spec pure(a: a) :: t(a) when a: any
  • @spec bind(t(a), (a -> t(b))) :: t(b) when a: any, b: any

Using concrete implementations of the above interfaces, this module generates default implementations of some functions/macros. See Croma.Result for the generated functions/macros.