Void and the Function Types

Originally zero-argument, standard and unrestricted functions were built from primitive functions. The special value void was used to signal that the end of the arguments had been encountered. Then each function type would act accordingly. Zero-argument functions ignored a void value, however they would call their return values with any non-void argument they received. Standard functions simply returned themselves when passed void. Finally, unrestricted functions built a list of their arguments till void was encountered in which case they would execute their body. However, this system turned out to be invisible since no direct access to primitive functions would be provided. The only indicator was that it would be possible to trigger these actions through passing ,void as an argument. Yet void was essentially a useless value because of its affects on functions. This made the whole system, which was complex to implement seem pointless.

Resolution

This system was replaced by simply having different kinds of functions which the evaluator treated differently. This was much easier to implement. The value void (now the literal #void) was kept around to be returned when no value made sense.



jwalker@cs.oberlin.edu