Note that R6RS doesn't have cond-expand but there are other ways (usually implementation-dependent) to get similar benefits (e.g. naming libraries ".chezscheme.sls" instead of ".sls", etc.).

cond-expand isn't in the standard, but there's a very portable implementation in chez-srfi.

The ".chezscheme.sls" trick also works but is not very convenient since the non-portable parts have to be split at a library granularity. cond-expand can be much finer-grained.

The mapping between library names and library representations (on the file system, for example), is also not standardized.

True.

This tells us that there will always be the need of some external glue code and that for truly portable libraries, cond-expand should be moved out of the libraries and put into the meta information of the package providing the library(s).

The chez-srfi cond-expand gives reasonable results in practice, but R7RS portability is still significantly easier.

Storing portability info in package metadata is also reasonable, but that is even more coarse-grained than the library level thing :)

Who tried to declare Racket as the standard Scheme implementation?

No-one declared anything; it just ended up as its own island with the biggest community, and is now debating how many remnants of Scheme to keep.

The words "portable" and "standard" don't have universally agreed upon meanings; e.g. some people are adamant that de facto standards are much more important than de jure standards; other people strongly think the opposite.

    The Smalltalk community has long had an interest in portable systems
    that reproduce exact behavior

R6RS also goes into this direction of portability. But it doesn't pay the price of not being that fast, given that one of the fastest Scheme implements R6RS.

Good point.

As a practical matter, most of the existing Scheme implementations are not geared up to achieve that kind of exact portability. It takes a lot of work, and the value is debated. SRFIs and R7RS in general do not strive for exact portability; a more informal design process would be even more forgiving about exactness.

In my experience the Scheme community is exceptionally good at getting details right, so we still tend to spend careful time on the parts where a uniform result really matters.

Reply via email to