sig
  val ( |? ) : 'a option -> 'a -> 'a
  val ( >>= ) : 'a option -> ('a -> 'b option) -> 'b option
end