sig
  type _ t
  type _ f
  val traverse : ('a -> 'b f) -> 'a t -> 'b t f
  val traverse_ : ('a -> 'b f) -> 'a t -> unit f
  val sequence : 'a f t -> 'a t f
  val sequence_ : 'a f t -> unit f
end