title: Maybe monad in JavaScript
body: <p>In the examples for monads.maybe on npm we have:</p>
  
  <pre><code>function find(collection, predicate) {
    for (var i = 0; i &lt; collection.length; ++i) {
      var item = collection[i]
      if (predicate(item))  return Maybe.Just(item)
    }
    return Maybe.Nothing()
  }
  </code></pre>
  
  <p>Can someone explain what <code>Maybe.Just(item);</code> and <code>Maybe.Nothing()</code> are actually doing?</p>
  
  <p>Put another way; are monads essentially objects used as return values that implement specific interfaces that enable the definition of a sequence of function invocations?</p>