# Terminology

This is a short terminology glossary for the data layer and operations on it. See the rest of the guide for more in depth information.

abstract type

  An instance of a data-layer type, but we have no more information than that. If we knew exactly which type it was, we would have a concrete type.

concrete type

  One particular type, for example `CSR`. The “opposite” of this is an abstract type.

conversion

  A function which takes in one type and outputs another. For example, a function `csr_from_dense(dense_matrix)` would be a specialised conversion, and a function `csr_from_anything(matrix)` would be a general or abstract conversion.

dispatcher

  A instance of `Dispatcher`. This is a callable function that takes in abstract data-layer types and calls the closest concrete specialisation that it knows about after converting its inputs into the correct types.

specialisation

  A defined function which takes in a particular, concrete set of data-layer types and returns another concrete data-layer type. The user will typically never call these directly, they are only used directly within Cython code or indirectly from a dispatcher.