miscellaneous
val period : int -> (int -> unit) -> unit -> unit
val timely : float -> ?first :float -> ('a -> unit) -> 'a -> unit
val timely_counter : float -> (int -> unit) -> unit -> unit
Combination of the above, see the code for more info.
Enum utilities
val all_uniq : ('a -> 'b ) -> 'a Enum.t -> bool
chunk_e n e
splits enum e
into chunks of n
elements each (except the last which can be shorter). NB the order in result is not specified
List utilities
val list_min : ?cmp :('a -> 'a -> int) -> 'a list -> 'a
find the minimum element in the list
val list_uniq : ('a -> 'b ) -> 'a list -> 'a list
val list_sorted_uniq : ('a -> 'a -> bool) -> 'a list -> 'a list
Get a random element from a list.
val slice : int -> int -> 'a list -> 'a list
extract sublist from a list, e.g. slice 1 3 [0;1;2;3;4]
will return [1;2;3]
.
Partitioning a list into chunks
val chunk : int -> 'a list -> 'a list list
chunk n l
splits list l
into chunks of n
elements each (except the last which can be shorter). NB the order in result is not specified FIXME?
val distribute : int -> 'a list -> 'a list array
distribute n l
splits l
into n
chunks, does not preserve the order of the elements.
val undistribute : 'a list array -> 'a list
val partition : int -> 'a list -> 'a list array
val unpartition : 'a list array -> 'a list
val stable_partition : int -> 'a list -> 'a list list
stable_partition l n
splits l
into n
chunks, preserves the order of the elements.
val stable_unpartition : 'a list list -> 'a list
Array utilities
val array_rfindi : ('a -> bool) -> 'a array -> int
val array_rfind : ('a -> bool) -> 'a array -> 'a
val array_iter_rev : ('a -> unit) -> 'a array -> unit
array_iter_rev f a
calls f
on each elements of a
in reverse order.
shuffle ?state a
shuffles an array, giving a uniform random distribution.
val binary_search' : 'a array -> ('a -> 'b -> int) -> 'b -> 'a option
val binary_search : 'a array -> ('a -> 'b -> int) -> 'b -> bool
val chunk_a : int -> 'a array -> 'a array list
chunk_a n a
splits array a
into chunks of n
elements each (except the last which can be shorter), preserving the order of elements, i.e. reverse operation is Array.concat
DynArray utilities
val quick_sort :
'a DynArray.t ->
?start :int ->
?n :int ->
('a -> 'a -> int) ->
unit
Hashtbl utilities
val hashtbl_find : ('a , 'b ) Hashtbl.t -> (unit -> 'b ) -> 'a -> 'b
hashtbl_find ht f_default k
associates f_default ()
to k
in ht
, if no previous association exists.
Gc / Memory utilities
Memory format parsing/pretty-printing
val parse_bytes_unit : string -> int
Parse memory size specification, accepts: MB KB 1MB 20gb
val show_bytes_unit : int -> string
Pretty-print memory size in a way that can be parsed back by parse_bytes_unit
Pretty-printing
val bytes_of_words : int -> int
val bytes_of_words_f : float -> float
val bytes_string : int -> string
short human-readable display for memory measures
val bytes_string_i64 : int64 -> string
val bytes_string_f : float -> string
val caml_words : int -> string
val caml_words_f : float -> string
string describing gc current settings.
val gc_show : string -> ('a -> 'b ) -> 'a -> 'b
val gc_settings : unit -> string
File IO
Counting bytes. Not closing underlying io.
Copy all data from input
to output
Extracting lines from a file.
val file_lines_exn : string -> string list
val file_lines : string -> string list
val make_config_lines : string list -> string list
read lines from file skipping empty lines and comments (lines starting with '#')
val config_lines_exn : string -> string list
val config_lines : string -> string list
Time utilities
Basic timer. Also allows recording a sequence of interesting times from the given start point. Can serialize recorded events to json (useful for Logstash events)
class timer : object ... end
Convenience wrapper to start timer_start with Time.now()
Timer running from the start of the program execution.
val speed : int -> float -> float
Log or time execution of a function
val log : ?name :string -> ('a -> unit) -> 'a -> unit
val log_do : ?name :string -> (unit -> unit) -> unit
Comparison
val compare_by : ('a -> 'b ) -> 'a -> 'a -> int
val compare2 :
('a -> 'b -> int) ->
('c -> 'd -> int) ->
('a * 'c ) ->
('b * 'd ) ->
int
val compare2_by : ('a -> 'b ) -> ('c -> 'd ) -> ('a * 'c ) -> ('a * 'c ) -> int
val compare_fst : ('a -> 'b -> 'c ) -> ('a * 'd ) -> ('b * 'e ) -> 'c
Benchmarking functions
val bench : ?compact :(unit -> unit) -> int -> (unit -> 'a ) -> string
val run_bench :
?compact :(unit -> unit) ->
int ->
(string * (unit -> 'a ) ) list ->
unit
Command-line arguments
Does not contains Sys.argv.(0).
Misc.
val shell_sequence : string list -> string list
name01 name02 name09 name10 name11
-> name0{1..2} name{09..11}
val hexdump : string -> string
type ewma = (float -> unit) * (unit -> float)
Exponential Weighted Moving Average (smooth) 0.05 < alpha < 0.15 (dynamic)
generates a string of n random bytes.
generates a string of n random ascii chars.