Datatype-generic programming in the dependently typed setting can be achieved using the universe construction. The set of codes of the universe has an impact on the datatypes it can express and also on the set of supported datatype-generic functions.<br> For example a universe with a code for functions can express datatypes such as the Brouwer ordinals:<br><br> data Ord : Set where<br> zero : Ord<br> suc : Ord ! Ord<br> limit : (N ! Ord) ! Ord -- The function code is needed to -- describe limit.<br><br> It cannot support a meaningful datatype-generic decidable equality however, because generally equality of functions is undecidable. This problem often leads to the adaptation of several universes, for example one without a code for functions...