sig
type ('a, 'b) sequenceable = {
to_seq : 'b -> 'a Sequence.t;
of_seq : 'a Sequence.t -> 'b;
}
type ('a, 'b) addable = { empty : 'b; add : 'b -> 'a -> 'b; }
type 'a monoid = ('a, 'a) Sequence.TypeClass.addable
type ('a, 'b) iterable = { iter : ('a -> unit) -> 'b -> unit; }
val sequenceable : ('a, 'a Sequence.t) Sequence.TypeClass.sequenceable
val iterable : ('a, 'a Sequence.t) Sequence.TypeClass.iterable
val monoid : 'a Sequence.t Sequence.TypeClass.monoid
val of_iterable :
('a, 'b) Sequence.TypeClass.iterable -> 'b -> 'a Sequence.t
val to_addable : ('a, 'b) Sequence.TypeClass.addable -> 'a Sequence.t -> 'b
end