Phantom algebra interfaces
This modules provides the interface implemented by the core module, splits in smaller logical units.
There are intended to be used by people interested by the type-level interface but not by the simple OCaml implementation provided.
module type Core : sig ... endThe two following module types provide a definition for indices and their associated type-level values and the indexing and slicing functions.
module type Index : sig ... endmodule type Indexing : sig ... endmodule type Basic : sig ... endThe following functions are useful when writing higher functions of which the output depends on the dimension or the rank, or with input of arbitrary dimensions or ranks. Note that type errors often become atrocious in this use case
module type Rank : sig ... endmodule type Dim : sig ... endmodule type Matching : sig ... endmodule type Cloning : sig ... end
The module type S combines all previous interface together.
module type S : sig ... end