[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 file that can
be processed by the
  implementation.
  Semantics
2 A preprocessing directive of the form
     # include <h-char-sequence> new-line
  searches a sequence of implementation-defined places for a header
identified uniquely by
  the specified sequence between the < and > delimiters, and causes the
replacement of that
  directive by the entire contents of the header. How the places are
specified or the header
  identified is implementation-defined.

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.