Parameter Monad.M

type 'a t
val protect : f:(unit -> 'a t) -> finally:(unit -> unit) -> 'a t

Like Exn.protect but lifted to M.