sig
  type ('a, 'b) c = ('a -> 'b) -> 'b
  val ( >: ) : 'a -> (('b -> 'b) -> 'c -> 'a -> 'd) -> 'c -> 'd
  val map : ('a -> 'b) -> f:'a -> 'b
  val fold : (('a -> 'a) -> 'c) -> init:'b -> f:('b -> 'a -> 'b) -> 'b
  val iter : (('a -> 'a) -> 'b) -> f:('a -> unit) -> unit
  val length : (('a -> 'a) -> 'b) -> int
  val to_list : (('a -> 'a) -> 'b) -> 'a list
  val ( >>| ) : ('a -> 'b) -> 'a -> 'b
  val __ : ((('a -> 'b) -> 'a -> 'b) -> 'c) -> 'c
  val list : ('a -> 'b -> 'c) -> (('a -> 'b list -> 'c list) -> 'd) -> 'd
  val option :
    ('a -> 'b -> 'c) -> (('a -> 'b option -> 'c option) -> 'd) -> 'd
  val ok :
    ('a -> 'b -> 'c) ->
    (('a -> ('b, 'd) Core.Std.Result.t -> ('c, 'd) Core.Std.Result.t) -> 'e) ->
    'e
  val error :
    ('a -> 'b -> 'c) ->
    (('a -> ('d, 'b) Core.Std.Result.t -> ('d, 'c) Core.Std.Result.t) -> 'e) ->
    'e
  val string : (((char -> char) -> string -> string) -> 'a) -> 'a
end