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


    Date: Wed, 2 Nov 88  15:17:04 CST
    From: David N Gray <Gray@DSG.csc.ti.com>

    Consider the function ED.  It is a standard way to invoke an editor; the
    ED function is specified without having to define a standard editor; the
    function is simply a way to invoke whatever editor the implementation
    provides.  Similarly, (REQUIRE "FOO") should be defined as a standard way
    to invoke whatever module loading feature the implementation provides.
    You don't have to standardize how it is done in order to standardize how
    to ask it to be done.

There is a major difference between ED and REQUIRE in this respect.

ED is an environmental feature which is very unlikely to be used by a
program (i.e. while a program may well call ED to put the user in the
editor, it is very unlikely that a program will call ED, then try to
talk to the editor itself).

REQUIRE is intended to be built into programs.  A non-loading REQUIRE
can be used as a portable safety net per JonL's comments.  A loading
REQUIRE is a very powerful (and valuable) file inclusion directive.
Most users of the implementation will come to depend on REQUIRE to
load files in multi-file applications.  This will tend to cause any
program from an implementation with a loading REQUIRE to fail to port
to non-loading implementations.  The triviality of the porting bugs
will be inversely proportional to the sophistication of the
implementation's REQUIRE.

In summary I claim that a loading REQUIRE has two unacceptable traits:
 - People will use and depend on the loading feature.
 - This will make REQUIRE an obstacle to portable code.

Therefore, I oppose any proposal that allows REQUIRE to load files.
If we're going to make the feature non-portable we should remove it
 from the portable language so that users of powerful implementations
will not be unnecessarily misled by the standard.  However, if the
people in this committee feel that we should vote on all three
alternatives (ELIMINATE, DECLARATIVE, and STATUS-QUO), I'll write them
all up.