sig
type ('instance, 'bin, 'increment, 'accu) t =
('instance, 'bin, 'increment, 'accu) Biocaml_accu.t
val create :
?n:int -> 'd -> ('a -> 'b) -> ('c -> 'd -> 'd) -> ('a, 'b, 'c, 'd) t
val add : ('a, 'b, 'c, 'd) t -> 'a -> 'c -> unit
val stream : ('a, 'b, 'c, 'd) t -> ('b * 'd) Stream.t
val get : ('a, 'b, 'c, 'd) t -> 'b -> 'd option
type 'instance counter = ('instance, 'instance, int, int) t
module Counter :
sig
type 'a t = 'a counter
val create : ?n:int -> unit -> 'a t
val add : 'a counter -> 'a -> int -> unit
val tick : 'a counter -> 'a -> unit
val stream : 'a counter -> ('a * int) Stream.t
val of_stream : 'a Stream.t -> 'a counter
end
val counts : ('a -> 'b) -> 'a Stream.t -> ('b * int) Stream.t
val product :
?filter:('a -> 'b -> bool) ->
('a -> 'b -> 'c) -> 'a list -> 'b list -> ('c * int) Stream.t
type ('a, 'b) relation = ('a, 'a, 'b, 'b list) t
module Relation :
sig
type ('a, 'b) t = ('a, 'b) relation
val create : ?n:int -> unit -> ('a, 'b) t
val add : ('a, 'b) t -> 'a -> 'b -> unit
val stream : ('a, 'b) relation -> ('a * 'b list) Stream.t
val of_stream : ('a * 'b) Stream.t -> ('a, 'b) relation
end
val relation : ('a * 'b) Stream.t -> ('a * 'b list) Stream.t
end