The R7RS organizes the definitions from R5RS into modules, and also adds a few new definitions.
We do not attempt to document these libraries fully here, as unlike R6RS, there are few new definitions in R7RS relative to R5RS. Most of their functionality is already in Guile’s standard environment. Again, the expectation is that most Guile users will use the well-known and well-documented Guile modules; these R7RS libraries are mostly useful to users who want to port their code to other R7RS systems.
As a brief overview, we note that the libraries defined by the R7RS are as follows:
The core functions, mostly corresponding to R5RS minus the elements listed separately below, but plus SRFI-34 error handling (see SRFI-34), bytevectors and bytevector ports (see Bytevectors), and some miscellaneous other new procedures.
Converting strings and characters to upper or lower case, predicates for if a characer is numeric, and so on.
Constructors and accessors for complex numbers.
cadadr, and all that.
eval, but also an
environment routine allowing a user to
specify an environment using a module import set.
call-with-input-file and so on.
Routines that operate on inexact numbers:
and so on.
Environment variables. See SRFI-98. Also,
emergency-exit (like Guile’s
The precise set of bindings exported by
r5rs, but without
transcript-on, and also with the
auxiliary syntax definitions like
else. See Syntax Rules, for more on auxiliary syntax.
current-second, as well as
jiffies-per-second. Guile uses the term “internal time unit”
for what R7RS calls “jiffies”.
write, as well as
For complete documentation, we advise the interested user to consult the R7RS directly (see R7RS in The Revised^7 Report on the Algorithmic Language Scheme).