Type class laws defined for Monad.
This is an abstract definition. In order to use it in unit testing,
the implementor must think of a strategy to evaluate the truthiness
of the returned
Even though in TypeScript the Funfix library is using classes to
express these laws, when implementing this class it is recommended
that you implement it as a mixin using
implements, instead of extending
it directly with
for details and note that we already have
We are doing this in order to support multiple inheritance and to
avoid inheriting any
static members. In the Flow definitions (e.g.
.js.flow files) for Funfix these classes are defined with
interface, as they are meant to be interfaces that sometimes have
default implementations and not classes.
The Monad designated instance for
to be tested.
Mixed-in from ApplicativeLaws.applicativeComposition.
Mixed-in from ApplicativeLaws.applicativeHomomorphism.
Mixed-in from ApplicativeLaws.applyComposition.
Mixed-in from ApplicativeLaws.applicativeInterchange.
Mixed-in from ApplicativeLaws.applicativeMap.
Mixed-in from ApplicativeLaws.applicativeUnit.
Mixed-in from ApplyLaws.applyComposition.
Mixed-in from ApplyLaws.applyMap2Consistency.
Mixed-in from ApplyLaws.applyProductConsistency.
Mixed-in from FunctorLaws.covariantComposition.
Mixed-in from FunctorLaws.covariantIdentity.
Mixed-in from FlatMapLaws.flatMapAssociativity.
Mixed-in from FlatMapLaws.flatMapConsistentApply.
Mixed-in from FlatMapLaws.followedByConsistency.
Mixed-in from FlatMapLaws.followedByLConsistency.
Mixed-in from FlatMapLaws.forEffectConsistency.
Mixed-in from FlatMapLaws.forEffectLConsistency.
Mixed-in from FlatMapLaws.tailRecMConsistentFlatMap.
Generated using TypeDoc