The Proliferation of Types

In the lambda calculus there are only functions. Better Scheme reasonably adds macros through mu. But why do we need all of the other types? Such as:

Some of these types exist only for convenience. Many others exist so that the evaluation function can handle them differently. Perhaps one can argue they are still just an illusion.

Types can be explained away by saying that these functions have some special behavior when passed a special argument. For example, one passes #<type> and the entity returns a symbol corresponding to its type. However, this is not a very satisfying answer.



jwalker@cs.oberlin.edu