sig
  val maybe_tuppel :
    f:('a -> 'b -> 'c) ->
    fa:('a -> 'c) -> fb:('b -> 'c) -> 'a option -> 'b option -> 'c option
  val maybe_cmp : ('a -> 'a -> int) -> 'a option -> 'a option -> int
  val maybe_equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool
  val maybe_string : ('a -> string) -> 'a option -> string
  val bind :
    f1:('a -> bool option) ->
    f2:('b -> bool option) -> 'a -> 'b -> bool option
  val doo : ('a -> 'b) -> 'a option -> 'b option
end