Akh Javascript Monad Library
Either Monad and Monad Transformer forThe EitherT transformer, EitherT
, adds either values to a monad. The base type, Either
, provides either computation logic on its own.
# To use as standalone package $ npm install --save akh.cont # To use as part of akh library $ npm install --save akh
Usage
The EitherT
and Either
implement the Fantasy Land monad, functor, and applicative functor interfaces.
// Either monadEitherEither // Either monad transformerEitherTEitherT
Either.run(m)
, m.run()
Perform a continuation computation m
and get the result as an Either
. Either
has a value
property plus either a left
or right
property to show its type
const Either = Either Either === right: true value: 4 Either === left: true value: -1
EitherT.run(t)
, t.run()
Same as Either.run
but for a monad transformer. Returns an Either
value inside of the inner monad.
Either.either(m, leftCallback, rightCallback)
, m.either(l, r)
Perform a continuation computation m
and invoke leftCallback
for left
results and rightCallback
for right
results.
const Either = Either const c = Either ; Either; // logs: -3
EitherT.either(t, leftCallback, rightCallback)
, t.either(l, r)
Same as Either.either
but for transformed types
Either Interface
Either.right(x)
EitherT(m).right(x)
Construct a right value.
This is the same as of
since right values are considered the normal case.
Either.left(x)
EitherT(m).left(x)
Construct a left value.
Left values are considered the error case and do not have map
or chain
applied to them.
const c = Eitherleft3 ; Either // errors: 3
Contributing
Contributions are welcome.
To get started:
$ cd akh-either$ npm install # install dev packages $ npm test # run tests