At this point, we should remind ourselves that these intended
meanings do not stop us from constructing seemingly nonsensical
expressions such as .
At first sight, it seems strange that we should try to embark on a syntax for functions in which there is no notion of ``type''. However, untyped formalisms are familiar to us
The point is that we have a syntax for representing data (sets, bit strings) and we have rules for manipulating these representations. Some representations are more meaningful than others, but the manipulation rules can be applied uniformly to both the meaningful and the meaningless representations. All we ask is that if the original data represents a meaningful value, then, after manipulation, it still represents a meaningful value.
A similar view is taken in the lambda calculus--for instance
represents application if the structure of the expression
corresponds to a ``function''. Otherwise, we don't care what this
construction means (e.g., if
is
, as describe earlier).