feat(maybe): complete instance of applicative #116
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In order to complete the instance of Applicative, a method "apply" must
be added to the type. Technically, a Monad does not require an instance
of Applicative, but most modern functional languages and libraries
enforce this constraint due to the benefits derived when implementing
instances of other Categories. Particularly in the case of Maybe, this
instance is desirable due to the behavior of Maybes which wrap a
function. Because applying an undefined function to a value results in
an error, rather than undefined or null, mapping a function wrapped by
Maybe demands that the function be unwrapped and coerced to some
default before it can be used, or checking to see if it is defined. The
"apply" method allows a value wrapped by Maybe to be applied to a
function wrapped by Maybe.
Example: