sig val map : ('a -> 'b) -> 'a option -> 'b option val bind : ('a -> 'b option) -> 'a option -> 'b option val unsome : 'a -> 'a option -> 'a val equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool end