sig
module type DATA =
sig
type t = { cnt : int; exp : float; }
val pp : Format.formatter -> Data.DATA.t -> unit
val show : Data.DATA.t -> string
end
module type S =
sig
module T : DATA
type t = T.t
val create : cnt:int -> exp:float -> Data.S.t
val count : Data.S.t -> int
val expect : Data.S.t -> float
val update :
cnt:int ->
exp:float ->
update_rule:Update_rules.Update_fn.t ->
prior_count:('a -> int) ->
prior_exp:('a -> float) -> 'a -> Data.S.t option -> Data.S.t
end
module Make :
functor (Data : DATA) ->
sig
module T :
sig
type t = Data.t = { cnt : int; exp : float; }
val pp : Format.formatter -> t -> unit
val show : t -> string
end
type t = T.t
val create : cnt:int -> exp:float -> t
val count : t -> int
val expect : t -> float
val update :
cnt:int ->
exp:float ->
update_rule:Update_rules.Update_fn.t ->
prior_count:('a -> int) ->
prior_exp:('a -> float) -> 'a -> t option -> t
end
end