When we first learn to add, we use concrete examples. Later on, we study
how to add two arbitrary numbers; that is, we form an abstraction of the
addition operation. Much later still, we learn to formulate abstractions
directly as expressions: expressions that compute the wage of some
employee, expressions that convert temperatures, or expressions
that determine the area of a geometric shape. In short, we initially go from
concrete examples to abstraction but eventually we learn to form
abstractions directly without thinking (much) about concrete instances.
In this section, we discuss a design recipe for creating abstractions from
concrete examples. Later, in sections~#secaprioriabs#28233>
and~#secdesignabstract1st#28234> we study additional approaches to
function abstraction.