To focus the search input from anywhere on the page, press the 'S' key.

in-package search v0.1.0

Library

Module

Module type

Parameter

Class

Class type

Signature of mutable LRU maps.

Keys in `t`

.

Values in `t`

.

`val create : ?random:bool -> int -> t`

`create ?random cap`

is a new map with capacity `cap`

.

`~random`

randomizes the underlying hash table. It defaults to `false`

. See `Hashtbl.create`

.

**Note.** The internal hash table is created with size `cap`

.

`val is_empty : t -> bool`

`is_empty t`

is `true`

iff `t`

is empty.

`val items : t -> int`

`items t`

is the number of bindings in `t`

.

`val size : t -> int`

`size t`

is the combined weight of bindings in `t`

.

`val capacity : t -> int`

`capacity t`

is the maximum combined weight of bindings this map will hold before they start being discarded in least-recently-used order.

`val trim : t -> unit`

`trim t`

discards bindings from `t`

, if needed, until `size t <= capacity t`

. The bindings are discarded in least-recently-used order.

`val resize : int -> t -> unit`

`resize cap t`

changes the capacity of `t`

to `cap`

, while leavind the bindings unchanged.

## Access by `k`

`find k t`

is the `v`

bound to `k`

. When `k`

is not bound in `t`

, the result is `None`

.

If `promote`

is `true`

, the binding `k -> v`

is promoted to most-recently-used. It defaults to `true`

.

`add k v t`

adds the binding `k -> v`

to `t`

. If `k`

is alread bound, the old binding is replaced. The binding `k -> v`

becomes most-recently-used.

If `trim`

is `true`

, `add`

`trim`

s the resulting map, ensuring it is not over capacity. It defaults to `true`

.

## Access to least-recently-used bindings

`lru t`

is the least-recently-used binding in `t`

, or `None`

, when `t`

is empty.

`val drop_lru : t -> unit`

`drop_lru t`

removes the binding `lru t`

.

## Traversal direction

Traversal direction for operations that visit all bindings.

``Up`

means least-to-most recently used, or increasing relevance.``Down`

means most-to-least recently used, or decreasing relevance.

## Aggregate access

`fold f z t`

is `f k0 v0 (... (f kn vn z))`

.

`~dir`

controls the order of folding. Defaults to ``Up`

.

`iter f t`

applies `f`

to all the bindings in `t`

.

`~dir`

controls the order of application. Defaults to ``Up`

.

## Conversions

`to_list t`

are the bindings in `t`

. `~dir`

controls the order, defaults to ``Up`

.

`of_list kvs`

is a map with the bindings from `kvs`

. Its size and capacity are the total weight of its bindings.

With respect to duplicates and the recently-used order, it behaves as if the bindings were added sequentially in the list order.

## Pretty-printing

```
val pp :
?pp_size:(Format.formatter -> (int * int) -> unit) ->
?sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> (k * v) -> unit) ->
Format.formatter ->
t ->
unit
```