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:('-> int) ->
      prior_exp:('-> float) -> '-> t option -> t
  end