In general, it is not easy to define the whole confusion matrix
generically without knowing anything about the source data. For certain
elements however, it is possible. These instances are all defined on
newtypes in order to not create instances on generic data types like lists.