of their `>>=` and `⇧`/`mid`. The general pattern is:
mapN (g : 'a1 -> ... 'an -> 'result) (u1 : 'a1 option) ... (un : 'an option) : 'result option =
- u1 >>= (fun x1 -> ... un >>= (fun xn -> ⇧ (g x1 ... xn)) ...)
+ u1 >>= (fun x1 -> ... un >>= (fun xn -> ⇧(g x1 ... xn)) ...)
Our above definitions of `map` and `mapN` were of this form, except we just
explicitly supplied the definition of `⇧` for the Option/Maybe monad (namely, in OCamlese, the constructor `Some`).