In isolation, the definition of reduce is useless; it is the specialization of reduce to different datatypes that are useful. We will consider specializing reduce to the various datatypes introduced earlier; but, it should be pointed out that this is a purely mechanical process, which can (and should) be carried out by a compiler. We will go through it in detail to develop a little more intuition about how reduce works at each datatype.