module ReportStat:sig
..end
This module defines the types and functions related to statistics. All operations gracefully handle overflows by ensuring that:
max_int
is encoded by max_int
;min_int
is encoded by min_int
.type
single = {
|
mutable count : |
(* | Number of points actually visited. | *) |
|
mutable total : |
(* | Total number of points. | *) |
The type of statistics for a single point kind.
typeall =
(Common.point_kind * single) list
The type of statistics for all point kinds, encoded as an association list containing all points kinds in ascending order.
val make : unit -> all
Returns empty statistics for all point kinds.
All elements have both count
and total
set to zero.
val update : all -> Common.point_kind -> bool -> unit
update stats k b
updates stats
for point kind k
.
total
is always incremented, while count
is incremented
iff b
equals true
.
val summarize : all -> int * int
Returns a (count, total)
couple where count
and total
are
the sums of respectively all count
and all total
fields from
the passed statistics.
val add : all -> all -> all
add x y
returns the sum of statistics x
and y
.
val sum : all list -> all
sum l
is a fold over l
elements with function add
,
using the value returned by make
as the initial value.