8. R7RS standard libraries

The R7RS standard libraries are described by the R7RS (small) standard approved in 2013. The Predefined libraries section of this manual lists the names of those libraries.

Larceny provides all of the R7RS standard libraries, supports the full numeric tower, and can represent all Unicode characters.

Binary releases of Larceny also support Unicode strings. (When built from source code, Larceny can be configured to use Latin-1 strings instead of Unicode.)

When Larceny is invoked with the -r7r6 option on its command line, all of the standard R7RS and R6RS libraries are imported at startup. When invoked with the -r7rs option, only (scheme base) is imported at startup.

8.1. Known deviations from the R7RS standard

Larceny v0.99 does not implement these features of the R7RS standard:

  • include and include-ci at expression level

include and include-ci are fully supported at the top-level declaration and definition levels of R7RS libraries.

Larceny v0.99 does not allow libraries to define the names primitives or program. (Larceny reserves primitives as a keyword for importing identifiers from the R5RS global environment, and reserves program for no good reason.) Larceny does allow top-level programs to define those names.

To simplify interoperability with R6RS libraries and programs, the integer?, rational?, and real? procedures exported by (scheme base) have R6RS semantics. It is not clear whether that is fully compatible with the R7RS (small) standard, because the R7RS specification of those procedures appears to contradict itself.

If any other R7RS feature is missing or incompatible with the R7RS (small) standard, it's a bug.