Abstract
Software development often consists of designing datatypes around which functionality is
added. Some functionality is datatype specific, whereas other functionality is defined on
almost all datatypes in such a way that it depends only on the structure of the datatype.
A function that works on many datatypes in this way is called a
... read more