sig
  val get_exn : exn -> 'a option -> 'a
  val fold : ('-> '-> 'b) -> '-> 'a option -> 'b
  val map_fold : ('-> '-> 'a * 'b) -> '-> 'b option -> 'a * 'b option
end