- : int option -> bool option = <fun>
Wherever we have a well-defined monad, we can define the `mapN` operations for them in terms
-of their `>>=` and `mid`. The general pattern is:
+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 -> mid (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 `mid` for the Option/Maybe monad (namely, in OCamlese, the constructor `Some`).
+explicitly supplied the definition of `⇧` for the Option/Maybe monad (namely, in OCamlese, the constructor `Some`).
If you substitute in the definition of `>>=`, you can see these are equivalent to:
map (g : 'a -> 'b) (u : 'a option) =