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


    But isn't that exactly the safety net? That is, if someone sends me a
    program where they expected PROVIDE and REQUIRE to load, and my
    implementation doesn't load, I'll try to load the files myself in the right
    order. If I get it wrong, I'll get an error message-- saved from making a
    mistake, thus a safety net.
While this is true, and useful in programs that consist of a few
files, it is much less useful with large, multi-directory programs.
Getting an error for (REQUIRE 'QX-DEFS) in a program that has 100
files spread across 15 directories (some with sub-directories) is
better than no immediate error, but less that helpful.  Admittedly,
most programs aren't this large, but some are and it's the large
programs that need help the most.

    I'm not sure how it harms rather than aids portability, since you also say
    that you expect vendors to provide their own version of it anyway.
But if PROVIDE and REQUIRE aren't in the standard, anyone who uses
them will know that they are dealing with non-portable constructs.
This will encourage people who want to write portable programs to
provide a truely portable means of getting them loaded correctly.

CLOS is an excellent example here.  As one of the largest public
portable Common Lisp programs, it includes its own portable DEFSTRUCT
_and_ its author supports removing PROVIDE and REQUIRE from the
language (if only to make people quit asking him to use them).