[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PROCLAIM [Gall: Bug Report]

        !section  9.1(12)   Nick Gall 85-03-19
        !version  Digital Press 1984
        !topic    Non-Top-Level use of PROCLAIM

        Some mention of the effects of the non-top-level use of PROCLAIM
        and the other proclaiming forms should be made.

    On p.66 it says that DEFVAR is not allowed elsewhere than top-level.
    PROCLAIM is the only function (rather than special form) that makes
    declarations, and presumably the declarations it makes when it is
    called take effect "immediately", but the exact definition of "immediately"
    might be implementation-dependent.  For example, it is implementation-
    dependent whether PROCLAIM affects interpreted functions that have already
    been defined.

I guess what really bothers me about the definition of proclaim
is the following sentence:

          This allows a program to compute a declaration and then
        put it into effect by calling proclaim. (pg. 156)

This encourages a style that is bound to bring out an
inconsistency in between the semantics assigned to a correct
program by the compiler and the interpreter.

Is there a STRONG reason for allowing run-time declares? If not,
I think the above sentence should be struck, and proclaim's usage
restricted to DEFVAR, etc., and top-level.