The second part of a function definition is the actual computation of the function. In this
second part, often (but not always) some ad hoc variables are provided to the left of the
equal sign that are involved in the computation to the right. Unlike variables in C,
however--and much like variables in mathematics--the Haskell variables refer to the
exact same "unknown quantity" on both sides of the equal sign (not to a "container"
where a value is held).
It is also often possible to bypass explicit naming of variables entirely in function
definitions. In dubSqr2, it is enough to say that we should square whatever thing is
double'd. For this, there is no need to mention a variable name since the thing
dubSqr2'd is just whatever expression follows the bound name in later expressions. Of
course, double must itself take the same type of input dubSqr2 expects, and in turn
output the type of output square needs as input.