# Module `Fsq.Make`

`Make(K)`

is the fixed-size search queue with keys `K.t`

.

### Parameters

### Signature

`val empty : int -> t`

`empty max_size`

is the search queue with`max_size`

that contains no elements.

`val size : t -> int`

`size t`

is the number of distinct elements in`t`

.

`val push : k -> t -> t`

`push k t`

is`t`

with`k`

added to the queue. If the queue reached`max_size`

, the oldest element is`pop`

ped from the queue. If`k`

already exists in`t`

, no operation is performed

`val fold : (k -> int -> 'a -> 'a) -> 'a -> t -> 'a`

`fold f z t`

is`f k0 p0 (f k1 p1 ... (f kn pn z))`

. Elements are folded over in insertion order where p is the index of the element starting from 0.