A structure for values that may not be available or computations that may fail.
A structure for values that may not be present, or computations that may
Maybe(a) explicitly models the effects that implicit in
types, thus has none of the problems associated with using
undefined — like
Furthermore, being a Monad,
Maybe(a) can be composed in manners similar to
other monads, by using the generic sequencing and composition operations
provided for the common interface in
var Maybe = require'data.maybe'// :: [a], (a -> Bool) -> Maybe(a)for var i = 0; i < collectionlength; ++ivar item = collectioniif predicateitem return MaybeJustitemreturn MaybeNothingvar numbers = -2 -1 0 1 2var a = findnumbers return a > 5var b = findnumbers return a === 0// Call a function only if both a and b// have values (sequencing)achainreturn bchaindoSomethingx y// Transform values only if they're available:amap return x + 1// => Maybe.Nothingbmap return x + 1// => Maybe.Just(1)// Use a default value if no value is presentaorElse return MaybeJust-1// => Maybe.Just(-1)borElse return MaybeJust-1// => Maybe.Just(0)
The easiest way is to grab it from NPM. If you're running in a Browser environment, you can use [Browserify]:
$ npm install data.maybe
If you're not using NPM, [Download the latest release][release], and require
var Maybe = require'data.maybe'
[Download the latest release][release], and require the
[Download the latest release][release], and load the
file. The properties are exposed in the global
If you want to compile this library from the source, you'll need [Git], [Make], [Node.js], and run the following commands:
$ git clone git://github.com/folktale/data.maybe.git $ cd data.maybe $ npm install $ make bundle
This will generate the
dist/data.maybe.umd.js file, which you can load in
You can [read the documentation online][docs] or build it yourself:
$ git clone git://github.com/folktale/data.maybe.git $ cd data.maybe $ npm install $ make documentation
Then open the file
docs/index.html in your browser.
This library assumes an ES5 environment, but can be easily supported in ES3 platforms by the use of shims. Just include [es5-shim] :)
Copyright (c) 2013 Quildreen Motta.
Released under the MIT licence.[Fantasy Land]: https://github.com/fantasyland/fantasy-land [Browserify]: http://browserify.org/ [Git]: http://git-scm.com/ [Make]: http://www.gnu.org/software/make/ [Node.js]: http://nodejs.org/ [es5-shim]: https://github.com/kriskowal/es5-shim [docs]: http://folktale.github.io/data.maybe [release]: https://github.com/folktale/data.maybe/releases/download/v1.2.0/data.maybe-1.2.0.tar.gz