## Maybe
`Maybe` is a structure for values that may not be present or for situations that may fail. A `Maybe` can help in dealing with optional values, arguments, records with optional fields, etc.
**Implements:** [Alt](https://github.com/fantasyland/fantasy-land#alt), [Monad](https://github.com/fantasyland/fantasy-land#monad), [Semigroup](https://github.com/fantasyland/fantasy-land#semigroup), [Setoid](https://github.com/fantasyland/fantasy-land#setoid)
- [Maybe](#maybe)
- [Maybe.of(v)](#maybeofv)
- [Maybe.zero()](#maybezero)
- [Maybe.Just(v)](#maybejustv)
- [Maybe.Nothing()](#maybenothing)
- [Maybe.fromNullable(v)](#maybefromnullablev)
- [Maybe.withDefault(def, v)](#maybewithdefaultdef-v)
- [Maybe.catMaybes(ar)](#maybecatmaybesar)
- [Maybe.isNothing(v)](#maybeisnothingv)
- [Maybe.isJust(v)](#maybeisjustv)
- [Maybe.equals(n)](#maybeequalsn)
- [Maybe.map(f)](#maybemapf)
- [Maybe.chain(f)](#maybechainf)
- [Maybe.isNothing()](#maybeisnothing)
- [Maybe.isJust()](#maybeisjust)
- [Maybe.alt(v)](#maybealtv)
- [Maybe.ap(j)](#maybeapj)
- [Maybe.getValue()](#maybegetvalue)
### Maybe.of(v)
Creates a `Just v`.
| Param | Type | Description |
| ----- | ---------------- | ----------- |
| v | any | Value |
### Maybe.zero()
Creates a `Nothing`.
### Maybe.Just(v)
Creates a `Just v`.
| Param | Type | Description |
| ----- | ---------------- | ----------- |
| v | any | Value |
### Maybe.Nothing()
Creates a `Nothing`.
### Maybe.fromNullable(v)
Creates a `Just` if the value is not `null` or `undefined`; otherwise, creates a `Nothing`.
| Param | Type | Description |
| ----- | ---------------- | ----------- |
| v | any | Value |
### Maybe.withDefault(def, v)
Creates a `Just` if the value `v` is not `null` or `undefined`; otherwise, creates a `Just` with the default value `def`.
| Param | Type | Description |
| ----- | ---------------- | ------------- |
| def | any | Default value |
| v | any | Value |
### Maybe.catMaybes(ar)
A static method that takes an array of `Maybe` values and returns an array of the values of all the `Just` elements in the passed array.
| Param | Type | Description |
| ----- | ------------------------------ | ----------------------- |
| ar | Array.<any> | Array of `Maybe` values |
### Maybe.isNothing(v)
A static method that returns `true` if the passed `Maybe` is a `Nothing`.
| Param | Type | Description |
| ----- | ---------------- | ----------- |
| v | any | `Maybe` |
### Maybe.isJust(v)
A static method that returns `true` if the passed `Maybe` is a `Just`.
| Param | Type | Description |
| ----- | ---------------- | ----------- |
| v | any | `Maybe` |
### Maybe.equals(n)
Returns `true` if the current and the passed elements are of the `Maybe` type with the same value.
| Param | Type | Description |
| ----- | ---------------- | -------------------------- |
| n | any | Any value of type `Setoid` |
### Maybe.map(f)
Applies the passed function to the value of the current `Maybe` if it is a `Just`.
| Param | Type | Description |
| ----- | --------------------- | ----------- |
| f | function | Function |
### Maybe.chain(f)
Chains together many computations that return a `Maybe` type.
| Param | Type | Description |
| ----- | --------------------- | ------------------------------------- |
| f | function | Function that returns another `Maybe` |
### Maybe.isNothing()
Returns `true` if the current `Maybe` is a `Nothing`.
### Maybe.isJust()
Returns `true` if the current `Maybe` is a `Just`.
### Maybe.alt(v)
An instance method that returns the current `Maybe` if it is a `Just`; otherwise, returns the passed `Maybe`.
| Param | Type | Description |
| ----- | ---------------- | ----------- |
| v | any | `Maybe` |
### Maybe.ap(j)
Applies the function inside the passed `Maybe` to the current `Maybe` if it is a `Just`.
| Param | Type | Description |
| ----- | ---------------- | ----------------------- |
| j | any | `Maybe` with a function |
### Maybe.getValue()
Gets the value within the `Maybe`.