A Haskell program consists, basically, of a set of function definitions. Functions are
bound to names in a manner that looks very similar to variable assignment in other
languages. However, it really is not the same thing; a Haskell bound name is much more
similar to a binding in a mathematical proof, where we might say "Let tau refer to the