This page is part of the web mail archives of SRFI 83 from before July 7th, 2015. The new archives for SRFI 83 contain all messages, not just those from before July 7th, 2015.
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.