`Feat`

`module Enum : sig ... end`

This module offers a concrete data type `'a enum`

of **enumerations** of elements of type `'a`

. Suppose that every element of type `'a`

is implicitly assigned a certain size. Then, an enumeration is a function of an integer `s`

to the (implicit, finite) sequence of all elements whose size is `s`

.

`module IFSeq : sig ... end`

This module provides an abstract data type of **implicit, finite sequences**. An implicit sequence is not explicitly represented in memory as an actual sequence of elements: instead, it is *described* by a data structure which contains enough information to produce an arbitrary element upon request. This design decision imposes some constraints on the operations that can be efficiently supported: for instance, `filter`

is not supported.

`module Num : sig ... end`

This module implements a small set of operations on big integers.