sig
  type ('a, 'b) t = ('a, 'b) Cf_flow.cell Lazy.t
  and ('a, 'b) cell =
      P of 'b * ('a, 'b) Cf_flow.t
    | Q of ('-> ('a, 'b) Cf_flow.cell)
    | Z
  val nil : ('a, 'b) Cf_flow.t
  val nop : ('a, 'a) Cf_flow.t
  val filter : ('-> bool) -> ('a, 'a) Cf_flow.t
  val map : ('-> 'b) -> ('a, 'b) Cf_flow.t
  val optmap : ('-> 'b option) -> ('a, 'b) Cf_flow.t
  val listmap : ('-> 'b list) -> ('a, 'b) Cf_flow.t
  val seqmap : ('-> 'Cf_seq.t) -> ('a, 'b) Cf_flow.t
  val broadcast : ('a, 'b) Cf_flow.t list -> ('a, 'b) Cf_flow.t
  val mapstate : ('-> '-> 'a * 'c) -> '-> ('b, 'c) Cf_flow.t
  val machine :
    ('-> '-> ('a * 'Cf_seq.t) option) -> '-> ('b, 'c) Cf_flow.t
  module Op :
    sig
      val ( -*- ) :
        ('a, 'b) Cf_flow.t -> ('a, 'b) Cf_flow.t -> ('a, 'b) Cf_flow.t
      val ( -=- ) :
        ('a, 'b) Cf_flow.t -> ('b, 'c) Cf_flow.t -> ('a, 'c) Cf_flow.t
      val ( -&- ) :
        ('a, 'b) Cf_flow.t -> ('a, 'b) Cf_flow.t -> ('a, 'b) Cf_flow.t
      val ( -+- ) :
        ('a, 'b) Cf_flow.t ->
        ('c, 'd) Cf_flow.t ->
        (('a, 'c) Cf_either.t, ('b, 'd) Cf_either.t) Cf_flow.t
      val ( ~@ ) : ('a, 'a) Cf_flow.t -> ('a, 'a) Cf_flow.t
      val ( ~@< ) :
        (('a, 'b) Cf_either.t, ('a, 'c) Cf_either.t) Cf_flow.t ->
        ('b, 'c) Cf_flow.t
      val ( -@- ) :
        (('a, 'b) Cf_either.t, ('c, 'd) Cf_either.t) Cf_flow.t ->
        ('c, 'a) Cf_flow.t -> ('b, 'd) Cf_flow.t
    end
  val to_seq : (unit, 'a) Cf_flow.t -> 'Cf_seq.t
  val of_seq : 'Cf_seq.t -> ('b, 'a) Cf_flow.t
  val upcase : (char, char) Cf_flow.t
  val dncase : (char, char) Cf_flow.t
  val commute : ('a, 'b) Cf_flow.t -> 'Cf_seq.t -> 'Cf_seq.t
  val commute_string : (char, char) Cf_flow.t -> string -> string
  val drain : ('a, 'b) Cf_flow.t -> 'Cf_seq.t
  val flush : ('a, 'b) Cf_flow.t -> ('a, 'b) Cf_flow.t
  val ingestor : ('Cf_seq.t option, 'a) Cf_flow.t
  val transcode :
    ('Cf_seq.t option, 'b) Cf_flow.t -> 'Cf_seq.t -> 'Cf_seq.t
  module Transcode :
    sig
      val more :
        ('Cf_seq.t option, 'b) Cf_flow.t ->
        'Cf_seq.t -> 'Cf_seq.t * ('Cf_seq.t option, 'b) Cf_flow.t
      val last : ('Cf_seq.t option, 'b) Cf_flow.t -> 'Cf_seq.t
    end
  val readC : (('a, 'b) Cf_flow.t, 'a) Cf_cmonad.t
  val writeC : '-> (('b, 'a) Cf_flow.t, unit) Cf_cmonad.t
  val evalC : (('a, 'b) Cf_flow.t, unit) Cf_cmonad.t -> ('a, 'b) Cf_flow.t
  val readSC : ('a, ('b, 'c) Cf_flow.t, 'b) Cf_scmonad.t
  val writeSC : '-> ('b, ('c, 'a) Cf_flow.t, unit) Cf_scmonad.t
  val evalSC :
    ('a, ('b, 'c) Cf_flow.t, unit) Cf_scmonad.t -> '-> ('b, 'c) Cf_flow.t
end