\documentstyle{article}
\nofiles
\input{use-full-page}

\begin{document}

\title{The Zero-One-Infinity Principle}
\author{Gary T. Leavens \\
Department of Computer Science, Iowa State University}
\maketitle

\thispagestyle{empty}

Consider Figure 1.
\begin{figure}[h]
\vspace{3.5in}
\caption{A cartoon by Sidney Harris.}
\end{figure}
This cartoon, by Sidney Harris, illustrates a principle of linguistics
and anthropology: small numbers are much more common,
and thus words for small numbers are the first to be developed.
The 0-1-$\infty$ principle takes this idea one step further.
As a principle of language design, it embodies the idea that limitations
on the number of things that can occur in a language are hard to remember.
That is, if identifiers can only have 53 characters, that will be hard
to remember.
However, if identifiers can have any number of characters, that will be
easy to remember.

What do the numbers 0, 1, and $\infty$ mean in the name of the principle?
If a thing can occur zero times, it doesn't occur at all.
For example, in our version of LISP, a {\tt define} cannot occur
within an expression.
If a thing can occur once, it's just there, not in a list.
For example, in LISP, the body of a function definition can only contain
one expression.
Infinity means ``an arbitrary number'' of things, not literally an infinite
number of things.
(Certainly you would grow tired typing an infinite number of things
into a program.)
For example, within a {\tt begin} you may have any number of expressions.
The principle says that it would be a poor design if within a begin
you were limited to only 7 expressions.
Of course, computers are finite, so ``an arbitrary number'' is not quite
accurate either, because there will be some limitation;
the important thing is that it be large enough so that no one notices,
and also that the limit not be an intrinsic (defined) characteristic of
the language.
For example, in FORTRAN, the compiler was required to consider
the identifiers ABCDEFG and ABCDEFX to be identical,
since identifiers were only to be 6 characters long;
that violates the 0-1-$\infty$ principle.
\end{document}
