ewriter that provides <em>do notation</em> sugar for <a href="Bastet/Interface/module-type-MONAD/index.html"><code>Bastet.Interface.MONAD</code></a>s. The rewriter expects a <code>Let_syntax</code> module to be in scope, which you can construct using <code>PPX_Let.Make</code>, like so:</p><pre><code class="ml"># #require &quot;fmt&quot;;;
# module OptionLet = PPX_Let.Make(Option.Monad);;
# let add_optionals = fun x y -&gt;
    let open OptionLet in
    let%bind x' = x in
    let%bind y' = y in
    Some (x' 