ose flatten (map f)</code>, and vice-versa. For the purposes of this section, it's best to think of monads as functors that provide additional <code>pure</code> and <code>flatten</code> functions and satisfies the monoid laws.</p><h6 id="example"><a href="#example" class="anchor"></a>Example</h6><p>Here's an example of <a href="Bastet/Option/Monad/index.html"><code>Bastet.Option.Monad</code></a>:</p><pre><code class="ml"># let compose f g x = f (g x);;
val compose : ('a -&gt; 'b) -&gt; ('c -&gt; 'a) -&gt; '