sig
  type 'a t
  type ('a, 'b) op
  val apply : ('a, 'b) CCBatch.S.op -> 'CCBatch.S.t -> 'CCBatch.S.t
  val apply_fold :
    ('a, 'b) CCBatch.S.op -> ('-> '-> 'c) -> '-> 'CCBatch.S.t -> 'c
  val apply' : 'CCBatch.S.t -> ('a, 'b) CCBatch.S.op -> 'CCBatch.S.t
  val id : ('a, 'a) CCBatch.S.op
  val map : ('-> 'b) -> ('a, 'b) CCBatch.S.op
  val filter : ('-> bool) -> ('a, 'a) CCBatch.S.op
  val filter_map : ('-> 'b option) -> ('a, 'b) CCBatch.S.op
  val flat_map : ('-> 'CCBatch.S.t) -> ('a, 'b) CCBatch.S.op
  val extern : ('CCBatch.S.t -> 'CCBatch.S.t) -> ('a, 'b) CCBatch.S.op
  val compose :
    ('b, 'c) CCBatch.S.op -> ('a, 'b) CCBatch.S.op -> ('a, 'c) CCBatch.S.op
  val ( >>> ) :
    ('a, 'b) CCBatch.S.op -> ('b, 'c) CCBatch.S.op -> ('a, 'c) CCBatch.S.op
end