sig
  val ( let* ) : 'a option -> ('-> 'b option) -> 'b option
  val ( and* ) : 'a option -> 'b option -> ('a * 'b) option
  val ( let+ ) : 'a option -> ('-> 'b) -> 'b option
  val ( and+ ) : 'a option -> 'b option -> ('a * 'b) option
end