-
Notifications
You must be signed in to change notification settings - Fork 32
DeprecatedR7RSSyntaxAndProcedures
The implementors of Larceny wish to support all relevant standards for Scheme.
We will, however, deprecate features whose inclusion within a standard we believe to have been unwise or wrong-headed.
The R7RS specification of these syntaxes reverts to the R5RS semantics in which the expanded body is wrapped within an implicit let
. Larceny's implementation of these syntaxes preserves the R6RS semantics in which the macro-expanded body is wrapped within an implicit begin
, which allows the syntax to expand into definitions that are spliced into any context that allows definitions. The R6RS semantics is more generally useful, but is not always equivalent to the R7RS semantics when the expanded body begins with one or more definitions. The deprecated semantics for these syntaxes can be obtained by importing the deprecated (srfi 147)
library or by using the -r7strict
command-line option.
R7RS-small speaks of the field names as identifiers, which is incompatible with SRFI 9, SRFI 131, and SRFI 99. This may seem to be a minor editing error in R7RS-small, but Alex Shinn (who chaired WG1) says the change was made deliberately in the incorrect technical belief that the generativity of R7RS record definitions forces field names to be identifiers rather than symbols. We assume WG2 will correct this mistake in R7RS-large. In the meantime, Larceny ignores this one-word error in R7RS-small, and will continue to implement R7RS define-record-type
in a way that makes it compatible with SRFI 9, SRFI 131, and SRFI 99.