sig   type ('a, 'm) fg   type ('wrapped_type, 'a, 'm) wrap =       monoid:'m monoid -> measure:('-> 'm) -> 'wrapped_type   val empty : ('a, 'm) fg   val singleton : '-> ('a, 'm) fg   val cons : (('a, 'm) fg -> '-> ('a, 'm) fg, 'a, 'm) wrap   val snoc : (('a, 'm) fg -> '-> ('a, 'm) fg, 'a, 'm) wrap   val front : (('a, 'm) fg -> (('a, 'm) fg * 'a) option, 'a, 'm) wrap   val front_exn : (('a, 'm) fg -> ('a, 'm) fg * 'a, 'a, 'm) wrap   val head : ('a, 'm) fg -> 'a option   val head_exn : ('a, 'm) fg -> 'a   val last : ('a, 'm) fg -> 'a option   val last_exn : ('a, 'm) fg -> 'a   val tail : (('a, 'm) fg -> ('a, 'm) fg option, 'a, 'm) wrap   val tail_exn : (('a, 'm) fg -> ('a, 'm) fg, 'a, 'm) wrap   val init : (('a, 'm) fg -> ('a, 'm) fg option, 'a, 'm) wrap   val init_exn : (('a, 'm) fg -> ('a, 'm) fg, 'a, 'm) wrap   val rear : (('a, 'm) fg -> (('a, 'm) fg * 'a) option, 'a, 'm) wrap   val rear_exn : (('a, 'm) fg -> ('a, 'm) fg * 'a, 'a, 'm) wrap   val size : ('a, 'm) fg -> int   val is_empty : ('a, 'm) fg -> bool   val fold_left : ('acc -> '-> 'acc) -> 'acc -> ('a, 'm) fg -> 'acc   val fold_right : ('acc -> '-> 'acc) -> 'acc -> ('a, 'm) fg -> 'acc   val iter : ('-> unit) -> ('a, 'm) fg -> unit   val iter_right : ('-> unit) -> ('a, 'm) fg -> unit   val compare : ('-> '-> int) -> ('a, 'm) fg -> ('a, 'm) fg -> int   val equal : ('-> '-> bool) -> ('a, 'm) fg -> ('a, 'm) fg -> bool   val enum : ('a, 'm) fg -> 'BatEnum.t   val backwards : ('a, 'm) fg -> 'BatEnum.t   val to_list : ('a, 'm) fg -> 'a list   val to_list_backwards : ('a, 'm) fg -> 'a list   val of_enum : ('BatEnum.t -> ('a, 'm) fg, 'a, 'm) wrap   val of_backwards : ('BatEnum.t -> ('a, 'm) fg, 'a, 'm) wrap   val of_list : ('a list -> ('a, 'm) fg, 'a, 'm) wrap   val of_list_backwards : ('a list -> ('a, 'm) fg, 'a, 'm) wrap   val map : (('-> 'b) -> ('a, 'm) fg -> ('b, 'm) fg, 'b, 'm) wrap   val map_right : (('-> 'b) -> ('a, 'm) fg -> ('b, 'm) fg, 'b, 'm) wrap   val append : (('a, 'm) fg -> ('a, 'm) fg -> ('a, 'm) fg, 'a, 'm) wrap   val reverse : (('a, 'm) fg -> ('a, 'm) fg, 'a, 'm) wrap   val print :     ?first:string ->     ?last:string ->     ?sep:string -> ('a, 'b) BatIO.printer -> (('a, 'c) fg, 'b) BatIO.printer   val lookup : (('-> bool) -> ('a, 'm) fg -> 'a, 'a, 'm) wrap   val measure : (('a, 'm) fg -> 'm, 'a, 'm) wrap   val split :     (('-> bool) -> ('a, 'm) fg -> ('a, 'm) fg * ('a, 'm) fg, 'a, 'm) wrap end