[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: single vs. multi-sexp modules
Here's what the ISO C standard says about #include:
1 A #include directive shall identify a header or source ﬁle that can
be processed by the
2 A preprocessing directive of the form
# include <h-char-sequence> new-line
searches a sequence of implementation-deﬁned places for a header
identiﬁed uniquely by
the speciﬁed sequence between the < and > delimiters, and causes the
replacement of that
directive by the entire contents of the header. How the places are
speciﬁed or the header
identiﬁed is implementation-deﬁned.
In other words, it leaves it entirely implementation-defined how the
header names are interpreted, and where the referenced files are
stored. The only reason that different compiler vendors can share
common trees of header files and the associated libraries, as you
suggest Scheme systems should be able to, is that the vendor or
distribution establishes and documents a recommended practice. It's
not part of the language spec.
If you're concerned about it, you should do the same here: write up a
document (a SRFI?) that says, "Here is how we do things on Linux".
Write a separate one for OS-X, Windows, BeOS, whatever. You won't
have any recognized authority, but a carefully designed document
acquires its own authority. Try hard to get the big implementations
to participate in the discussion, and work hard on building a
consensus, since you haven't got any authority to enforce something
people don't like.
Scheme implementations aren't anywhere close to being able to share
pre-compiled files, since there's no agreement on what we compile to.
So the idea of an Application Binary Interface --- that users could
link code produced by different vendors' compilers --- doesn't apply
to us. We only need to share source code. So it's a much simpler
problem for us.