I would encourage readers to take a look at section 5, as it is _the_
new section of the R7RS, and as such deserves a closer look. It's only
a few pages long. Print the pages out and enjoy them over coffee.
I think the division of valid kinds of declarations as "variable
definitions, syntax definitions, or record-type definitions" is pretty
nasty.
The typesetting of the "rename" kind of import declaration would benefit
by a newline after <import set 1>.
In the paragraph Marc mentioned:
In a program or library declaration, it is an error to import the
same identifier more than once with different bindings, or to
redefine or mutate an imported binding with a definition or with
set!, or to refer to an identifier before it is imported.
How does one refer to an identifier before it is imported?
In 5.3.1, I think introducing `define' as `set!' is pretty wrong. I
would reverse the order of the presentation and treat the
existing-binding case as special.
In 5.3.2, it says:
An expanded body containing internal definitions (but not syntax
definitions or record definitions) can always be converted into a
completely equivalent letrec* _expression_.
The parenthetical statement is unnecessary, as an expanded body has no
syntax definitions.
Also it's not true, unfortunately! Because in the next section, "5.3.3
Multiple-value definitions", we see the introduction of `define-values'
with an optimistically short specification and no corresponding
expansion.
I think you _cannot_ introduce define-values without
`letrec-values' and `letrec*-values' and corresponding semantics
Finally, in 5.5, the lack of specification of whether the
record-type-descriptor is a syntactic or value binding is unfortunate, I
think. But OK!
_______________________________________________ Scheme-reports mailing list Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports