sig
  type 'a t = Left of string | Right of 'a
  val fmap : ('-> 'b) -> 'a t -> 'b t
end