Add contents of schemers.org-20230110.tgz
SHA1 b2ce2f884321b4e89eda5ecf4ad2914565c6da23
|
@ -0,0 +1,12 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Scheme Frequently Asked Questions</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
This document has <a href="http://community.schemewiki.org/?scheme-faq">
|
||||
moved to a Wiki</a>.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,9 @@
|
|||
This document has been turned into a formal SRFI.
|
||||
Please visit the URL
|
||||
|
||||
http://srfi.schemers.org/srfi-1/
|
||||
|
||||
instead.
|
||||
|
||||
Shriram Krishnamurthi
|
||||
shriram@schemers.org
|
|
@ -0,0 +1,168 @@
|
|||
Scheme Standardization
|
||||
|
||||
The following charter and standardization committees have been
|
||||
approved by the Scheme Strategy Committee. The Strategy Committee was
|
||||
formed by attendees of the Scheme Workshop in Pittsburgh, October
|
||||
2002. The draft charter and the committee-selection process were
|
||||
further confirmed by the attendees of the Scheme Workshop in Boston,
|
||||
November 2003.
|
||||
|
||||
|
||||
Strategy Committee:
|
||||
Alan Bawden
|
||||
William Clinger
|
||||
Kent Dybvig
|
||||
Matthew Flatt
|
||||
Richard Kelsey
|
||||
Manuel Serrano
|
||||
Michael Sperber
|
||||
|
||||
January 2004
|
||||
as amended, October 2004
|
||||
as amended, February 2006
|
||||
|
||||
|
||||
|
||||
Charter
|
||||
=======
|
||||
|
||||
Standardization Committees
|
||||
--------------------------
|
||||
|
||||
* Steering Committee
|
||||
|
||||
The creation of Scheme standards shall be governed by a Steering
|
||||
Committee that consists of three members. Its responsibility is to
|
||||
ensure that the standardization process continues, and to establish
|
||||
processes by which draft standards are reviewed and accepted by
|
||||
the Scheme community at large.
|
||||
|
||||
The Steering Committee must replace members who
|
||||
leave. Replacements must be selected within three months, and the
|
||||
Steering Committee must announce the replacement to the Scheme
|
||||
community at large. The Steering Committee itself shall establish
|
||||
procedures for replacing its members.
|
||||
|
||||
This charter can be amended only by a unanimous vote of the
|
||||
Steering Committee.
|
||||
|
||||
* Standard Editors
|
||||
|
||||
The creation of Scheme standards documents shall be governed by a
|
||||
committee of five Editors, including a Chair and a Project Editor. The
|
||||
Chair is responsible for organizing meetings and other activities and
|
||||
ensuring that the process makes progress in an orderly fashion. The
|
||||
Project Editor is responsible for producing standardization
|
||||
documents. None of the Editors may be a member of the Steering
|
||||
Committee.
|
||||
|
||||
When the Editors have produced a candidate standard, they present
|
||||
it to the Steering Committee for review and acceptance. The
|
||||
Steering Committee shall make no rule concerning the process by
|
||||
which a candidate standard is produced or revised, but Editors are
|
||||
encouraged to exploit the Scheme Request for Implementation (SRFI)
|
||||
process for gathering opinions and suggestions from the Scheme
|
||||
community at large.
|
||||
|
||||
The Steering Committee must replace Editors who leave. The
|
||||
replacements must be selected within three months, and the Steering
|
||||
Committee must announce the replacement to the Scheme community at
|
||||
large.
|
||||
|
||||
If an editor resigns, the Chair should notify the
|
||||
Steering Committee so that he may be replaced. The Chair
|
||||
may of course try to convince the editor to withdraw his
|
||||
resignation.
|
||||
|
||||
The Chair can request that an editor submit a letter of
|
||||
resignation, so long as such requests are made in good faith and
|
||||
for good cause.
|
||||
|
||||
If the Chair requests a letter of resignation from an
|
||||
editor, and the editor declines to resign, then the matter should
|
||||
be resolved by the Steering Committee. The Steering Committee may
|
||||
investigate and take whatever actions they deem necessary to
|
||||
resolve the matter up to, and including, the involuntary removal of
|
||||
one or more editors, possibly including the Chair.
|
||||
|
||||
|
||||
* Scheme Request for Implementation (SRFI) Editors
|
||||
|
||||
The Scheme Request for Implementation process shall remain the
|
||||
primary vehicle for language design and discussion by the Scheme
|
||||
community at large. SRFI standards shall be governed by the SRFI
|
||||
Editors, and shall not be governed or endorsed by the Steering
|
||||
Committee. Standard Editors are encouraged to draw on the SRFI
|
||||
process in developing Scheme standards.
|
||||
|
||||
|
||||
Recommended Timeline
|
||||
--------------------
|
||||
|
||||
The Steering Committee and Editors are ultimately responsible for the
|
||||
process of Scheme standardization. Nevertheless, as the intent of this
|
||||
charter is to make timely progress towards a standard, the following
|
||||
timeline and process suggestions (for a single round of standards) may
|
||||
serve as a benchmark for the actual process.
|
||||
|
||||
* Drafting
|
||||
|
||||
The Editors should produce a draft standard core Scheme, a draft
|
||||
module system, and a draft set of initial libraries within 24
|
||||
months of the Editors' establishment.
|
||||
|
||||
During these 24 months, the Editors are encouraged to produce short
|
||||
status reports every 6 months, posted at www.schemers.org. The
|
||||
Editors are also encouraged to solicit opinions on specific issues
|
||||
concerning the draft. The Editors are further encouraged to record
|
||||
electronic discussions and meeting minutes in a publicly readable
|
||||
archive.
|
||||
|
||||
If the Editors require more than 24 months to complete the draft,
|
||||
they are encouraged to report this as soon as possible to the
|
||||
Steering Committee. If the Editors determine they are unable to
|
||||
produce a draft, they should report this to the Steering Committee
|
||||
as soon as possible.
|
||||
|
||||
* Review
|
||||
|
||||
When the Editors finish the draft standards, they should provide
|
||||
the drafts to the Steering Committee, who should in turn publish
|
||||
the drafts on schemers.org.
|
||||
|
||||
After this, the members of the Steering Committee and the scheme
|
||||
community at large have 6 months to voice concerns, criticism, and
|
||||
suggestions for improving the drafts.
|
||||
|
||||
The Editors should attempt to respond to each voiced concern,
|
||||
detailing a rationale against a concern or indicating the way that
|
||||
the drafts will change to address a concern.
|
||||
|
||||
The editors are encouraged to publish numbered (or otherwise
|
||||
identified) intermediate revisions of the report during the review
|
||||
period, and announce them on schemers.org.
|
||||
|
||||
* Finalization
|
||||
|
||||
After the end of the review period, the Editors should submit new
|
||||
drafts within three months. The Steering Committee should then
|
||||
choose either to finalize the drafts or to restart the review
|
||||
process.
|
||||
|
||||
Current Steering Committee
|
||||
==========================
|
||||
|
||||
Alan Bawden
|
||||
Guy L. Steele
|
||||
Mitchell Wand
|
||||
|
||||
Current Editors
|
||||
===============
|
||||
|
||||
William D. Clinger
|
||||
R. Kent Dybvig
|
||||
Matthew Flatt
|
||||
Michael Sperber
|
||||
Anton van Straaten
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
--- charter.txt 2006/02/08 02:46:37 1.2
|
||||
+++ charter.txt 2006/02/08 09:46:27
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
January 2004
|
||||
as amended, October 2004
|
||||
+ as amended, February 2006
|
||||
|
||||
|
||||
|
||||
@@ -48,8 +49,10 @@
|
||||
* Standard Editors
|
||||
|
||||
The creation of Scheme standards documents shall be governed by a
|
||||
- committee of seven Editors, including Editor-in-Chief. The
|
||||
- Editor-in-Chief is responsible for producing standardization
|
||||
+ committee of five Editors, including a Chair and a Project Editor. The
|
||||
+ Chair is responsible for organizing meetings and other activities and
|
||||
+ ensuring that the process makes progress in an orderly fashion. The
|
||||
+ Project Editor is responsible for producing standardization
|
||||
documents. None of the Editors may be a member of the Steering
|
||||
Committee.
|
||||
|
||||
@@ -66,23 +69,21 @@
|
||||
Committee must announce the replacement to the Scheme community at
|
||||
large.
|
||||
|
||||
- <text added 10-04>
|
||||
- If an editor resigns, the Editor-in-Chief should notify the
|
||||
- Steering Committee so that he may be replaced. The Editor-in-Chief
|
||||
+ If an editor resigns, the Chair should notify the
|
||||
+ Steering Committee so that he may be replaced. The Chair
|
||||
may of course try to convince the editor to withdraw his
|
||||
resignation.
|
||||
|
||||
- The Editor-in-Chief can request that an editor submit a letter of
|
||||
+ The Chair can request that an editor submit a letter of
|
||||
resignation, so long as such requests are made in good faith and
|
||||
for good cause.
|
||||
|
||||
- If the Editor-in-Chief requests a letter of resignation from an
|
||||
+ If the Chair requests a letter of resignation from an
|
||||
editor, and the editor declines to resign, then the matter should
|
||||
be resolved by the Steering Committee. The Steering Committee may
|
||||
investigate and take whatever actions they deem necessary to
|
||||
resolve the matter up to, and including, the involuntary removal of
|
||||
- one or more editors, possibly including the Editor-in-Chief.
|
||||
- </text added 10-04>
|
||||
+ one or more editors, possibly including the Chair.
|
||||
|
||||
|
||||
* Scheme Request for Implementation (SRFI) Editors
|
||||
@@ -158,10 +159,8 @@
|
||||
Current Editors
|
||||
===============
|
||||
|
||||
- Marc Feeley (Editor in Chief)
|
||||
William D. Clinger
|
||||
R. Kent Dybvig
|
||||
Matthew Flatt
|
||||
- Richard Kelsey
|
||||
- Manuel Serrano
|
||||
Michael Sperber
|
||||
+ Anton van Straaten
|
||||
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
<html>
|
||||
|
||||
<!-- Time-stamp: <01/03/17 16:43:50 shriram> -->
|
||||
|
||||
<!--#include virtual="/Formats/ssi-config.shtml" -->
|
||||
|
||||
<title>schemers.org: Documents: Standards: A Charter for Change</title>
|
||||
|
||||
<!--#include virtual="/Formats/prefix.shtml" -->
|
||||
|
||||
<h3>A Charter for Change (R6RS)</h3>
|
||||
|
||||
<p>
|
||||
A draft version of R6RS is now available from
|
||||
<a href="http://www.r6rs.org/"><code>www.r6rs.org</code></a>.
|
||||
The charter provides for a six-month public comment period.
|
||||
The comment period is now open and will continue until March 15, 2007.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The R6RS editors asked for the following announcements to be included
|
||||
here:
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<ol>
|
||||
|
||||
<li>
|
||||
Shortly after we began our work, we created a mailing list for our
|
||||
discussions and agreed that the mailing list archive should be made
|
||||
public at some point after the R6RS was published. During our
|
||||
September 12, 2006 meeting, we voted to make the archive public
|
||||
immediately. It has taken us a while to get around to it, but the
|
||||
archive is now available at
|
||||
<a href="http://www.r6rs.org/r6rs-editors/"><code>http://www.r6rs.org/r6rs-editors/</code></a>.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
During our October 19, 2006 meeting, we committed to providing a
|
||||
formal response by December 15, 2006 to all formal comments submitted
|
||||
by November 15, 2006. The timing of our formal responses to formal
|
||||
comments submitted after that date will be decided at a later time.
|
||||
For more information on the formal review process, see
|
||||
<a href="http://www.r6rs.org/process.html"><code>http://www.r6rs.org/process.html</code></a>.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Also during our October 19th meeting, we committed to producing a new
|
||||
draft of the R6RS by January 15, 2007, which will take into account
|
||||
comments and suggestions made by November 15, 2006. LaTeX source code
|
||||
will also be provided for the drafts.
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
We appreciate the response to date from members of the Scheme community.
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>
|
||||
Status Report in June 2006:
|
||||
<a href="status-jun-2006/status-jun06.html">HTML</a>,
|
||||
<a href="status-jun-2006/status-jun06.pdf">PDF</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Updates in March 2006:
|
||||
<ul>
|
||||
<li>
|
||||
<a href="report-mar-2006.txt">Steering Committee Community Report</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="charter-mar-2006.txt">Updated Charter</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="diffs-2006-03-2004-10.diff">diffs</a>
|
||||
between October 2004 and March 2006 charters
|
||||
</li>
|
||||
<li>
|
||||
Editors' Progress Report:
|
||||
<a href="status-mar-2006.pdf">PDF</a>,
|
||||
<a href="status-mar-2006.html">HTML</a>
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="mar-2005.txt">Status Report</a> from March 2005.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="oct-2004.txt">Amended charter</a> from October 2004,
|
||||
with a <a href="2004-10-13.pdf">revised progress report
|
||||
on R6RS</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Original charter of <a href="jan-2004.txt">January 2004</a>.
|
||||
</p>
|
||||
|
||||
<!--#include virtual="/Formats/suffix.shtml" -->
|
||||
|
||||
</html>
|
|
@ -0,0 +1,146 @@
|
|||
Scheme Standardization
|
||||
|
||||
The following charter and standardization committees have been
|
||||
approved by the Scheme Strategy Committee. The Strategy Committee was
|
||||
formed by attendees of the Scheme Workshop in Pittsburgh, October
|
||||
2002. The draft charter and the committee-selection process were
|
||||
further confirmed by the attendees of the Scheme Workshop in Boston,
|
||||
November 2003.
|
||||
|
||||
|
||||
Strategy Committee:
|
||||
Alan Bawden
|
||||
William Clinger
|
||||
Kent Dybvig
|
||||
Matthew Flatt
|
||||
Richard Kelsey
|
||||
Manuel Serrano
|
||||
Michael Sperber
|
||||
|
||||
January 2004
|
||||
|
||||
|
||||
Charter
|
||||
=======
|
||||
|
||||
Standardization Committees
|
||||
--------------------------
|
||||
|
||||
* Steering Committee
|
||||
|
||||
The creation of Scheme standards shall be governed by a Steering
|
||||
Committee that consists of three members. Its responsibility is to
|
||||
ensure that the standardization process continues, and to establish
|
||||
processes by which draft standards are reviewed and accepted by
|
||||
the Scheme community at large.
|
||||
|
||||
The Steering Committee must replace members who
|
||||
leave. Replacements must be selected within three months, and the
|
||||
Steering Committee must announce the replacement to the Scheme
|
||||
community at large. The Steering Committee itself shall establish
|
||||
procedures for replacing its members.
|
||||
|
||||
This charter can be amended only by a unanimous vote of the
|
||||
Steering Committee.
|
||||
|
||||
* Standard Editors
|
||||
|
||||
The creation of Scheme standards documents shall be governed by a
|
||||
committee of seven Editors, including Editor-in-Chief. The
|
||||
Editor-in-Chief is responsible for producing standardization
|
||||
documents. None of the Editors may be a member of the Steering
|
||||
Committee.
|
||||
|
||||
When the Editors have produced a candidate standard, they present
|
||||
it to the Steering Committee for review and acceptance. The
|
||||
Steering Committee shall make no rule concerning the process by
|
||||
which a candidate standard is produced or revised, but Editors are
|
||||
encouraged to exploit the Scheme Request for Implementation (SRFI)
|
||||
process for gathering opinions and suggestions from the Scheme
|
||||
community at large.
|
||||
|
||||
The Steering Committee must replace Editors who leave. The
|
||||
replacements must be selected within three months, and the Steering
|
||||
Committee must announce the replacement to the Scheme community at
|
||||
large.
|
||||
|
||||
* Scheme Request for Implementation (SRFI) Editors
|
||||
|
||||
The Scheme Request for Implementation process shall remain the
|
||||
primary vehicle for language design and discussion by the Scheme
|
||||
community at large. SRFI standards shall be governed by the SRFI
|
||||
Editors, and shall not be governed or endorsed by the Steering
|
||||
Committee. Standard Editors are encouraged to draw on the SRFI
|
||||
process in developing Scheme standards.
|
||||
|
||||
|
||||
Recommended Timeline
|
||||
--------------------
|
||||
|
||||
The Steering Committee and Editors are ultimately responsible for the
|
||||
process of Scheme standardization. Nevertheless, as the intent of this
|
||||
charter is to make timely progress towards a standard, the following
|
||||
timeline and process suggestions (for a single round of standards) may
|
||||
serve as a benchmark for the actual process.
|
||||
|
||||
* Drafting
|
||||
|
||||
The Editors should produce a draft standard core Scheme, a draft
|
||||
module system, and a draft set of initial libraries within 24
|
||||
months of the Editors' establishment.
|
||||
|
||||
During these 24 months, the Editors are encouraged to produce short
|
||||
status reports every 6 months, posted at www.schemers.org. The
|
||||
Editors are also encouraged to solicit opinions on specific issues
|
||||
concerning the draft. The Editors are further encouraged to record
|
||||
electronic discussions and meeting minutes in a publicly readable
|
||||
archive.
|
||||
|
||||
If the Editors require more than 24 months to complete the draft,
|
||||
they are encouraged to report this as soon as possible to the
|
||||
Steering Committee. If the Editors determine they are unable to
|
||||
produce a draft, they should report this to the Steering Committee
|
||||
as soon as possible.
|
||||
|
||||
* Review
|
||||
|
||||
When the Editors finish the draft standards, they should provide
|
||||
the drafts to the Steering Committee, who should in turn publish
|
||||
the drafts on schemers.org.
|
||||
|
||||
After this, the members of the Steering Committee and the scheme
|
||||
community at large have 6 months to voice concerns, criticism, and
|
||||
suggestions for improving the drafts.
|
||||
|
||||
The Editors should attempt to respond to each voiced concern,
|
||||
detailing a rationale against a concern or indicating the way that
|
||||
the drafts will change to address a concern.
|
||||
|
||||
The editors are encouraged to publish numbered (or otherwise
|
||||
identified) intermediate revisions of the report during the review
|
||||
period, and announce them on schemers.org.
|
||||
|
||||
* Finalization
|
||||
|
||||
After the end of the review period, the Editors should submit new
|
||||
drafts within three months. The Steering Committee should then
|
||||
choose either to finalize the drafts or to restart the review
|
||||
process.
|
||||
|
||||
Current Steering Committee
|
||||
==========================
|
||||
|
||||
Alan Bawden
|
||||
Guy L. Steele
|
||||
Mitchell Wand
|
||||
|
||||
Current Editors
|
||||
===============
|
||||
|
||||
Marc Feeley (Editor in Chief)
|
||||
William D. Clinger
|
||||
R. Kent Dybvig
|
||||
Matthew Flatt
|
||||
Richard Kelsey
|
||||
Manuel Serrano
|
||||
Michael Sperber
|
|
@ -0,0 +1,97 @@
|
|||
The March 2005 R6RS Status Report
|
||||
=================================
|
||||
|
||||
Consolidation
|
||||
-------------
|
||||
|
||||
We have voted on a number of the decisions listed in the Revised R6RS
|
||||
Status Report. Among the minor but visible decisions made are:
|
||||
|
||||
- the addition of multi-line and S-expression comments
|
||||
- change to case-sensitive lexical syntax
|
||||
- add balanced square brackets as a synonym for parentheses
|
||||
- add LETREC*
|
||||
- specify internal DEFINE in terms of LETREC*
|
||||
- all datums will be serializable and obey read/write invariance
|
||||
|
||||
Unicode support
|
||||
---------------
|
||||
|
||||
We have written up a proposal for Unicode support that defines the
|
||||
notion of "char" to be a Unicode scalar value---strings are simply
|
||||
vectors of these scalar values. This allows Unicode support to be
|
||||
largely a conservative extension of the character and string processing
|
||||
in R5RS, and avoids the API problems inherent in using a UTF-16-based
|
||||
representation. Moreover, this approach has already been successfully
|
||||
implemented by several Scheme implementations.
|
||||
|
||||
Along with Unicode support, we are also considering extensions to the
|
||||
character and string literal syntax. Details are still under
|
||||
discussion.
|
||||
|
||||
Exception Handling
|
||||
------------------
|
||||
|
||||
An exception handling system has been proposed. Its design is based
|
||||
on SRFI 34, SRFI 35, with an added condition hierarchy for bugs, in
|
||||
addition to the hierarchy for errors that is part of SRFI
|
||||
35. It is too early to say if this proposal will be adopted as there
|
||||
are interactions with features that remain to be discussed
|
||||
|
||||
Numerical tower
|
||||
---------------
|
||||
|
||||
A subcommittee was formed with a mandate to propose revisions to the
|
||||
numerical tower to the whole committee. While the full proposal is
|
||||
not yet finished, the subcommittee believes that sets of operations
|
||||
for exact arithmetic and floating-point arithmetic should be separated
|
||||
out. The subcommittee is still debating the semantics of the generic
|
||||
numerical operations, and the issues connected to reading and writing
|
||||
external representations of numbers.
|
||||
|
||||
Module System
|
||||
-------------
|
||||
|
||||
The R6RS committee has put significant effort into the module system
|
||||
issue. Some members of the committee have written strawman proposals.
|
||||
However, the differences between these proposals is too large to allow
|
||||
for a simple unification of the systems. We have written up a summary
|
||||
with a discussion of the various issues, and how they relate to the
|
||||
various proposals.
|
||||
|
||||
In particular, the proposed module systems all address different sets
|
||||
of requirements, and hit very different spots on the design spectrum:
|
||||
presently it seems at least very difficult to address all different
|
||||
requirements with a single mechanism in the language.
|
||||
|
||||
Specifically, a module system akin to the one in Chez Scheme which is
|
||||
integrated with the core language, handles the manipulation of
|
||||
environments in a uniform manner, at the cost of complicating the
|
||||
static semantics of the language.
|
||||
|
||||
On the other hand, module systems like those of PLT Scheme, Scheme 48
|
||||
or Bigloo at least partly reside in a language that is separate from
|
||||
the core language, thus trading simplicity and easier processing of
|
||||
the module language for expressive power.
|
||||
|
||||
It would be nice to separate the concerns of environment manipulation
|
||||
and linking, both of which are in some degree part of all the proposed
|
||||
module systems. However, this is a technically difficult issue, and
|
||||
we expect that significant additional effort will be needed to resolve
|
||||
it. It seems probable that little progress can be made without
|
||||
significant additional compromise.
|
||||
|
||||
Records
|
||||
-------
|
||||
|
||||
We expect a system for defining record types to be part of R6RS, and
|
||||
are exploring the design space for such systems. Two concrete
|
||||
proposals have been written.
|
||||
|
||||
Procedural issues
|
||||
-----------------
|
||||
|
||||
A shared CVS archive has been set up to enable work on the actual
|
||||
document. We're also currently testing video-conferencing to allow
|
||||
interactive discussions.
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
Scheme Standardization
|
||||
|
||||
The following charter and standardization committees have been
|
||||
approved by the Scheme Strategy Committee. The Strategy Committee was
|
||||
formed by attendees of the Scheme Workshop in Pittsburgh, October
|
||||
2002. The draft charter and the committee-selection process were
|
||||
further confirmed by the attendees of the Scheme Workshop in Boston,
|
||||
November 2003.
|
||||
|
||||
|
||||
Strategy Committee:
|
||||
Alan Bawden
|
||||
William Clinger
|
||||
Kent Dybvig
|
||||
Matthew Flatt
|
||||
Richard Kelsey
|
||||
Manuel Serrano
|
||||
Michael Sperber
|
||||
|
||||
January 2004
|
||||
as amended, October 2004
|
||||
|
||||
|
||||
|
||||
Charter
|
||||
=======
|
||||
|
||||
Standardization Committees
|
||||
--------------------------
|
||||
|
||||
* Steering Committee
|
||||
|
||||
The creation of Scheme standards shall be governed by a Steering
|
||||
Committee that consists of three members. Its responsibility is to
|
||||
ensure that the standardization process continues, and to establish
|
||||
processes by which draft standards are reviewed and accepted by
|
||||
the Scheme community at large.
|
||||
|
||||
The Steering Committee must replace members who
|
||||
leave. Replacements must be selected within three months, and the
|
||||
Steering Committee must announce the replacement to the Scheme
|
||||
community at large. The Steering Committee itself shall establish
|
||||
procedures for replacing its members.
|
||||
|
||||
This charter can be amended only by a unanimous vote of the
|
||||
Steering Committee.
|
||||
|
||||
* Standard Editors
|
||||
|
||||
The creation of Scheme standards documents shall be governed by a
|
||||
committee of seven Editors, including Editor-in-Chief. The
|
||||
Editor-in-Chief is responsible for producing standardization
|
||||
documents. None of the Editors may be a member of the Steering
|
||||
Committee.
|
||||
|
||||
When the Editors have produced a candidate standard, they present
|
||||
it to the Steering Committee for review and acceptance. The
|
||||
Steering Committee shall make no rule concerning the process by
|
||||
which a candidate standard is produced or revised, but Editors are
|
||||
encouraged to exploit the Scheme Request for Implementation (SRFI)
|
||||
process for gathering opinions and suggestions from the Scheme
|
||||
community at large.
|
||||
|
||||
The Steering Committee must replace Editors who leave. The
|
||||
replacements must be selected within three months, and the Steering
|
||||
Committee must announce the replacement to the Scheme community at
|
||||
large.
|
||||
|
||||
<text added 10-04>
|
||||
If an editor resigns, the Editor-in-Chief should notify the
|
||||
Steering Committee so that he may be replaced. The Editor-in-Chief
|
||||
may of course try to convince the editor to withdraw his
|
||||
resignation.
|
||||
|
||||
The Editor-in-Chief can request that an editor submit a letter of
|
||||
resignation, so long as such requests are made in good faith and
|
||||
for good cause.
|
||||
|
||||
If the Editor-in-Chief requests a letter of resignation from an
|
||||
editor, and the editor declines to resign, then the matter should
|
||||
be resolved by the Steering Committee. The Steering Committee may
|
||||
investigate and take whatever actions they deem necessary to
|
||||
resolve the matter up to, and including, the involuntary removal of
|
||||
one or more editors, possibly including the Editor-in-Chief.
|
||||
</text added 10-04>
|
||||
|
||||
|
||||
* Scheme Request for Implementation (SRFI) Editors
|
||||
|
||||
The Scheme Request for Implementation process shall remain the
|
||||
primary vehicle for language design and discussion by the Scheme
|
||||
community at large. SRFI standards shall be governed by the SRFI
|
||||
Editors, and shall not be governed or endorsed by the Steering
|
||||
Committee. Standard Editors are encouraged to draw on the SRFI
|
||||
process in developing Scheme standards.
|
||||
|
||||
|
||||
Recommended Timeline
|
||||
--------------------
|
||||
|
||||
The Steering Committee and Editors are ultimately responsible for the
|
||||
process of Scheme standardization. Nevertheless, as the intent of this
|
||||
charter is to make timely progress towards a standard, the following
|
||||
timeline and process suggestions (for a single round of standards) may
|
||||
serve as a benchmark for the actual process.
|
||||
|
||||
* Drafting
|
||||
|
||||
The Editors should produce a draft standard core Scheme, a draft
|
||||
module system, and a draft set of initial libraries within 24
|
||||
months of the Editors' establishment.
|
||||
|
||||
During these 24 months, the Editors are encouraged to produce short
|
||||
status reports every 6 months, posted at www.schemers.org. The
|
||||
Editors are also encouraged to solicit opinions on specific issues
|
||||
concerning the draft. The Editors are further encouraged to record
|
||||
electronic discussions and meeting minutes in a publicly readable
|
||||
archive.
|
||||
|
||||
If the Editors require more than 24 months to complete the draft,
|
||||
they are encouraged to report this as soon as possible to the
|
||||
Steering Committee. If the Editors determine they are unable to
|
||||
produce a draft, they should report this to the Steering Committee
|
||||
as soon as possible.
|
||||
|
||||
* Review
|
||||
|
||||
When the Editors finish the draft standards, they should provide
|
||||
the drafts to the Steering Committee, who should in turn publish
|
||||
the drafts on schemers.org.
|
||||
|
||||
After this, the members of the Steering Committee and the scheme
|
||||
community at large have 6 months to voice concerns, criticism, and
|
||||
suggestions for improving the drafts.
|
||||
|
||||
The Editors should attempt to respond to each voiced concern,
|
||||
detailing a rationale against a concern or indicating the way that
|
||||
the drafts will change to address a concern.
|
||||
|
||||
The editors are encouraged to publish numbered (or otherwise
|
||||
identified) intermediate revisions of the report during the review
|
||||
period, and announce them on schemers.org.
|
||||
|
||||
* Finalization
|
||||
|
||||
After the end of the review period, the Editors should submit new
|
||||
drafts within three months. The Steering Committee should then
|
||||
choose either to finalize the drafts or to restart the review
|
||||
process.
|
||||
|
||||
Current Steering Committee
|
||||
==========================
|
||||
|
||||
Alan Bawden
|
||||
Guy L. Steele
|
||||
Mitchell Wand
|
||||
|
||||
Current Editors
|
||||
===============
|
||||
|
||||
Marc Feeley (Editor in Chief)
|
||||
William D. Clinger
|
||||
R. Kent Dybvig
|
||||
Matthew Flatt
|
||||
Richard Kelsey
|
||||
Manuel Serrano
|
||||
Michael Sperber
|
|
@ -0,0 +1,40 @@
|
|||
Scheme Language Steering Committee Report to the Community
|
||||
|
||||
March 1, 2006
|
||||
|
||||
Since the last report of the Steering Committee, a number of important
|
||||
changes have taken place.
|
||||
|
||||
First, Marc Feeley and Manuel Serrano have resigned from the Editors
|
||||
Committee. We have accepted their resignations with regret, and with
|
||||
gratitude for the efforts they have expended to produce a revised
|
||||
Scheme standard.
|
||||
|
||||
In light of these changes, the Steering Committee has amended the
|
||||
Charter to:
|
||||
|
||||
(a) change the number of Editors from seven to five.
|
||||
|
||||
(b) replace the office of Editor-in-Chief by a Chair and a Project
|
||||
Editor. The Chair is responsible for organizing meetings and other
|
||||
activities and ensuring that the process makes progress in an orderly
|
||||
fashion. The Project Editor is responsible for producing
|
||||
standardization documents.
|
||||
|
||||
The five editors have chosen their Chair and Project Editor. They
|
||||
are:
|
||||
|
||||
Chair: Kent Dybvig
|
||||
Project Editor: Mike Sperber
|
||||
|
||||
The Editors Committee has now produced a progress report, which is
|
||||
available at schemers.org. In it they state their intention to
|
||||
deliver to the Steering Committee a complete draft R6RS by September
|
||||
1, 2006.
|
||||
|
||||
The Steering Committee looks forward to receiving their draft.
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
body {background-color: #FFFFFF}
|
||||
|
||||
a:link, a:active, a:visited {color:blue}
|
||||
a:hover {color:white; background:blue}
|
||||
a.plain:link, a.plain:active, a.plain:visited {color:blue; text-decoration:none}
|
||||
a.plain:hover {color:white; text-decoration:none; background:blue}
|
||||
|
||||
table.indent {margin-left: 20px}
|
||||
|
|
@ -0,0 +1,677 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd"><!-- DO NOT EDIT THIS FILE-->
|
||||
<!-- Edit the .tex version instead-->
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>R6RS Status Report</title>
|
||||
<link href="status.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
|
||||
|
||||
<h1>R6RS Status Report</h1>
|
||||
<h2>Kent Dybvig, Will Clinger, Matthew Flatt, Mike Sperber, and Anton van Straaten</h2>
|
||||
<h3>February 24, 2006</h3>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<table cellpadding=0 cellspacing=0>
|
||||
|
||||
|
||||
|
||||
<tr><td align="right"><b>1. </b><td><b><a class=plain href="./status-mar-2006.html#g0">Overview<a name="sect:overview"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td align="right"><b>2. </b><td><b><a class=plain href="./status-mar-2006.html#g1">Guiding Principles<a name="sect:principles"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td align="right"><b>3. </b><td><b><a class=plain href="./status-mar-2006.html#g2">Decisions<a name="sect:decisions"></a></a></b></td></tr>
|
||||
|
||||
|
||||
<tr><td></td><td><table cellpadding=0 cellspacing=0>
|
||||
<tr><td><b>3.1. </b></td><td><b><a class=plain href="./status-mar-2006.html#g3">Structural changes</a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>3.2. </b></td><td><b><a class=plain href="./status-mar-2006.html#g4">Features eliminated</a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>3.3. </b></td><td><b><a class=plain href="./status-mar-2006.html#g5">Changes</a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>3.4. </b></td><td><b><a class=plain href="./status-mar-2006.html#g6">Features added</a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>3.5. </b></td><td><b><a class=plain href="./status-mar-2006.html#g7">Features to be added<a name="featurestobeadded"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>3.6. </b></td><td><b><a class=plain href="./status-mar-2006.html#g8">Reaffirmations</a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>3.7. </b></td><td><b><a class=plain href="./status-mar-2006.html#g9">Beyond R<sup>6</sup>RS</a></b></td></tr>
|
||||
|
||||
|
||||
</table></td></tr>
|
||||
<tr><td align="right"><b>4. </b><td><b><a class=plain href="./status-mar-2006.html#g10">Work in Progress<a name="sect:workinprogres"></a></a></b></td></tr>
|
||||
|
||||
|
||||
<tr><td></td><td><table cellpadding=0 cellspacing=0>
|
||||
<tr><td><b>4.1. </b></td><td><b><a class=plain href="./status-mar-2006.html#g11">Libraries<a name="progress:libraries"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>4.2. </b></td><td><b><a class=plain href="./status-mar-2006.html#g12">Records<a name="progress:records"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>4.3. </b></td><td><b><a class=plain href="./status-mar-2006.html#g13">Unicode<a name="progress:unicode"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>4.4. </b></td><td><b><a class=plain href="./status-mar-2006.html#g14">Arithmetic<a name="progress:arithmetic"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>4.5. </b></td><td><b><a class=plain href="./status-mar-2006.html#g15">Exceptions<a name="progress:exceptions"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>4.6. </b></td><td><b><a class=plain href="./status-mar-2006.html#g16">I/O<a name="progress:io"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>4.7. </b></td><td><b><a class=plain href="./status-mar-2006.html#g17">Macros<a name="progress:macros"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td><b>4.8. </b></td><td><b><a class=plain href="./status-mar-2006.html#g18">Other possible changes<a name="progress:miscellaneous"></a></a></b></td></tr>
|
||||
|
||||
|
||||
</table></td></tr>
|
||||
<tr><td align="right"><b>5. </b><td><b><a class=plain href="./status-mar-2006.html#g19">Completion Process<a name="sect:process"></a></a></b></td></tr>
|
||||
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g0"></a>
|
||||
|
||||
<h3><br><a name="./status:h0"></a>1. Overview<a name="sect:overview"></a></h3>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
This status report describes the current state of the R<sup>6</sup>RS
|
||||
standardization effort.
|
||||
It covers principles we have outlined to guide the effort,
|
||||
decisions we have made to date, our work in progress, and the process
|
||||
by which we intend to complete the R<sup>6</sup>RS.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g1"></a>
|
||||
|
||||
<h3><br><a name="./status:h1"></a>2. Guiding Principles<a name="sect:principles"></a></h3>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
To help guide the standardization effort, the editors have adopted a
|
||||
set of principles, presented below.
|
||||
They are, like R<sup>6</sup>RS itself, a work in progress and still subject
|
||||
to change.
|
||||
|
||||
<p>
|
||||
Like R<sup>5</sup>RS Scheme, R<sup>6</sup>RS Scheme should:
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>derive its power from simplicity, a small number of generally
|
||||
useful core syntactic forms and procedures, and no unnecessary
|
||||
restrictions on how they are composed;
|
||||
|
||||
<p>
|
||||
<li>allow programs to define new procedures and new hygienic
|
||||
syntactic forms;
|
||||
|
||||
<p>
|
||||
<li>support the traditional s-expression representation of program
|
||||
source code as data;
|
||||
|
||||
<p>
|
||||
<li>make procedure calls powerful enough to express any form of
|
||||
sequential control, and allow programs to perform non-local control
|
||||
operations without the use of global program transformations;
|
||||
|
||||
<p>
|
||||
<li>allow interesting, purely functional programs to run indefinitely
|
||||
without terminating or running out of memory on finite-memory
|
||||
machines;
|
||||
|
||||
<p>
|
||||
<li>allow educators to use the language to teach programming
|
||||
effectively, at various levels and with a variety of pedagogical
|
||||
approaches;
|
||||
and
|
||||
|
||||
<p>
|
||||
<li>allow researchers to use the language to explore the design,
|
||||
implementation, and semantics of programming languages.
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
In addition, R<sup>6</sup>RS Scheme should:
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>allow programmers to create and distribute substantial
|
||||
programs and libraries, e.g., SRFI implementations, that run
|
||||
without modification in a variety of Scheme implementations;
|
||||
|
||||
<p>
|
||||
<li>support procedural, syntactic, and data abstraction more fully
|
||||
by allowing programs to define hygiene-bending and hygiene-breaking
|
||||
syntactic abstractions and new unique datatypes along with
|
||||
procedures and hygienic macros in any scope;
|
||||
|
||||
<p>
|
||||
<li>allow programmers to rely on a level of automatic run-time type
|
||||
and bounds checking sufficient to ensure type safety while also
|
||||
providing a standard way to declare whether such checks are
|
||||
desired;
|
||||
and
|
||||
|
||||
<p>
|
||||
<li>allow implementations to generate efficient code, without requiring
|
||||
programmers to use implementation-specific operators or
|
||||
declarations.
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
In general, R<sup>6</sup>RS should include building blocks that allow a wide
|
||||
variety of libraries to be written, include commonly used user-level
|
||||
features to enhance portability and readability of library and application
|
||||
code, and exclude features that are less commonly used and easily
|
||||
implemented in separate libraries.
|
||||
|
||||
<p>
|
||||
R<sup>6</sup>RS Scheme should also be backward compatible with programs
|
||||
written in R<sup>5</sup>RS Scheme to the extent possible without compromising
|
||||
the above principles and future viability of the language.
|
||||
With respect to future viability, we operate under the assumption that
|
||||
many more Scheme programs will be written in the future than exist in
|
||||
the present, so the future programs are those with which we must be
|
||||
most concerned.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g2"></a>
|
||||
|
||||
<h3><br><a name="./status:h2"></a>3. Decisions<a name="sect:decisions"></a></h3>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
This section outlines the decisions made to date.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g3"></a>
|
||||
|
||||
<h4><br><a name="./status:h3"></a>3.1. Structural changes</h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
R6RS will consist of a core language and set of separate libraries.
|
||||
|
||||
|
||||
<p>
|
||||
The following features are definitely in the core language:
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li><i>none yet identified</i>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The following features are definitely in a separate library.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li><tt>delay</tt> and <tt>force</tt>
|
||||
<li>hash tables (see Section <a href="./status-mar-2006.html#g7">3.5</a>)
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g4"></a>
|
||||
|
||||
<h4><br><a name="./status:h4"></a>3.2. Features eliminated</h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The following features have been eliminated.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li><tt>transcript-on</tt> and <tt>transcript-off</tt>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g5"></a>
|
||||
|
||||
<h4><br><a name="./status:h5"></a>3.3. Changes</h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The following syntactic and semantic changes have been made to existing
|
||||
features.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>syntax is case sensitive
|
||||
<li>internal defines now follow <tt>letrec*</tt> semantics
|
||||
<li>there is now a single unique end-of-file object
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g6"></a>
|
||||
|
||||
<h4><br><a name="./status:h6"></a>3.4. Features added</h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The following features have been added.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li><tt>letrec*</tt> (<tt>letrec</tt> with left-to-right evaluation order)
|
||||
<li>block comments bracketed by <tt>#|</tt> and <tt>|#</tt>
|
||||
<li>expression comments prefixed by <tt>#;</tt>
|
||||
<li>matched square brackets ("<tt>[</tt>" and "<tt>]</tt>");
|
||||
equivalent to matched parentheses for list data and
|
||||
list-structured forms
|
||||
<li>allow symbols to start with <tt>-></tt>
|
||||
<li><tt>eof-object</tt> constructor to obtain the end-of-file object
|
||||
<li>require continuations created by <tt>begin</tt> to accept any number
|
||||
of values
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g7"></a>
|
||||
|
||||
<h4><br><a name="./status:h7"></a>3.5. Features to be added<a name="featurestobeadded"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The following features will be added once the details have been worked out.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>top-level libraries
|
||||
<li>record types and record definitions
|
||||
<li>exception handling
|
||||
<li>safe (default) and unsafe modes
|
||||
<li><tt>syntax-case</tt> macros
|
||||
<li>hash tables (as a library)
|
||||
<li>Unicode support
|
||||
<li>new string escape characters, including <tt>\n</tt> for newline
|
||||
(part of Unicode support)
|
||||
<li>serialization (read-write invariance) for every datum
|
||||
(part of Unicode support)
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g8"></a>
|
||||
|
||||
<h4><br><a name="./status:h8"></a>3.6. Reaffirmations</h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The following features of R<sup>5</sup>RS are reaffirmed for R<sup>6</sup>RS.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>support for multiple values
|
||||
<li>unspecified evaluation order for applications, <tt>let</tt> bindings, and <tt>letrec</tt> bindings
|
||||
<li><tt>set-car!</tt> and <tt>set-cdr!</tt>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g9"></a>
|
||||
|
||||
<h4><br><a name="./status:h9"></a>3.7. Beyond R<sup>6</sup>RS</h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The following features are definitely not under consideration for R<sup>6</sup>RS.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>processes
|
||||
<li>network programming
|
||||
<li>object-oriented programming
|
||||
<li>box datatype
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g10"></a>
|
||||
|
||||
<h3><br><a name="./status:h10"></a>4. Work in Progress<a name="sect:workinprogres"></a></h3>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Most of the standardization effort is currently focused on several
|
||||
subsystems: libraries, records, Unicode, arithmetic, exceptions, I/O,
|
||||
modules, and hash tables.
|
||||
Sections <a href="./status-mar-2006.html#g11">4.1</a>-<a href="./status-mar-2006.html#g17">4.7</a> list for
|
||||
each subsystem a set of informal requirements the editors have
|
||||
identified, the current status, and open questions.
|
||||
|
||||
<p>
|
||||
In several cases, a subsystem is up for discussion as a SRFI in order to
|
||||
give the editors a chance to inform the community of the ongoing work
|
||||
and obtain valuable feedback from the community.
|
||||
The final mechanism adopted for R<sup>6</sup>RS may, however, differ in minor
|
||||
or significant ways from the published SRFI.
|
||||
|
||||
<p>
|
||||
A list of other items up for consideration is given in
|
||||
Section <a href="./status-mar-2006.html#g18">4.8</a>.
|
||||
These have not received as much attention to date, usually because they
|
||||
involve less complex or far-reaching changes or are considered to be of
|
||||
lower priority.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g11"></a>
|
||||
|
||||
<h4><br><a name="./status:h11"></a>4.1. Libraries<a name="progress:libraries"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Informal requirements:
|
||||
support distribution of portable libraries,
|
||||
support identification of library location,
|
||||
namespace management,
|
||||
export/import of macros,
|
||||
permit separate but dependent analysis and compilation,
|
||||
support generation of efficient compiled code,
|
||||
ability to define new libraries.
|
||||
|
||||
<p>
|
||||
Support for libraries is under community discussion via SRFI 83.
|
||||
Two big issues have arisen: the need to clarify phases,
|
||||
e.g., for compile-time modules that import at
|
||||
compile-time, and how library names are written
|
||||
(coding as strings is controversial).
|
||||
Still up in the air are the extent to which the syntax of
|
||||
<tt>import</tt> and <tt>export</tt> forms is tied down,
|
||||
what built-in libraries besides <tt>r6rs</tt> there might
|
||||
be, and whether there is to be support for user-defined
|
||||
libraries.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g12"></a>
|
||||
|
||||
<h4><br><a name="./status:h12"></a>4.2. Records<a name="progress:records"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Informal requirements:
|
||||
disjoint types,
|
||||
syntactic interface,
|
||||
mutable fields.
|
||||
|
||||
<p>
|
||||
Support for records is under community discussion via SRFI 76.
|
||||
Still to be settled is whether generativity should be specified,
|
||||
e.g., as expand-time or run-time and also whether to elide or
|
||||
provide a rationale for the "sealed" feature.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g13"></a>
|
||||
|
||||
<h4><br><a name="./status:h13"></a>4.3. Unicode<a name="progress:unicode"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Informal requirements:
|
||||
provision for Unicode characters and
|
||||
character syntax, Unicode strings and string syntax; Unicode
|
||||
character I/O; <tt>integer->char</tt> and <tt>char->integer</tt> are inverse
|
||||
operations and support Unicode-specific text encodings;
|
||||
write/read invariance for every datum, including symbols.
|
||||
|
||||
<p>
|
||||
Support for Unicode is under community discussion via SRFI 75.
|
||||
Open issues include what normalization and character representation
|
||||
to use.
|
||||
We will probably use normalization form "C," and
|
||||
Scheme characters will likely correspond to Unicode scalar values
|
||||
(which can be represented by a 21-bit fixed-length encoding, but
|
||||
other representations are also possible).
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g14"></a>
|
||||
|
||||
<h4><br><a name="./status:h14"></a>4.4. Arithmetic<a name="progress:arithmetic"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Informal requirements:
|
||||
support for IEEE zeros, infinities, and NaNs,
|
||||
clean up behavior of <tt>eqv?</tt> wrt numbers,
|
||||
fix certain arithmetic operations,
|
||||
transparency.
|
||||
|
||||
<p>
|
||||
Changes for R<sup>6</sup>RS arithmetic are under community discussion via SRFI 77.
|
||||
There is general agreement to require the full tower and to
|
||||
require that real? implies an exact zero imaginary part.
|
||||
Among the open questions are whether fixnum, flonum, exact-only,
|
||||
and inexact-only operations should be in separate libraries rather
|
||||
than in the core language.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g15"></a>
|
||||
|
||||
<h4><br><a name="./status:h15"></a>4.5. Exceptions<a name="progress:exceptions"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Informal requirements:
|
||||
clarify the meaning of "is an error,"
|
||||
view exception handling as a means of communication between
|
||||
parts of the program.
|
||||
|
||||
<p>
|
||||
Proposals for this subsystem are currently under discussion.
|
||||
No R<sup>6</sup>RS-specific SRFIs have been published, and no decisions have
|
||||
been made.
|
||||
There is, however, general agreement to use SRFI 34 as a basis for
|
||||
the R<sup>6</sup>RS exception-handling system.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g16"></a>
|
||||
|
||||
<h4><br><a name="./status:h16"></a>4.6. I/O<a name="progress:io"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Informal requirements:
|
||||
<tt>read-byte</tt> and <tt>write-byte</tt>,
|
||||
ports that support binary I/O,
|
||||
byte vectors,
|
||||
block read/write operations.
|
||||
|
||||
<p>
|
||||
This subsystem actually addresses two separable issues here: potential
|
||||
additions changes to I/O and the inclusion of a byte-vector datatype.
|
||||
The byte-vector datatype is necessary to support block read/write
|
||||
operations.
|
||||
|
||||
<p>
|
||||
Proposals for this subsystem are currently under discussion.
|
||||
No R<sup>6</sup>RS-specific SRFIs have been published, and no decisions have
|
||||
been made.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g17"></a>
|
||||
|
||||
<h4><br><a name="./status:h17"></a>4.7. Macros<a name="progress:macros"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Informal requirements:
|
||||
specify expansion semantics,
|
||||
specify interaction with modules,
|
||||
allow procedural transformers,
|
||||
hygiene-breaking operations,
|
||||
maintain support for syntax-rules.
|
||||
|
||||
<p>
|
||||
The editors have decided to adopt <tt>syntax-case</tt> as currently
|
||||
implemented in Chez Scheme and Dr. Scheme, with various differences
|
||||
to be worked out by Dybvig and Flatt.
|
||||
Also, the underscore identifier ("<tt>_</tt>") will no longer be
|
||||
a pattern variable but instead a special identifier that matches
|
||||
any input, and underscore will be allowed in place of the keyword
|
||||
naming a macro in a <tt>syntax-rules</tt> pattern.
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g18"></a>
|
||||
|
||||
<h4><br><a name="./status:h18"></a>4.8. Other possible changes<a name="progress:miscellaneous"></a></h4>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The following possible features and changes have been discussed without
|
||||
resolution.
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>external representation for (possibly cyclic) graph structures
|
||||
<li>syntax for the eof-object, if any
|
||||
<li>whether <tt>#t</tt>, <tt>#f</tt>, and characters must be followed by a delimiter
|
||||
<li><tt>case-lambda</tt>
|
||||
<li><tt>cond-expand</tt>
|
||||
<li>improving the semantics of <tt>eqv?</tt> and <tt>equal?</tt>
|
||||
<li>bitwise operations on exact integers
|
||||
<li>homogeneous numeric vectors
|
||||
<li>support for file operations
|
||||
<li>support for regular expressions
|
||||
<li>support system operations
|
||||
<li>formatted output
|
||||
<li>making quotation of empty list optional
|
||||
<li>adding support for weak pointers
|
||||
<li>adding a void object to replace the "unspecified value"
|
||||
<li>support for gensyms and uids
|
||||
<li><tt>let-values</tt> or other multiple-value binding construct(s)
|
||||
<li>R<sup>5</sup>RS compatibility library
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<a name="g19"></a>
|
||||
|
||||
<h3><br><a name="./status:h19"></a>5. Completion Process<a name="sect:process"></a></h3>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
We intend to deliver a draft R<sup>6</sup>RS to the Steering Committee by
|
||||
September 1, 2006.
|
||||
In order to meet this target, we plan to wrap up work on the various
|
||||
subsystems, decide on the core language/library split, and create a
|
||||
rough internal (editors only) draft of the R<sup>6</sup>RS by mid-June.
|
||||
|
||||
<p>
|
||||
For each of the subsystems, the core/library split, and the safe/unsafe
|
||||
mode mechanism and semantics, we have assigned
|
||||
a single editor to be responsible for ensuring progress.
|
||||
We have also assigned one or more additional editors to help.
|
||||
These assignments are shown below.
|
||||
|
||||
<p>
|
||||
<center>
|
||||
<TABLE><TR><TD nowrap align="left">
|
||||
<b>subsystem</b> </TD><TD nowrap align="left"> <b>primary editor</b> </TD><TD nowrap align="left"> <b>additional editors</b></TD></TR><TR><TD nowrap align="left">
|
||||
libraries </TD><TD nowrap align="left"> Flatt </TD><TD nowrap align="left"> Dybvig</TD></TR><TR><TD nowrap align="left">
|
||||
records </TD><TD nowrap align="left"> Sperber </TD><TD nowrap align="left"> Dybvig, van Straaten</TD></TR><TR><TD nowrap align="left">
|
||||
arithmetic </TD><TD nowrap align="left"> Clinger </TD><TD nowrap align="left"> Sperber</TD></TR><TR><TD nowrap align="left">
|
||||
Unicode </TD><TD nowrap align="left"> Flatt </TD><TD nowrap align="left"> Clinger</TD></TR><TR><TD nowrap align="left">
|
||||
macros </TD><TD nowrap align="left"> Dybvig </TD><TD nowrap align="left"> Flatt</TD></TR><TR><TD nowrap align="left">
|
||||
exceptions </TD><TD nowrap align="left"> Sperber </TD><TD nowrap align="left"> Clinger</TD></TR><TR><TD nowrap align="left">
|
||||
I/O </TD><TD nowrap align="left"> Sperber </TD><TD nowrap align="left"> van Straaten</TD></TR><TR><TD nowrap align="left">
|
||||
core/library split </TD><TD nowrap align="left"> van Straaten </TD><TD nowrap align="left"> Dybvig</TD></TR><TR><TD nowrap align="left">
|
||||
hash tables </TD><TD nowrap align="left"> van Straaten </TD><TD nowrap align="left"> Clinger</TD></TR><TR><TD nowrap align="left">
|
||||
safe/unsafe mode </TD><TD nowrap align="left"> Clinger </TD><TD nowrap align="left"> Sperber</TD></TR><TR><TD nowrap align="left">
|
||||
</TD></TR></TABLE>
|
||||
</center>
|
||||
|
||||
<p>
|
||||
As time permits, we will also discuss as a group the other possible
|
||||
features and changes described in Section <a href="./status-mar-2006.html#g18">4.8</a>,
|
||||
as well as additional ones that may arise, and decide which are to be
|
||||
incorporated into R<sup>6</sup>RS.
|
||||
|
||||
<p>
|
||||
Responsibility for making sure that the editors complete their work and
|
||||
communicate effectively lies with the chair (Dybvig) and responsibility
|
||||
for creating the R<sup>6</sup>RS drafts lies with the project editor (Sperber).
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
<frameset cols="200, *">
|
||||
<frame name="left" src="navigation.html"></frame>
|
||||
<frame name="right" src="real-index.html"></frame>
|
||||
</frameset>
|
|
@ -0,0 +1,182 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin:1em;
|
||||
padding:0;
|
||||
}
|
||||
ol,
|
||||
ol ol,
|
||||
ol ol ol,
|
||||
ol ol ol ol {
|
||||
list-style: decimal inside;
|
||||
list-style: none;
|
||||
}
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
ol,
|
||||
ul {
|
||||
padding:0;
|
||||
margin:0;
|
||||
font-size: 12pt;
|
||||
}
|
||||
ul ul,
|
||||
ol ol {
|
||||
padding-left: 0.5em;
|
||||
font-size: 11pt;
|
||||
}
|
||||
ol ol ol,
|
||||
ul ul ul {
|
||||
font-size: 10pt;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="overflow-x:hidden">
|
||||
<h1>R5RS</h1>
|
||||
|
||||
<ul>
|
||||
<li><a target="right" name="%_toc_%_chap_Temp_1" href="r5rs-Z-H-1.html#%_chap_Temp_1">Summary</a>
|
||||
<li><a target="right" name="%_toc_%_chap_Temp_3" href="r5rs-Z-H-3.html#%_chap_Temp_3">Introduction</a>
|
||||
<ul>
|
||||
<li><a target="right" name="%_toc_%_sec_Temp_4" href="r5rs-Z-H-3.html#%_sec_Temp_4">Background</a>
|
||||
<li><a target="right" name="%_toc_%_sec_Temp_5" href="r5rs-Z-H-3.html#%_sec_Temp_5">Acknowledgements</a>
|
||||
</ul>
|
||||
</ul>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_chap_1" href="r5rs-Z-H-4.html#%_chap_1">1 Overview of Scheme</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_1.1" href="r5rs-Z-H-4.html#%_sec_1.1">1.1 Semantics</a>
|
||||
<li><a target="right" name="%_toc_%_sec_1.2" href="r5rs-Z-H-4.html#%_sec_1.2">1.2 Syntax</a>
|
||||
<li><a target="right" name="%_toc_%_sec_1.3" href="r5rs-Z-H-4.html#%_sec_1.3">1.3 Notation and terminology</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_1.3.1" href="r5rs-Z-H-4.html#%_sec_1.3.1">1.3.1 Primitive, library, and optional features</a>
|
||||
<li><a target="right" name="%_toc_%_sec_1.3.2" href="r5rs-Z-H-4.html#%_sec_1.3.2">1.3.2 Error situations and unspecified behavior</a>
|
||||
<li><a target="right" name="%_toc_%_sec_1.3.3" href="r5rs-Z-H-4.html#%_sec_1.3.3">1.3.3 Entry format</a>
|
||||
<li><a target="right" name="%_toc_%_sec_1.3.4" href="r5rs-Z-H-4.html#%_sec_1.3.4">1.3.4 Evaluation examples</a>
|
||||
<li><a target="right" name="%_toc_%_sec_1.3.5" href="r5rs-Z-H-4.html#%_sec_1.3.5">1.3.5 Naming conventions</a>
|
||||
</ol>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_chap_2" href="r5rs-Z-H-5.html#%_chap_2">2 Lexical conventions</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_2.1" href="r5rs-Z-H-5.html#%_sec_2.1">2.1 Identifiers</a>
|
||||
<li><a target="right" name="%_toc_%_sec_2.2" href="r5rs-Z-H-5.html#%_sec_2.2">2.2 Whitespace and comments</a>
|
||||
<li><a target="right" name="%_toc_%_sec_2.3" href="r5rs-Z-H-5.html#%_sec_2.3">2.3 Other notations</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_chap_3" href="r5rs-Z-H-6.html#%_chap_3">3 Basic concepts</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_3.1" href="r5rs-Z-H-6.html#%_sec_3.1">3.1 Variables, syntactic keywords, and regions</a>
|
||||
<li><a target="right" name="%_toc_%_sec_3.2" href="r5rs-Z-H-6.html#%_sec_3.2">3.2 Disjointness of types</a>
|
||||
<li><a target="right" name="%_toc_%_sec_3.3" href="r5rs-Z-H-6.html#%_sec_3.3">3.3 External representations</a>
|
||||
<li><a target="right" name="%_toc_%_sec_3.4" href="r5rs-Z-H-6.html#%_sec_3.4">3.4 Storage model</a>
|
||||
<li><a target="right" name="%_toc_%_sec_3.5" href="r5rs-Z-H-6.html#%_sec_3.5">3.5 Proper tail recursion</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_chap_4" href="r5rs-Z-H-7.html#%_chap_4">4 Expressions</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_4.1" href="r5rs-Z-H-7.html#%_sec_4.1">4.1 Primitive expression types</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_4.1.1" href="r5rs-Z-H-7.html#%_sec_4.1.1">4.1.1 Variable references</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.1.2" href="r5rs-Z-H-7.html#%_sec_4.1.2">4.1.2 Literal expressions</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.1.3" href="r5rs-Z-H-7.html#%_sec_4.1.3">4.1.3 Procedure calls</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.1.4" href="r5rs-Z-H-7.html#%_sec_4.1.4">4.1.4 Procedures</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.1.5" href="r5rs-Z-H-7.html#%_sec_4.1.5">4.1.5 Conditionals</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.1.6" href="r5rs-Z-H-7.html#%_sec_4.1.6">4.1.6 Assignments</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_sec_4.2" href="r5rs-Z-H-7.html#%_sec_4.2">4.2 Derived expression types</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_4.2.1" href="r5rs-Z-H-7.html#%_sec_4.2.1">4.2.1 Conditionals</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.2.2" href="r5rs-Z-H-7.html#%_sec_4.2.2">4.2.2 Binding constructs</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.2.3" href="r5rs-Z-H-7.html#%_sec_4.2.3">4.2.3 Sequencing</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.2.4" href="r5rs-Z-H-7.html#%_sec_4.2.4">4.2.4 Iteration</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.2.5" href="r5rs-Z-H-7.html#%_sec_4.2.5">4.2.5 Delayed evaluation</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.2.6" href="r5rs-Z-H-7.html#%_sec_4.2.6">4.2.6 Quasiquotation</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_sec_4.3" href="r5rs-Z-H-7.html#%_sec_4.3">4.3 Macros</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_4.3.1" href="r5rs-Z-H-7.html#%_sec_4.3.1">4.3.1 Binding constructs for syntactic keywords</a>
|
||||
<li><a target="right" name="%_toc_%_sec_4.3.2" href="r5rs-Z-H-7.html#%_sec_4.3.2">4.3.2 Pattern language</a>
|
||||
</ol>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_chap_5" href="r5rs-Z-H-8.html#%_chap_5">5 Program structure</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_5.1" href="r5rs-Z-H-8.html#%_sec_5.1">5.1 Programs</a>
|
||||
<li><a target="right" name="%_toc_%_sec_5.2" href="r5rs-Z-H-8.html#%_sec_5.2">5.2 Definitions</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_5.2.1" href="r5rs-Z-H-8.html#%_sec_5.2.1">5.2.1 Top level definitions</a>
|
||||
<li><a target="right" name="%_toc_%_sec_5.2.2" href="r5rs-Z-H-8.html#%_sec_5.2.2">5.2.2 Internal definitions</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_sec_5.3" href="r5rs-Z-H-8.html#%_sec_5.3">5.3 Syntax definitions</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_chap_6" href="r5rs-Z-H-9.html#%_chap_6">6 Standard procedures</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_6.1" href="r5rs-Z-H-9.html#%_sec_6.1">6.1 Equivalence predicates</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.2" href="r5rs-Z-H-9.html#%_sec_6.2">6.2 Numbers</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_6.2.1" href="r5rs-Z-H-9.html#%_sec_6.2.1">6.2.1 Numerical types</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.2.2" href="r5rs-Z-H-9.html#%_sec_6.2.2">6.2.2 Exactness</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.2.3" href="r5rs-Z-H-9.html#%_sec_6.2.3">6.2.3 Implementation restrictions</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.2.4" href="r5rs-Z-H-9.html#%_sec_6.2.4">6.2.4 Syntax of numerical constants</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.2.5" href="r5rs-Z-H-9.html#%_sec_6.2.5">6.2.5 Numerical operations</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.2.6" href="r5rs-Z-H-9.html#%_sec_6.2.6">6.2.6 Numerical input and output</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_sec_6.3" href="r5rs-Z-H-9.html#%_sec_6.3">6.3 Other data types</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_6.3.1" href="r5rs-Z-H-9.html#%_sec_6.3.1">6.3.1 Booleans</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.3.2" href="r5rs-Z-H-9.html#%_sec_6.3.2">6.3.2 Pairs and lists</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.3.3" href="r5rs-Z-H-9.html#%_sec_6.3.3">6.3.3 Symbols</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.3.4" href="r5rs-Z-H-9.html#%_sec_6.3.4">6.3.4 Characters</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.3.5" href="r5rs-Z-H-9.html#%_sec_6.3.5">6.3.5 Strings</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.3.6" href="r5rs-Z-H-9.html#%_sec_6.3.6">6.3.6 Vectors</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_sec_6.4" href="r5rs-Z-H-9.html#%_sec_6.4">6.4 Control features</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.5" href="r5rs-Z-H-9.html#%_sec_6.5">6.5 <tt>Eval</tt></a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.6" href="r5rs-Z-H-9.html#%_sec_6.6">6.6 Input and output</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_6.6.1" href="r5rs-Z-H-9.html#%_sec_6.6.1">6.6.1 Ports</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.6.2" href="r5rs-Z-H-9.html#%_sec_6.6.2">6.6.2 Input</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.6.3" href="r5rs-Z-H-9.html#%_sec_6.6.3">6.6.3 Output</a>
|
||||
<li><a target="right" name="%_toc_%_sec_6.6.4" href="r5rs-Z-H-9.html#%_sec_6.6.4">6.6.4 System interface</a>
|
||||
</ol>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_chap_7" href="r5rs-Z-H-10.html#%_chap_7">7 Formal syntax and semantics</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_7.1" href="r5rs-Z-H-10.html#%_sec_7.1">7.1 Formal syntax</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_7.1.1" href="r5rs-Z-H-10.html#%_sec_7.1.1">7.1.1 Lexical structure</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.1.2" href="r5rs-Z-H-10.html#%_sec_7.1.2">7.1.2 External representations</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.1.3" href="r5rs-Z-H-10.html#%_sec_7.1.3">7.1.3 Expressions</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.1.4" href="r5rs-Z-H-10.html#%_sec_7.1.4">7.1.4 Quasiquotations</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.1.5" href="r5rs-Z-H-10.html#%_sec_7.1.5">7.1.5 Transformers</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.1.6" href="r5rs-Z-H-10.html#%_sec_7.1.6">7.1.6 Programs and definitions</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_sec_7.2" href="r5rs-Z-H-10.html#%_sec_7.2">7.2 Formal semantics</a>
|
||||
<ol>
|
||||
<li><a target="right" name="%_toc_%_sec_7.2.1" href="r5rs-Z-H-10.html#%_sec_7.2.1">7.2.1 Abstract syntax</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.2.2" href="r5rs-Z-H-10.html#%_sec_7.2.2">7.2.2 Domain equations</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.2.3" href="r5rs-Z-H-10.html#%_sec_7.2.3">7.2.3 Semantic functions</a>
|
||||
<li><a target="right" name="%_toc_%_sec_7.2.4" href="r5rs-Z-H-10.html#%_sec_7.2.4">7.2.4 Auxiliary functions</a>
|
||||
</ol>
|
||||
<li><a target="right" name="%_toc_%_sec_7.3" href="r5rs-Z-H-10.html#%_sec_7.3">7.3 Derived expression types</a>
|
||||
</ol>
|
||||
</ol>
|
||||
<ul>
|
||||
<li><a target="right" name="%_toc_%_chap_Temp_6" href="r5rs-Z-H-11.html#%_chap_Temp_6">Notes</a>
|
||||
<li><a target="right" name="%_toc_%_sec_Temp_7" href="r5rs-Z-H-11.html#%_sec_Temp_7">Language changes</a>
|
||||
<li><a target="right" name="%_toc_%_chap_Temp_8" href="r5rs-Z-H-12.html#%_chap_Temp_8">Additional material</a>
|
||||
<li><a target="right" name="%_toc_%_chap_Temp_9" href="r5rs-Z-H-13.html#%_chap_Temp_9">Example</a>
|
||||
<li><a target="right" name="%_toc_%_chap_Temp_10" href="r5rs-Z-H-14.html#%_chap_Temp_10">Bibliography</a>
|
||||
<li><a target="right" name="%_toc_%_chap_Temp_11" href="r5rs-Z-H-15.html#%_chap_Temp_11">Alphabetic Index of Definitions of Concepts,
|
||||
Keywords, and Procedures</a>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,98 @@
|
|||
|
||||
|
||||
body {
|
||||
color: black;
|
||||
background-color: #e5e5e5;
|
||||
/*background-color: beige;*/
|
||||
margin-top: 2em;
|
||||
margin-left: 8%;
|
||||
margin-right: 8%;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
margin-top: .5em;
|
||||
}
|
||||
|
||||
.partheading {
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
.chapterheading {
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
|
||||
ol ol {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
ol ol ol {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
|
||||
ol ol ol ol {
|
||||
list-style-type: upper-alpha;
|
||||
}
|
||||
|
||||
.scheme {
|
||||
color: brown;
|
||||
}
|
||||
|
||||
.scheme .keyword {
|
||||
color: #990000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.scheme .builtin {
|
||||
color: #990000;
|
||||
}
|
||||
|
||||
.scheme .variable {
|
||||
color: navy;
|
||||
}
|
||||
|
||||
.scheme .global {
|
||||
color: purple;
|
||||
}
|
||||
|
||||
.scheme .selfeval {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.scheme .comment {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.navigation {
|
||||
color: red;
|
||||
text-align: right;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.disable {
|
||||
/* color: #e5e5e5; */
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.smallcaps {
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
.smallprint {
|
||||
color: gray;
|
||||
font-size: 75%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.smallprint hr {
|
||||
text-align: left;
|
||||
width: 40%;
|
||||
}
|
||||
|
After Width: | Height: | Size: 48 B |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 416 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 626 B |
After Width: | Height: | Size: 314 B |
After Width: | Height: | Size: 1018 B |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 498 B |
After Width: | Height: | Size: 881 B |
After Width: | Height: | Size: 901 B |
After Width: | Height: | Size: 966 B |
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 786 B |
After Width: | Height: | Size: 178 B |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 439 B |
After Width: | Height: | Size: 355 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 407 B |
After Width: | Height: | Size: 305 B |
After Width: | Height: | Size: 930 B |
After Width: | Height: | Size: 494 B |
After Width: | Height: | Size: 435 B |
After Width: | Height: | Size: 476 B |
After Width: | Height: | Size: 474 B |
After Width: | Height: | Size: 533 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 447 B |
After Width: | Height: | Size: 555 B |
After Width: | Height: | Size: 445 B |
After Width: | Height: | Size: 491 B |
After Width: | Height: | Size: 396 B |
After Width: | Height: | Size: 846 B |
After Width: | Height: | Size: 1020 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 920 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 304 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 333 B |
After Width: | Height: | Size: 891 B |
After Width: | Height: | Size: 302 B |
After Width: | Height: | Size: 244 B |
After Width: | Height: | Size: 177 B |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 46 B |
After Width: | Height: | Size: 53 B |
After Width: | Height: | Size: 52 B |
After Width: | Height: | Size: 55 B |
After Width: | Height: | Size: 61 B |
After Width: | Height: | Size: 57 B |
After Width: | Height: | Size: 55 B |
After Width: | Height: | Size: 61 B |
|
@ -0,0 +1,61 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs.html">previous</a></span><span>, <a href="r5rs-Z-H-2.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_1"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_1">Summary</a></h1><p>
|
||||
|
||||
The report gives a defining description of the programming language
|
||||
Scheme. Scheme is a statically scoped and properly tail-recursive
|
||||
dialect of the Lisp programming language invented by Guy Lewis
|
||||
Steele Jr. and Gerald Jay Sussman. It was designed to have an
|
||||
exceptionally clear and simple semantics and few different ways to
|
||||
form expressions. A wide variety of programming paradigms, including
|
||||
imperative, functional, and message passing styles, find convenient
|
||||
expression in Scheme.<p>
|
||||
|
||||
The introduction offers a brief history of the language and of
|
||||
the report.<p>
|
||||
|
||||
The first three chapters present the fundamental ideas of the
|
||||
language and describe the notational conventions used for describing the
|
||||
language and for writing programs in the language.<p>
|
||||
|
||||
Chapters <a href="r5rs-Z-H-7.html#%_chap_4">4</a> and <a href="r5rs-Z-H-8.html#%_chap_5">5</a> describe
|
||||
the syntax and semantics of expressions, programs, and definitions.<p>
|
||||
|
||||
Chapter <a href="r5rs-Z-H-9.html#%_chap_6">6</a> describes Scheme's built-in
|
||||
procedures, which include all of the language's data manipulation and
|
||||
input/output primitives.<p>
|
||||
|
||||
Chapter <a href="r5rs-Z-H-10.html#%_chap_7">7</a> provides a formal syntax for Scheme
|
||||
written in extended BNF, along with a formal denotational semantics.
|
||||
An example of the use of the language follows the formal syntax and
|
||||
semantics.<p>
|
||||
|
||||
The report concludes with a list of references and an
|
||||
alphabetic index.<p>
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs.html">previous</a></span><span>, <a href="r5rs-Z-H-2.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,546 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-9.html">previous</a></span><span>, <a href="r5rs-Z-H-11.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_7"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading><a href="r5rs-Z-H-2.html#%_toc_%_chap_7">Chapter 7</a></div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_7">Formal syntax and semantics</a></h1><p>
|
||||
|
||||
<p>
|
||||
|
||||
This chapter provides formal descriptions of what has already been
|
||||
described informally in previous chapters of this report.<p>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="%_sec_7.1"></a>
|
||||
<h2><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1">7.1 Formal syntax</a></h2><p>
|
||||
|
||||
<p>
|
||||
|
||||
This section provides a formal syntax for Scheme written in an extended
|
||||
BNF.<p>
|
||||
|
||||
All spaces in the grammar are for legibility. Case is insignificant;
|
||||
for example, <tt>#x1A</tt> and <tt>#X1a</tt> are equivalent. <empty>
|
||||
stands for the empty string.<p>
|
||||
|
||||
The following extensions to BNF are used to make the description more
|
||||
concise: <thing>* means zero or more occurrences of
|
||||
<thing>; and <thing><sup>+</sup> means at least one
|
||||
<thing>.<p>
|
||||
|
||||
<a name="%_sec_7.1.1"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1.1">7.1.1 Lexical structure</a></h3><p>
|
||||
|
||||
This section describes how individual tokens<a name="%_idx_636"></a> (identifiers,
|
||||
numbers, etc.) are formed from sequences of characters. The following
|
||||
sections describe how expressions and programs are formed from sequences
|
||||
of tokens.<p>
|
||||
|
||||
<Intertoken space> may occur on either side of any token, but not
|
||||
within a token.<p>
|
||||
|
||||
Tokens which require implicit termination (identifiers, numbers,
|
||||
characters, and dot) may be terminated by any <delimiter>, but not
|
||||
necessarily by anything else.<p>
|
||||
|
||||
The following five characters are reserved for future extensions to the
|
||||
language: <tt><code class=verbatim>[</code> <code class=verbatim>]</code> <code class=verbatim>{</code> <code class=verbatim>}</code> <code class=verbatim>|</code></tt><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-2.gif" border="0"></div><p><p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-3.gif" border="0"></div><p><p>
|
||||
|
||||
<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-4.gif" border="0"></div><p><p>
|
||||
|
||||
The following rules for <num <em>R</em>>, <complex <em>R</em>>, <real
|
||||
<em>R</em>>, <ureal <em>R</em>>, <uinteger <em>R</em>>, and <prefix <em>R</em>>
|
||||
should be replicated for <em>R</em> = 2, 8, 10,
|
||||
and 16. There are no rules for <decimal 2>, <decimal
|
||||
8>, and <decimal 16>, which means that numbers containing
|
||||
decimal points or exponents must be in decimal radix.
|
||||
<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-5.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-6.gif" border="0"></div><p><p>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="%_sec_7.1.2"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1.2">7.1.2 External representations</a></h3><p>
|
||||
|
||||
<p>
|
||||
|
||||
<Datum> is what the <tt>read</tt> procedure (section <a href="r5rs-Z-H-9.html#%_sec_6.6.2">6.6.2</a>)
|
||||
successfully parses. Note that any string that parses as an
|
||||
<expression> will also parse as a <datum>. <p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-7.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_sec_7.1.3"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1.3">7.1.3 Expressions</a></h3><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-8.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_sec_7.1.4"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1.4">7.1.4 Quasiquotations</a></h3><p>
|
||||
|
||||
The following grammar for quasiquote expressions is not context-free.
|
||||
It is presented as a recipe for generating an infinite number of
|
||||
production rules. Imagine a copy of the following rules for <em>D</em> = 1, 2,
|
||||
3, <tt>...</tt>. <em>D</em> keeps track of the nesting depth.<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-9.gif" border="0"></div><p><p>
|
||||
|
||||
In <quasiquotation>s, a <list qq template <em>D</em>> can sometimes
|
||||
be confused with either an <unquotation <em>D</em>> or a <splicing
|
||||
unquotation <em>D</em>>. The interpretation as an
|
||||
<unquotation> or <splicing
|
||||
unquotation <em>D</em>> takes precedence.<p>
|
||||
|
||||
<a name="%_sec_7.1.5"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1.5">7.1.5 Transformers</a></h3><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-10.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_sec_7.1.6"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1.6">7.1.6 Programs and definitions</a></h3><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-11.gif" border="0"></div><p>
|
||||
<p><a name="%_sec_7.2"></a>
|
||||
<h2><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.2">7.2 Formal semantics</a></h2><p>
|
||||
|
||||
<p>
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
|
||||
|
||||
This section provides a formal denotational semantics for the primitive
|
||||
expressions of Scheme and selected built-in procedures. The concepts
|
||||
and notation used here are described in [<a href="r5rs-Z-H-14.html#%_sec_7.3">29</a>]; the notation is
|
||||
summarized below:<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-12.gif" border="0"></div><p><p>
|
||||
|
||||
The reason that expression continuations take sequences of values instead
|
||||
of single values is to simplify the formal treatment of procedure calls
|
||||
and multiple return values.<p>
|
||||
|
||||
The boolean flag associated with pairs, vectors, and strings will be true
|
||||
for mutable objects and false for immutable objects.<p>
|
||||
|
||||
The order of evaluation within a call is unspecified. We mimic that
|
||||
here by applying arbitrary permutations <i>permute</i> and <i>unpermute</i>, which must be inverses, to the arguments in a call before
|
||||
and after they are evaluated. This is not quite right since it suggests,
|
||||
incorrectly, that the order of evaluation is constant throughout a program (for
|
||||
any given number of arguments), but it is a closer approximation to the intended
|
||||
semantics than a left-to-right evaluation would be.<p>
|
||||
|
||||
The storage allocator <i>new</i> is implementation-dependent, but it must
|
||||
obey the following axiom: if <i>new</i> <img src="r5rs-Z-G-D-2.gif" border="0"> <img src="r5rs-Z-G-D-4.gif" border="0"> <tt><em>L</em></tt>, then
|
||||
<img src="r5rs-Z-G-D-2.gif" border="0"> (<i>new</i> <img src="r5rs-Z-G-D-2.gif" border="0"> | <tt><em>L</em></tt>)<img src="r5rs-Z-G-D-7.gif" border="0"> 2 = <i><em>f</em><em>a</em><em>l</em><em>s</em><em>e</em></i>.<p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
The definition of <img src="r5rs-Z-G-D-5.gif" border="0"> is omitted because an accurate definition of
|
||||
<img src="r5rs-Z-G-D-5.gif" border="0"> would complicate the semantics without being very interesting.<p>
|
||||
|
||||
If P is a program in which all variables are defined before being
|
||||
referenced or assigned, then the meaning of P is
|
||||
<p><div align=left><img src="r5rs-Z-G-13.gif" border="0"></div><p>
|
||||
where I* is the sequence of variables defined in P, P'
|
||||
is the sequence of expressions obtained by replacing every definition
|
||||
in P by an assignment, <undefined> is an expression that evaluates
|
||||
to <i>undefined</i>, and
|
||||
<img src="r5rs-Z-G-D-6.gif" border="0"> is the semantic function that assigns meaning to expressions.<p>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="%_sec_7.2.1"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.2.1">7.2.1 Abstract syntax</a></h3><p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-14.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-15.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_sec_7.2.2"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.2.2">7.2.2 Domain equations</a></h3><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-16.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_sec_7.2.3"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.2.3">7.2.3 Semantic functions</a></h3><p>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-17.gif" border="0"></div><p><p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<p>
|
||||
|
||||
<p><p><p>
|
||||
|
||||
Definition of <img src="r5rs-Z-G-D-5.gif" border="0"> deliberately omitted.<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-18.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-19.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-20.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-21.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-22.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-23.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-24.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-25.gif" border="0"></div><p><p>
|
||||
|
||||
Here and elsewhere, any expressed value other than <i>undefined</i> may
|
||||
be used in place of <i>unspecified</i>.<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-26.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-27.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-28.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-29.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-30.gif" border="0"></div><p><p>
|
||||
|
||||
|
||||
<a name="%_sec_7.2.4"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.2.4">7.2.4 Auxiliary functions</a></h3><p>
|
||||
|
||||
<p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-31.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-32.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-33.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-34.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-35.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-36.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-37.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-38.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-39.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-40.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-41.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-42.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-43.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-44.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-45.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-46.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-47.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-48.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-49.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-50.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-51.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_idx_638"></a>
|
||||
<p><div align=left><img src="r5rs-Z-G-52.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_idx_640"></a>
|
||||
<p><div align=left><img src="r5rs-Z-G-53.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_idx_642"></a>
|
||||
<p><div align=left><img src="r5rs-Z-G-54.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-55.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_idx_644"></a>
|
||||
<p><div align=left><img src="r5rs-Z-G-56.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_idx_646"></a>
|
||||
<p><div align=left><img src="r5rs-Z-G-57.gif" border="0"></div><p><p>
|
||||
|
||||
<a name="%_idx_648"></a>
|
||||
<p><div align=left><img src="r5rs-Z-G-58.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-59.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-60.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-61.gif" border="0"></div><p><p>
|
||||
|
||||
<p><div align=left><img src="r5rs-Z-G-62.gif" border="0"></div><p><p>
|
||||
|
||||
|
||||
<p><a name="%_sec_7.3"></a>
|
||||
<h2><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.3">7.3 Derived expression types</a></h2><p>
|
||||
|
||||
<p>
|
||||
|
||||
This section gives macro definitions for the derived expression types in
|
||||
terms of the primitive expression types (literal, variable, call, <tt>lambda</tt>,
|
||||
<tt>if</tt>, <tt>set!</tt>). See section <a href="r5rs-Z-H-9.html#%_sec_6.4">6.4</a> for a possible
|
||||
definition of <tt>delay</tt>.<p>
|
||||
|
||||
<tt><p>(define-syntax <tt>cond</tt><br>
|
||||
(syntax-rules (else =>)<br>
|
||||
((cond (else result1 result2 ...))<br>
|
||||
(begin result1 result2 ...))<br>
|
||||
((cond (test => result))<br>
|
||||
(let ((temp test))<br>
|
||||
(if temp (result temp))))<br>
|
||||
((cond (test => result) clause1 clause2 ...)<br>
|
||||
(let ((temp test))<br>
|
||||
(if temp<br>
|
||||
(result temp)<br>
|
||||
(cond clause1 clause2 ...))))<br>
|
||||
((cond (test)) test)<br>
|
||||
((cond (test) clause1 clause2 ...)<br>
|
||||
(let ((temp test))<br>
|
||||
(if temp<br>
|
||||
temp<br>
|
||||
(cond clause1 clause2 ...))))<br>
|
||||
((cond (test result1 result2 ...))<br>
|
||||
(if test (begin result1 result2 ...)))<br>
|
||||
((cond (test result1 result2 ...)<br>
|
||||
clause1 clause2 ...)<br>
|
||||
(if test<br>
|
||||
(begin result1 result2 ...)<br>
|
||||
(cond clause1 clause2 ...)))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
<tt><p>(define-syntax <tt>case</tt><br>
|
||||
(syntax-rules (else)<br>
|
||||
((case (key ...)<br>
|
||||
clauses ...)<br>
|
||||
(let ((atom-key (key ...)))<br>
|
||||
(case atom-key clauses ...)))<br>
|
||||
((case key<br>
|
||||
(else result1 result2 ...))<br>
|
||||
(begin result1 result2 ...))<br>
|
||||
((case key<br>
|
||||
((atoms ...) result1 result2 ...))<br>
|
||||
(if (memv key '(atoms ...))<br>
|
||||
(begin result1 result2 ...)))<br>
|
||||
((case key<br>
|
||||
((atoms ...) result1 result2 ...)<br>
|
||||
clause clauses ...)<br>
|
||||
(if (memv key '(atoms ...))<br>
|
||||
(begin result1 result2 ...)<br>
|
||||
(case key clause clauses ...)))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
<tt><p>(define-syntax <tt>and</tt><br>
|
||||
(syntax-rules ()<br>
|
||||
((and) <tt>#t</tt>)<br>
|
||||
((and test) test)<br>
|
||||
((and test1 test2 ...)<br>
|
||||
(if test1 (and test2 ...) <tt>#f</tt>))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
<tt><p>(define-syntax <tt>or</tt><br>
|
||||
(syntax-rules ()<br>
|
||||
((or) <tt>#f</tt>)<br>
|
||||
((or test) test)<br>
|
||||
((or test1 test2 ...)<br>
|
||||
(let ((x test1))<br>
|
||||
(if x x (or test2 ...))))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
<tt><p>(define-syntax <tt>let</tt><br>
|
||||
(syntax-rules ()<br>
|
||||
((let ((name val) ...) body1 body2 ...)<br>
|
||||
((lambda (name ...) body1 body2 ...)<br>
|
||||
val ...))<br>
|
||||
((let tag ((name val) ...) body1 body2 ...)<br>
|
||||
((letrec ((tag (lambda (name ...)<br>
|
||||
body1 body2 ...)))<br>
|
||||
tag)<br>
|
||||
val ...))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
<tt><p>(define-syntax <tt>let*</tt><br>
|
||||
(syntax-rules ()<br>
|
||||
((let* () body1 body2 ...)<br>
|
||||
(let () body1 body2 ...))<br>
|
||||
((let* ((name1 val1) (name2 val2) ...)<br>
|
||||
body1 body2 ...)<br>
|
||||
(let ((name1 val1))<br>
|
||||
(let* ((name2 val2) ...)<br>
|
||||
body1 body2 ...)))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
The following <tt>letrec</tt> macro uses the symbol <tt><undefined></tt>
|
||||
in place of an expression which returns something that when stored in
|
||||
a location makes it an error to try to obtain the value stored in the
|
||||
location (no such expression is defined in Scheme).
|
||||
A trick is used to generate the temporary names needed to avoid
|
||||
specifying the order in which the values are evaluated.
|
||||
This could also be accomplished by using an auxiliary macro.<p>
|
||||
|
||||
<tt><p>(define-syntax <tt>letrec</tt><br>
|
||||
(syntax-rules ()<br>
|
||||
((letrec ((var1 init1) ...) body ...)<br>
|
||||
(letrec "generate_temp_names"<br>
|
||||
(var1 ...)<br>
|
||||
()<br>
|
||||
((var1 init1) ...)<br>
|
||||
body ...))<br>
|
||||
((letrec "generate_temp_names"<br>
|
||||
()<br>
|
||||
(temp1 ...)<br>
|
||||
((var1 init1) ...)<br>
|
||||
body ...)<br>
|
||||
(let ((var1 <undefined>) ...)<br>
|
||||
(let ((temp1 init1) ...)<br>
|
||||
(set! var1 temp1)<br>
|
||||
...<br>
|
||||
body ...)))<br>
|
||||
((letrec "generate_temp_names"<br>
|
||||
(x y ...)<br>
|
||||
(temp ...)<br>
|
||||
((var1 init1) ...)<br>
|
||||
body ...)<br>
|
||||
(letrec "generate_temp_names"<br>
|
||||
(y ...)<br>
|
||||
(newtemp temp ...)<br>
|
||||
((var1 init1) ...)<br>
|
||||
body ...))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
<tt><p>(define-syntax <tt>begin</tt><br>
|
||||
(syntax-rules ()<br>
|
||||
((begin exp ...)<br>
|
||||
((lambda () exp ...)))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
The following alternative expansion for <tt>begin</tt> does not make use of
|
||||
the ability to write more than one expression in the body of a lambda
|
||||
expression. In any case, note that these rules apply only if the body
|
||||
of the <tt>begin</tt> contains no definitions.<p>
|
||||
|
||||
<tt><p>(define-syntax begin<br>
|
||||
(syntax-rules ()<br>
|
||||
((begin exp)<br>
|
||||
exp)<br>
|
||||
((begin exp1 exp2 ...)<br>
|
||||
(let ((x exp1))<br>
|
||||
(begin exp2 ...)))))<br>
|
||||
<p></tt><p>
|
||||
|
||||
The following definition
|
||||
of <tt>do</tt> uses a trick to expand the variable clauses.
|
||||
As with <tt>letrec</tt> above, an auxiliary macro would also work.
|
||||
The expression <tt>(if #f #f)</tt> is used to obtain an unspecific
|
||||
value.<p>
|
||||
|
||||
<tt><p>(define-syntax <tt>do</tt><br>
|
||||
(syntax-rules ()<br>
|
||||
((do ((var init step ...) ...)<br>
|
||||
(test expr ...)<br>
|
||||
command ...)<br>
|
||||
(letrec<br>
|
||||
((loop<br>
|
||||
(lambda (var ...)<br>
|
||||
(if test<br>
|
||||
(begin<br>
|
||||
(if #f #f)<br>
|
||||
expr ...)<br>
|
||||
(begin<br>
|
||||
command<br>
|
||||
...<br>
|
||||
(loop (do "step" var step ...)<br>
|
||||
...))))))<br>
|
||||
(loop init ...)))<br>
|
||||
((do "step" x)<br>
|
||||
x)<br>
|
||||
((do "step" x y)<br>
|
||||
y)))<br>
|
||||
<p></tt><p>
|
||||
|
||||
<p>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-9.html">previous</a></span><span>, <a href="r5rs-Z-H-11.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,85 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-10.html">previous</a></span><span>, <a href="r5rs-Z-H-12.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_6"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_6">Notes</a></h1><p>
|
||||
|
||||
|
||||
<p><p><p>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="%_sec_Temp_7"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_Temp_7">Language changes</a></h3><p>
|
||||
|
||||
<p>
|
||||
|
||||
This section enumerates the changes that have been made to Scheme since
|
||||
the ``Revised<sup>4</sup> report'' [<a href="r5rs-Z-H-14.html#%_sec_7.3">6</a>] was published.<p>
|
||||
|
||||
<p><ul><p>
|
||||
|
||||
<li>The report is now a superset of the IEEE standard for Scheme
|
||||
[<a href="r5rs-Z-H-14.html#%_sec_7.3">13</a>]: implementations that conform to the report will
|
||||
also conform to the standard. This required the following changes:
|
||||
<p><ul><p>
|
||||
|
||||
<li>The empty list is now required to count as true.<p>
|
||||
|
||||
<li>The classification of features as essential or inessential has been
|
||||
removed. There are now three classes of built-in procedures: primitive,
|
||||
library, and optional. The optional procedures are <tt>load</tt>,
|
||||
<tt>with-input-from-file</tt>, <tt>with-output-to-file</tt>,
|
||||
<tt>transcript-on</tt>, <tt>transcript-off</tt>, and
|
||||
<tt>interaction-environment</tt>,
|
||||
and <tt>-</tt> and <tt>/</tt> with more than two arguments.
|
||||
None of these are in the IEEE standard.<p>
|
||||
|
||||
<li>Programs are allowed to redefine built-in procedures. Doing so
|
||||
will not change the behavior of other built-in procedures.
|
||||
</ul><p><p>
|
||||
|
||||
<li><em>Port</em> has been added to the list of disjoint types.<p>
|
||||
|
||||
<li>The macro appendix has been removed. High-level macros are now part
|
||||
of the main body of the report. The rewrite rules for derived expressions
|
||||
have been replaced with macro definitions. There are no reserved identifiers.<p>
|
||||
|
||||
<li><tt>Syntax-rules</tt> now allows vector patterns.<p>
|
||||
|
||||
<li>Multiple-value returns, <tt>eval</tt>, and <tt>dynamic-wind</tt> have
|
||||
been added.<p>
|
||||
|
||||
<li>The calls that are required to be implemented in a properly tail-recursive
|
||||
fashion are defined explicitly.<p>
|
||||
|
||||
<li>`<tt>@</tt>' can be used within identifiers. `<tt><code class=verbatim>|</code></tt>' is reserved
|
||||
for possible future extensions.<p>
|
||||
|
||||
</ul><p><p>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-10.html">previous</a></span><span>, <a href="r5rs-Z-H-12.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,38 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-11.html">previous</a></span><span>, <a href="r5rs-Z-H-13.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_8"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_8">Additional material</a></h1><p>
|
||||
|
||||
|
||||
<p><p><p>
|
||||
|
||||
The Internet Scheme Repository at
|
||||
<p><div align=center><table><tr><td>
|
||||
|
||||
<tt>http://www.cs.indiana.edu/scheme-repository/</tt>
|
||||
</td></tr></table></div><p>
|
||||
|
||||
contains an extensive Scheme bibliography, as well as papers,
|
||||
programs, implementations, and other material related to Scheme.
|
||||
<p>
|
||||
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-11.html">previous</a></span><span>, <a href="r5rs-Z-H-13.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,145 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-12.html">previous</a></span><span>, <a href="r5rs-Z-H-14.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_9"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_9">Example</a></h1><p>
|
||||
|
||||
|
||||
<p><p>
|
||||
<tt>Integrate-system</tt> integrates the system
|
||||
<p><div align=left><img src="r5rs-Z-G-63.gif" border="0"></div><p>
|
||||
of differential equations with the method of Runge-Kutta.<p>
|
||||
|
||||
The parameter <tt>system-derivative</tt> is a function that takes a system
|
||||
state (a vector of values for the state variables <em>y</em><sub>1</sub>, <tt>...</tt>, <em>y</em><sub><em>n</em></sub>)
|
||||
and produces a system derivative (the values <em>y</em><sub>1</sub><sup>/</sup>, <tt>...</tt>,
|
||||
<em>y</em><sub><em>n</em></sub><sup>/</sup>). The parameter <tt>initial-state</tt> provides an initial
|
||||
system state, and <tt>h</tt> is an initial guess for the length of the
|
||||
integration step.<p>
|
||||
|
||||
The value returned by <tt>integrate-system</tt> is an infinite stream of
|
||||
system states.<p>
|
||||
|
||||
<tt><p>(define integrate-system<br>
|
||||
(lambda (system-derivative initial-state h)<br>
|
||||
(let ((next (runge-kutta-4 system-derivative h)))<br>
|
||||
(letrec ((states<br>
|
||||
(cons initial-state<br>
|
||||
(delay (map-streams next<br>
|
||||
states)))))<br>
|
||||
states))))<p></tt><p>
|
||||
|
||||
<tt>Runge-Kutta-4</tt> takes a function, <tt>f</tt>, that produces a
|
||||
system derivative from a system state. <tt>Runge-Kutta-4</tt>
|
||||
produces a function that takes a system state and
|
||||
produces a new system state.<p>
|
||||
|
||||
<tt><p>(define runge-kutta-4<br>
|
||||
(lambda (f h)<br>
|
||||
(let ((*h (scale-vector h))<br>
|
||||
(*2 (scale-vector 2))<br>
|
||||
(*1/2 (scale-vector (/ 1 2)))<br>
|
||||
(*1/6 (scale-vector (/ 1 6))))<br>
|
||||
(lambda (y)<br>
|
||||
;; y is a system state<br>
|
||||
(let* ((k0 (*h (f y)))<br>
|
||||
(k1 (*h (f (add-vectors y (*1/2 k0)))))<br>
|
||||
(k2 (*h (f (add-vectors y (*1/2 k1)))))<br>
|
||||
(k3 (*h (f (add-vectors y k2)))))<br>
|
||||
(add-vectors y<br>
|
||||
(*1/6 (add-vectors k0<br>
|
||||
(*2 k1)<br>
|
||||
(*2 k2)<br>
|
||||
k3))))))))<br>
|
||||
<br>
|
||||
(define elementwise<br>
|
||||
(lambda (f)<br>
|
||||
(lambda vectors<br>
|
||||
(generate-vector<br>
|
||||
(vector-length (car vectors))<br>
|
||||
(lambda (i)<br>
|
||||
(apply f<br>
|
||||
(map (lambda (v) (vector-ref v i))<br>
|
||||
vectors)))))))<br>
|
||||
<br>
|
||||
(define generate-vector<br>
|
||||
(lambda (size proc)<br>
|
||||
(let ((ans (make-vector size)))<br>
|
||||
(letrec ((loop<br>
|
||||
(lambda (i)<br>
|
||||
(cond ((= i size) ans)<br>
|
||||
(else<br>
|
||||
(vector-set! ans i (proc i))<br>
|
||||
(loop (+ i 1)))))))<br>
|
||||
(loop 0)))))<br>
|
||||
<br>
|
||||
(define add-vectors (elementwise +))<br>
|
||||
<br>
|
||||
(define scale-vector<br>
|
||||
(lambda (s)<br>
|
||||
(elementwise (lambda (x) (* x s)))))<p></tt><p>
|
||||
|
||||
<tt>Map-streams</tt> is analogous to <tt>map</tt>: it applies its first
|
||||
argument (a procedure) to all the elements of its second argument (a
|
||||
stream).<p>
|
||||
|
||||
<tt><p>(define map-streams<br>
|
||||
(lambda (f s)<br>
|
||||
(cons (f (head s))<br>
|
||||
(delay (map-streams f (tail s))))))<p></tt><p>
|
||||
|
||||
Infinite streams are implemented as pairs whose car holds the first
|
||||
element of the stream and whose cdr holds a promise to deliver the rest
|
||||
of the stream.<p>
|
||||
|
||||
<tt><p>(define head car)<br>
|
||||
(define tail<br>
|
||||
(lambda (stream) (force (cdr stream))))<p></tt><p>
|
||||
|
||||
<p><br><p><br><p>The following illustrates the use of <tt>integrate-system</tt> in
|
||||
integrating the system
|
||||
<p><div align=left><img src="r5rs-Z-G-64.gif" border="0"></div><p><p><div align=left><img src="r5rs-Z-G-65.gif" border="0"></div><p>
|
||||
which models a damped oscillator.<p>
|
||||
|
||||
<tt><p>(define damped-oscillator<br>
|
||||
(lambda (R L C)<br>
|
||||
(lambda (state)<br>
|
||||
(let ((Vc (vector-ref state 0))<br>
|
||||
(Il (vector-ref state 1)))<br>
|
||||
(vector (- 0 (+ (/ Vc (* R C)) (/ Il C)))<br>
|
||||
(/ Vc L))))))<br>
|
||||
<br>
|
||||
(define the-states<br>
|
||||
(integrate-system<br>
|
||||
(damped-oscillator 10000 1000 .001)<br>
|
||||
'#(1 0)<br>
|
||||
.01))<p></tt><p>
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-12.html">previous</a></span><span>, <a href="r5rs-Z-H-14.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,187 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-13.html">previous</a></span><span>, <a href="r5rs-Z-H-15.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_10"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_10">Bibliography</a></h1><p>
|
||||
|
||||
<table>
|
||||
<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{SICP}"></a>[1] <td>
|
||||
Harold Abelson and Gerald Jay Sussman with Julie Sussman.
|
||||
<i>Structure and Interpretation of Computer Programs, second edition.</i>
|
||||
MIT Press, Cambridge, 1996.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Bawden88}"></a>[2] <td> Alan Bawden and Jonathan Rees.
|
||||
Syntactic closures.
|
||||
In <i>Proceedings of the 1988 ACM Symposium on Lisp and
|
||||
Functional Programming</i>, pages 86-95.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{howtoprint}"></a>[3] <td>
|
||||
Robert G. Burger and R. Kent Dybvig.
|
||||
Printing floating-point numbers quickly and accurately.
|
||||
In <i>Proceedings of the ACM SIGPLAN '96 Conference
|
||||
on Programming Language Design and Implementation</i>, pages 108-116.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{RRRS}"></a>[4] <td>
|
||||
William Clinger, editor.
|
||||
The revised revised report on Scheme, or an uncommon Lisp.
|
||||
MIT Artificial Intelligence Memo 848, August 1985.
|
||||
Also published as Computer Science Department Technical Report 174,
|
||||
Indiana University, June 1985.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{howtoread}"></a>[5] <td> William Clinger.
|
||||
How to read floating point numbers accurately.
|
||||
In <i>Proceedings of the ACM SIGPLAN '90 Conference
|
||||
on Programming Language Design and Implementation</i>, pages 92-101.
|
||||
Proceedings published as <i>SIGPLAN Notices</i> 25(6), June 1990.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{R4RS}"></a>[6] <td>
|
||||
William Clinger and Jonathan Rees, editors.
|
||||
The revised<sup>4</sup> report on the algorithmic language Scheme.
|
||||
In <i>ACM Lisp Pointers</i> 4(3), pages 1-55, 1991.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{macrosthatwork}"></a>[7] <td> William Clinger and Jonathan Rees.
|
||||
Macros that work.
|
||||
In <i>Proceedings of the 1991 ACM Conference on Principles of
|
||||
Programming Languages</i>, pages 155-162.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{propertailrecursion}"></a>[8] <td> William Clinger.
|
||||
Proper Tail Recursion and Space Efficiency.
|
||||
To appear in <i>Proceedings of the 1998 ACM Conference on Programming
|
||||
Language Design and Implementation</i>, June 1998.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{syntacticabstraction}"></a>[9] <td>
|
||||
R. Kent Dybvig, Robert Hieb, and Carl Bruggeman.
|
||||
Syntactic abstraction in Scheme.
|
||||
<i>Lisp and Symbolic Computation</i> 5(4):295-326, 1993.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Scheme311}"></a>[10] <td>
|
||||
Carol Fessenden, William Clinger, Daniel P. Friedman, and Christopher Haynes.
|
||||
Scheme 311 version 4 reference manual.
|
||||
Indiana University Computer Science Technical Report 137, February 1983.
|
||||
Superseded by [<a href="#%_sec_7.3">11</a>].<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Scheme84}"></a>[11] <td>
|
||||
D. Friedman, C. Haynes, E. Kohlbecker, and M. Wand.
|
||||
Scheme 84 interim reference manual.
|
||||
Indiana University Computer Science Technical Report 153, January 1985.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{IEEE}"></a>[12] <td>
|
||||
<i>IEEE Standard 754-1985. IEEE Standard for Binary Floating-Point
|
||||
Arithmetic.</i> IEEE, New York, 1985.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{IEEEScheme}"></a>[13] <td>
|
||||
<i>IEEE Standard 1178-1990. IEEE Standard for the Scheme
|
||||
Programming Language.</i> IEEE, New York, 1991.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Kohlbecker86}"></a>[14] <td>
|
||||
Eugene E. Kohlbecker Jr.
|
||||
<i>Syntactic Extensions in the Programming Language Lisp.</i>
|
||||
PhD thesis, Indiana University, August 1986.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{hygienic}"></a>[15] <td>
|
||||
Eugene E. Kohlbecker Jr., Daniel P. Friedman, Matthias Felleisen, and Bruce Duba.
|
||||
Hygienic macro expansion.
|
||||
In <i>Proceedings of the 1986 ACM Conference on Lisp
|
||||
and Functional Programming</i>, pages 151-161.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Landin65}"></a>[16] <td>
|
||||
Peter Landin.
|
||||
A correspondence between Algol 60 and Church's lambda notation: Part I.
|
||||
<i>Communications of the ACM</i> 8(2):89-101, February 1965.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{MITScheme}"></a>[17] <td>
|
||||
MIT Department of Electrical Engineering and Computer Science.
|
||||
Scheme manual, seventh edition.
|
||||
September 1984.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Naur63}"></a>[18] <td>
|
||||
Peter Naur et al.
|
||||
Revised report on the algorithmic language Algol 60.
|
||||
<i>Communications of the ACM</i> 6(1):1-17, January 1963.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Penfield81}"></a>[19] <td>
|
||||
Paul Penfield, Jr.
|
||||
Principal values and branch cuts in complex APL.
|
||||
In <i>APL '81 Conference Proceedings,</i> pages 248-256.
|
||||
ACM SIGAPL, San Francisco, September 1981.
|
||||
Proceedings published as <i>APL Quote Quad</i> 12(1), ACM, September 1981.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Pitman83}"></a>[20] <td>
|
||||
Kent M. Pitman.
|
||||
The revised MacLisp manual (Saturday evening edition).
|
||||
MIT Laboratory for Computer Science Technical Report 295, May 1983.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Rees82}"></a>[21] <td>
|
||||
Jonathan A. Rees and Norman I. Adams IV.
|
||||
T: A dialect of Lisp or, lambda: The ultimate software tool.
|
||||
In <i>Conference Record of the 1982 ACM Symposium on Lisp and
|
||||
Functional Programming</i>, pages 114-122.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Rees84}"></a>[22] <td>
|
||||
Jonathan A. Rees, Norman I. Adams IV, and James R. Meehan.
|
||||
The T manual, fourth edition.
|
||||
Yale University Computer Science Department, January 1984.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{R3RS}"></a>[23] <td>
|
||||
Jonathan Rees and William Clinger, editors.
|
||||
The revised<sup>3</sup> report on the algorithmic language Scheme.
|
||||
In <i>ACM SIGPLAN Notices</i> 21(12), pages 37-79, December 1986.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Reynolds72}"></a>[24] <td>
|
||||
John Reynolds.
|
||||
Definitional interpreters for higher order programming languages.
|
||||
In <i>ACM Conference Proceedings</i>, pages 717-740.
|
||||
ACM, 1972.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Scheme78}"></a>[25] <td>
|
||||
Guy Lewis Steele Jr. and Gerald Jay Sussman.
|
||||
The revised report on Scheme, a dialect of Lisp.
|
||||
MIT Artificial Intelligence Memo 452, January 1978.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Rabbit}"></a>[26] <td>
|
||||
Guy Lewis Steele Jr.
|
||||
Rabbit: a compiler for Scheme.
|
||||
MIT Artificial Intelligence Laboratory Technical Report 474, May 1978.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{CLtL}"></a>[27] <td>
|
||||
Guy Lewis Steele Jr.
|
||||
<i>Common Lisp: The Language, second edition.</i>
|
||||
Digital Press, Burlington MA, 1990.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Scheme75}"></a>[28] <td>
|
||||
Gerald Jay Sussman and Guy Lewis Steele Jr.
|
||||
Scheme: an interpreter for extended lambda calculus.
|
||||
MIT Artificial Intelligence Memo 349, December 1975.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{Stoy77}"></a>[29] <td>
|
||||
Joseph E. Stoy.
|
||||
<i>Denotational Semantics: The Scott-Strachey Approach to
|
||||
Programming Language Theory.</i>
|
||||
MIT Press, Cambridge, 1977.<p>
|
||||
|
||||
<p><tr><td align=right valign=top><a name="\cite{TImanual85}"></a>[30] <td>
|
||||
Texas Instruments, Inc.
|
||||
TI Scheme Language Reference Manual.
|
||||
Preliminary version 1.0, November 1985. <p>
|
||||
|
||||
</table>
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-13.html">previous</a></span><span>, <a href="r5rs-Z-H-15.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,430 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-14.html">previous</a></span><span class=disable>, next</span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span class=disable><span>; </span>index</span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_11"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_11">Alphabetic Index of Definitions of Concepts,
|
||||
Keywords, and Procedures</a></h1><p>
|
||||
|
||||
|
||||
<p><p>
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<a name="%_index_start">
<p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_88"><tt>'</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_384">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_280"><tt>*</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_278"><tt>+</tt></a>, <a href="r5rs-Z-H-10.html#%_idx_640">[2]</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_156"><tt>,</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_386">[2]</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_158"><tt>,@</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_282"><tt>-</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_186"><tt>...</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_284"><tt>/</tt></a><br>
|
||||
<a href="r5rs-Z-H-5.html#%_idx_24"><tt>;</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_256"><tt><</tt></a>, <a href="r5rs-Z-H-10.html#%_idx_638">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_260"><tt><=</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_254"><tt>=</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_110"><tt>=></tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_258"><tt>></tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_262"><tt>>=</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_160"><tt>`</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_286"><tt>abs</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_326"><tt>acos</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_118"><tt>and</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_344"><tt>angle</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_420"><tt>append</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_556"><tt>apply</tt></a>, <a href="r5rs-Z-H-10.html#%_idx_648">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_324"><tt>asin</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_438"><tt>assoc</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_434"><tt>assq</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_436"><tt>assv</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_328"><tt>atan</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_228"><tt>#b</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_152">backquote</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_136"><tt>begin</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_32">binding</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_34">binding construct</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_46"><tt>boolean?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_370">[2]</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_40">bound</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_402"><tt>caar</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_404"><tt>cadr</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_90">call</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_146">call by need</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_566"><tt>call-with-current-continuation</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_588"><tt>call-with-input-file</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_590"><tt>call-with-output-file</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_574"><tt>call-with-values</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_392"><tt>car</tt></a>, <a href="r5rs-Z-H-10.html#%_idx_642">[2]</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_114"><tt>case</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_406"><tt>cdddar</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_408"><tt>cddddr</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_396"><tt>cdr</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_304"><tt>ceiling</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_480"><tt>char->integer</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_470"><tt>char-alphabetic?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_466"><tt>char-ci<=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_462"><tt>char-ci<?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_460"><tt>char-ci=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_468"><tt>char-ci>=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_464"><tt>char-ci>?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_486"><tt>char-downcase</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_478"><tt>char-lower-case?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_472"><tt>char-numeric?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_620"><tt>char-ready?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_484"><tt>char-upcase</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_476"><tt>char-upper-case?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_474"><tt>char-whitespace?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_456"><tt>char<=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_452"><tt>char<?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_450"><tt>char=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_458"><tt>char>=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_454"><tt>char>?</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_54"><tt>char?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_448">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_608"><tt>close-input-port</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_610"><tt>close-output-port</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_94">combination</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_154">comma</a><br>
|
||||
<a href="r5rs-Z-H-5.html#%_idx_22">comment</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_242"><tt>complex?</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_106"><tt>cond</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_390"><tt>cons</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_72">constant</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_570">continuation</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_320"><tt>cos</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_596"><tt>current-input-port</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_598"><tt>current-output-port</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_232"><tt>#d</tt></a><br>
|
||||
<a href="r5rs-Z-H-8.html#%_idx_190"><tt>define</tt></a><br>
|
||||
<a href="r5rs-Z-H-8.html#%_idx_198"><tt>define-syntax</tt></a><br>
|
||||
<a href="r5rs-Z-H-8.html#%_idx_188">definition</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_142"><tt>delay</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_300"><tt>denominator</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_624"><tt>display</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_138"><tt>do</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_374">dotted pair</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_576"><tt>dynamic-wind</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_236"><tt>#e</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_108"><tt>else</tt></a>, <a href="r5rs-Z-H-7.html#%_idx_116">[2]</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_64">empty list</a>, <a href="r5rs-Z-H-9.html#%_idx_366">[2]</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_376">[3]</a>, <a href="r5rs-Z-H-9.html#%_idx_378">[4]</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_380">[5]</a>, <a href="r5rs-Z-H-9.html#%_idx_394">[6]</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_412">[7]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_618"><tt>eof-object?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_216"><tt>eq?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_218"><tt>equal?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_208">equivalence predicate</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_210"><tt>eqv?</tt></a>, <a href="r5rs-Z-H-10.html#%_idx_646">[2]</a><br>
|
||||
<a href="r5rs-Z-H-4.html#%_idx_8">error</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_568">escape procedure</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_578"><tt>eval</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_272"><tt>even?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_212">exact</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_346"><tt>exact->inexact</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_250"><tt>exact?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_224">exactness</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_314"><tt>exp</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_332"><tt>expt</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_356"><tt>#f</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_68">false</a>, <a href="r5rs-Z-H-9.html#%_idx_360">[2]</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_364">[3]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_302"><tt>floor</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_560"><tt>for-each</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_562"><tt>force</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_294"><tt>gcd</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_176">hygienic</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_238"><tt>#i</tt></a><br>
|
||||
<a href="r5rs-Z-H-5.html#%_idx_14">identifier</a>, <a href="r5rs-Z-H-6.html#%_idx_26">[2]</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_440">[3]</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_98"><tt>if</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_340"><tt>imag-part</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_76">immutable</a><br>
|
||||
<a href="r5rs-Z-H-4.html#%_idx_10">implementation restriction</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_226">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_382">improper list</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_214">inexact</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_348"><tt>inexact->exact</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_252"><tt>inexact?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_200">initial environment</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_592"><tt>input-port?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_482"><tt>integer->char</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_248"><tt>integer?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_584"><tt>interaction-environment</tt></a><br>
|
||||
<a href="r5rs-Z-H-8.html#%_idx_194">internal definition</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_166">keyword</a>, <a href="r5rs-Z-H-7.html#%_idx_174">[2]</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_96"><tt>lambda</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_144">lazy evaluation</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_296"><tt>lcm</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_418"><tt>length</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_124"><tt>let</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_128"><tt>let*</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_180"><tt>let-syntax</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_132"><tt>letrec</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_182"><tt>letrec-syntax</tt></a><br>
|
||||
<a href="r5rs-Z-H-4.html#%_idx_6">library</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_204">library procedure</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_416"><tt>list</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_528"><tt>list->string</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_550"><tt>list->vector</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_426"><tt>list-ref</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_424"><tt>list-tail</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_414"><tt>list?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_630"><tt>load</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_70">location</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_316"><tt>log</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_162">macro</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_168">macro keyword</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_172">macro transformer</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_170">macro use</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_342"><tt>magnitude</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_336"><tt>make-polar</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_334"><tt>make-rectangular</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_492"><tt>make-string</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_538"><tt>make-vector</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_558"><tt>map</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_274"><tt>max</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_432"><tt>member</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_428"><tt>memq</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_430"><tt>memv</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_276"><tt>min</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_292"><tt>modulo</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_74">mutable</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_268"><tt>negative?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_626"><tt>newline</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_368"><tt>not</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_582"><tt>null-environment</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_410"><tt>null?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_220">number</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_350"><tt>number->string</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_52"><tt>number?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_240">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_298"><tt>numerator</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_222">numerical types</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_230"><tt>#o</tt></a><br>
|
||||
<a href="r5rs-Z-H-4.html#%_idx_2">object</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_270"><tt>odd?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_604"><tt>open-input-file</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_606"><tt>open-output-file</tt></a><br>
|
||||
<a href="r5rs-Z-H-4.html#%_idx_4">optional</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_120"><tt>or</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_594"><tt>output-port?</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_372">pair</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_48"><tt>pair?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_388">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_616"><tt>peek-char</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_586">port</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_60"><tt>port?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_266"><tt>positive?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_206">predicate</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_92">procedure call</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_62"><tt>procedure?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_554">[2]</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_148">promise</a>, <a href="r5rs-Z-H-9.html#%_idx_564">[2]</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_78">proper tail recursion</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_150"><tt>quasiquote</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_86"><tt>quote</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_288"><tt>quotient</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_246"><tt>rational?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_310"><tt>rationalize</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_612"><tt>read</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_614"><tt>read-char</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_338"><tt>real-part</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_244"><tt>real?</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_178">referentially transparent</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_36">region</a>, <a href="r5rs-Z-H-7.html#%_idx_104">[2]</a>,
|
||||
<a href="r5rs-Z-H-7.html#%_idx_122">[3]</a>, <a href="r5rs-Z-H-7.html#%_idx_126">[4]</a>,
|
||||
<a href="r5rs-Z-H-7.html#%_idx_130">[5]</a>, <a href="r5rs-Z-H-7.html#%_idx_134">[6]</a>,
|
||||
<a href="r5rs-Z-H-7.html#%_idx_140">[7]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_290"><tt>remainder</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_422"><tt>reverse</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_308"><tt>round</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_580"><tt>scheme-report-environment</tt></a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_102"><tt>set!</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_398"><tt>set-car!</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_400"><tt>set-cdr!</tt></a><br>
|
||||
<a href="r5rs-Z-H-10.html#%_idx_644"><tt>setcar</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_312">simplest rational</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_318"><tt>sin</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_330"><tt>sqrt</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_494"><tt>string</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_526"><tt>string->list</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_352"><tt>string->number</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_446"><tt>string->symbol</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_524"><tt>string-append</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_518"><tt>string-ci<=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_514"><tt>string-ci<?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_504"><tt>string-ci=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_520"><tt>string-ci>=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_516"><tt>string-ci>?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_530"><tt>string-copy</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_532"><tt>string-fill!</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_496"><tt>string-length</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_498"><tt>string-ref</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_500"><tt>string-set!</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_510"><tt>string<=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_506"><tt>string<?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_502"><tt>string=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_512"><tt>string>=?</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_508"><tt>string>?</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_56"><tt>string?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_490">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_522"><tt>substring</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_444"><tt>symbol->string</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_50"><tt>symbol?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_442">[2]</a><br>
|
||||
<a href="r5rs-Z-H-5.html#%_idx_18">syntactic keyword</a>,
|
||||
<a href="r5rs-Z-H-6.html#%_idx_28">[2]</a>, <a href="r5rs-Z-H-7.html#%_idx_164">[3]</a><br>
|
||||
<a href="r5rs-Z-H-8.html#%_idx_196">syntax definition</a><br>
|
||||
<a href="r5rs-Z-H-7.html#%_idx_184"><tt>syntax-rules</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_354"><tt>#t</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_80">tail call</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_322"><tt>tan</tt></a><br>
|
||||
<a href="r5rs-Z-H-10.html#%_idx_636">token</a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_42">top level environment</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_202">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_634"><tt>transcript-off</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_632"><tt>transcript-on</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_66">true</a>, <a href="r5rs-Z-H-7.html#%_idx_100">[2]</a>,
|
||||
<a href="r5rs-Z-H-7.html#%_idx_112">[3]</a>, <a href="r5rs-Z-H-9.html#%_idx_358">[4]</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_362">[5]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_306"><tt>truncate</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_44">type</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_38">unbound</a>, <a href="r5rs-Z-H-7.html#%_idx_84">[2]</a>,
|
||||
<a href="r5rs-Z-H-8.html#%_idx_192">[3]</a><br>
|
||||
<a href="r5rs-Z-H-4.html#%_idx_12">unspecified</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_488">valid indexes</a>,
|
||||
<a href="r5rs-Z-H-9.html#%_idx_534">[2]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_572"><tt>values</tt></a><br>
|
||||
<a href="r5rs-Z-H-5.html#%_idx_16">variable</a>, <a href="r5rs-Z-H-6.html#%_idx_30">[2]</a>,
|
||||
<a href="r5rs-Z-H-7.html#%_idx_82">[3]</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_540"><tt>vector</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_548"><tt>vector->list</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_552"><tt>vector-fill!</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_542"><tt>vector-length</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_544"><tt>vector-ref</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_546"><tt>vector-set!</tt></a><br>
|
||||
<a href="r5rs-Z-H-6.html#%_idx_58"><tt>vector?</tt></a>, <a href="r5rs-Z-H-9.html#%_idx_536">[2]</a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-5.html#%_idx_20">Whitespace</a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_600"><tt>with-input-from-file</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_602"><tt>with-output-to-file</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_622"><tt>write</tt></a><br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_628"><tt>write-char</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_234"><tt>#x</tt></a><p>
|
||||
|
||||
<p><p>
|
||||
|
||||
<br>
|
||||
<a href="r5rs-Z-H-9.html#%_idx_264"><tt>zero?</tt></a><p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-14.html">previous</a></span><span class=disable>, next</span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span class=disable><span>; </span>index</span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,134 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-1.html">previous</a></span><span>, <a href="r5rs-Z-H-3.html">next</a></span> page<span>; </span><span class=disable>contents</span><span><span class=disable>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_2"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
Contents</h1><p>
|
||||
|
||||
<p><p> <a name="%_toc_start"><p><b>
|
||||
<a name="%_toc_%_chap_Temp_1" href="r5rs-Z-H-1.html#%_chap_Temp_1">Summary</a></b><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_Temp_3" href="r5rs-Z-H-3.html#%_chap_Temp_3">Introduction</a></b><br>
|
||||
<a name="%_toc_%_sec_Temp_4" href="r5rs-Z-H-3.html#%_sec_Temp_4">Background</a><br>
|
||||
<a name="%_toc_%_sec_Temp_5" href="r5rs-Z-H-3.html#%_sec_Temp_5">Acknowledgements</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_1" href="r5rs-Z-H-4.html#%_chap_1">1 Overview of Scheme</a></b><br>
|
||||
<a name="%_toc_%_sec_1.1" href="r5rs-Z-H-4.html#%_sec_1.1">1.1 Semantics</a><br>
|
||||
<a name="%_toc_%_sec_1.2" href="r5rs-Z-H-4.html#%_sec_1.2">1.2 Syntax</a><br>
|
||||
<a name="%_toc_%_sec_1.3" href="r5rs-Z-H-4.html#%_sec_1.3">1.3 Notation and terminology</a><br>
|
||||
<a name="%_toc_%_sec_1.3.1" href="r5rs-Z-H-4.html#%_sec_1.3.1">1.3.1 Primitive, library, and optional features</a><br>
|
||||
<a name="%_toc_%_sec_1.3.2" href="r5rs-Z-H-4.html#%_sec_1.3.2">1.3.2 Error situations and unspecified behavior</a><br>
|
||||
<a name="%_toc_%_sec_1.3.3" href="r5rs-Z-H-4.html#%_sec_1.3.3">1.3.3 Entry format</a><br>
|
||||
<a name="%_toc_%_sec_1.3.4" href="r5rs-Z-H-4.html#%_sec_1.3.4">1.3.4 Evaluation examples</a><br>
|
||||
<a name="%_toc_%_sec_1.3.5" href="r5rs-Z-H-4.html#%_sec_1.3.5">1.3.5 Naming conventions</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_2" href="r5rs-Z-H-5.html#%_chap_2">2 Lexical conventions</a></b><br>
|
||||
<a name="%_toc_%_sec_2.1" href="r5rs-Z-H-5.html#%_sec_2.1">2.1 Identifiers</a><br>
|
||||
<a name="%_toc_%_sec_2.2" href="r5rs-Z-H-5.html#%_sec_2.2">2.2 Whitespace and comments</a><br>
|
||||
<a name="%_toc_%_sec_2.3" href="r5rs-Z-H-5.html#%_sec_2.3">2.3 Other notations</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_3" href="r5rs-Z-H-6.html#%_chap_3">3 Basic concepts</a></b><br>
|
||||
<a name="%_toc_%_sec_3.1" href="r5rs-Z-H-6.html#%_sec_3.1">3.1 Variables, syntactic keywords, and regions</a><br>
|
||||
<a name="%_toc_%_sec_3.2" href="r5rs-Z-H-6.html#%_sec_3.2">3.2 Disjointness of types</a><br>
|
||||
<a name="%_toc_%_sec_3.3" href="r5rs-Z-H-6.html#%_sec_3.3">3.3 External representations</a><br>
|
||||
<a name="%_toc_%_sec_3.4" href="r5rs-Z-H-6.html#%_sec_3.4">3.4 Storage model</a><br>
|
||||
<a name="%_toc_%_sec_3.5" href="r5rs-Z-H-6.html#%_sec_3.5">3.5 Proper tail recursion</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_4" href="r5rs-Z-H-7.html#%_chap_4">4 Expressions</a></b><br>
|
||||
<a name="%_toc_%_sec_4.1" href="r5rs-Z-H-7.html#%_sec_4.1">4.1 Primitive expression types</a><br>
|
||||
<a name="%_toc_%_sec_4.1.1" href="r5rs-Z-H-7.html#%_sec_4.1.1">4.1.1 Variable references</a><br>
|
||||
<a name="%_toc_%_sec_4.1.2" href="r5rs-Z-H-7.html#%_sec_4.1.2">4.1.2 Literal expressions</a><br>
|
||||
<a name="%_toc_%_sec_4.1.3" href="r5rs-Z-H-7.html#%_sec_4.1.3">4.1.3 Procedure calls</a><br>
|
||||
<a name="%_toc_%_sec_4.1.4" href="r5rs-Z-H-7.html#%_sec_4.1.4">4.1.4 Procedures</a><br>
|
||||
<a name="%_toc_%_sec_4.1.5" href="r5rs-Z-H-7.html#%_sec_4.1.5">4.1.5 Conditionals</a><br>
|
||||
<a name="%_toc_%_sec_4.1.6" href="r5rs-Z-H-7.html#%_sec_4.1.6">4.1.6 Assignments</a><br>
|
||||
<a name="%_toc_%_sec_4.2" href="r5rs-Z-H-7.html#%_sec_4.2">4.2 Derived expression types</a><br>
|
||||
<a name="%_toc_%_sec_4.2.1" href="r5rs-Z-H-7.html#%_sec_4.2.1">4.2.1 Conditionals</a><br>
|
||||
<a name="%_toc_%_sec_4.2.2" href="r5rs-Z-H-7.html#%_sec_4.2.2">4.2.2 Binding constructs</a><br>
|
||||
<a name="%_toc_%_sec_4.2.3" href="r5rs-Z-H-7.html#%_sec_4.2.3">4.2.3 Sequencing</a><br>
|
||||
<a name="%_toc_%_sec_4.2.4" href="r5rs-Z-H-7.html#%_sec_4.2.4">4.2.4 Iteration</a><br>
|
||||
<a name="%_toc_%_sec_4.2.5" href="r5rs-Z-H-7.html#%_sec_4.2.5">4.2.5 Delayed evaluation</a><br>
|
||||
<a name="%_toc_%_sec_4.2.6" href="r5rs-Z-H-7.html#%_sec_4.2.6">4.2.6 Quasiquotation</a><br>
|
||||
<a name="%_toc_%_sec_4.3" href="r5rs-Z-H-7.html#%_sec_4.3">4.3 Macros</a><br>
|
||||
<a name="%_toc_%_sec_4.3.1" href="r5rs-Z-H-7.html#%_sec_4.3.1">4.3.1 Binding constructs for syntactic keywords</a><br>
|
||||
<a name="%_toc_%_sec_4.3.2" href="r5rs-Z-H-7.html#%_sec_4.3.2">4.3.2 Pattern language</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_5" href="r5rs-Z-H-8.html#%_chap_5">5 Program structure</a></b><br>
|
||||
<a name="%_toc_%_sec_5.1" href="r5rs-Z-H-8.html#%_sec_5.1">5.1 Programs</a><br>
|
||||
<a name="%_toc_%_sec_5.2" href="r5rs-Z-H-8.html#%_sec_5.2">5.2 Definitions</a><br>
|
||||
<a name="%_toc_%_sec_5.2.1" href="r5rs-Z-H-8.html#%_sec_5.2.1">5.2.1 Top level definitions</a><br>
|
||||
<a name="%_toc_%_sec_5.2.2" href="r5rs-Z-H-8.html#%_sec_5.2.2">5.2.2 Internal definitions</a><br>
|
||||
<a name="%_toc_%_sec_5.3" href="r5rs-Z-H-8.html#%_sec_5.3">5.3 Syntax definitions</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_6" href="r5rs-Z-H-9.html#%_chap_6">6 Standard procedures</a></b><br>
|
||||
<a name="%_toc_%_sec_6.1" href="r5rs-Z-H-9.html#%_sec_6.1">6.1 Equivalence predicates</a><br>
|
||||
<a name="%_toc_%_sec_6.2" href="r5rs-Z-H-9.html#%_sec_6.2">6.2 Numbers</a><br>
|
||||
<a name="%_toc_%_sec_6.2.1" href="r5rs-Z-H-9.html#%_sec_6.2.1">6.2.1 Numerical types</a><br>
|
||||
<a name="%_toc_%_sec_6.2.2" href="r5rs-Z-H-9.html#%_sec_6.2.2">6.2.2 Exactness</a><br>
|
||||
<a name="%_toc_%_sec_6.2.3" href="r5rs-Z-H-9.html#%_sec_6.2.3">6.2.3 Implementation restrictions</a><br>
|
||||
<a name="%_toc_%_sec_6.2.4" href="r5rs-Z-H-9.html#%_sec_6.2.4">6.2.4 Syntax of numerical constants</a><br>
|
||||
<a name="%_toc_%_sec_6.2.5" href="r5rs-Z-H-9.html#%_sec_6.2.5">6.2.5 Numerical operations</a><br>
|
||||
<a name="%_toc_%_sec_6.2.6" href="r5rs-Z-H-9.html#%_sec_6.2.6">6.2.6 Numerical input and output</a><br>
|
||||
<a name="%_toc_%_sec_6.3" href="r5rs-Z-H-9.html#%_sec_6.3">6.3 Other data types</a><br>
|
||||
<a name="%_toc_%_sec_6.3.1" href="r5rs-Z-H-9.html#%_sec_6.3.1">6.3.1 Booleans</a><br>
|
||||
<a name="%_toc_%_sec_6.3.2" href="r5rs-Z-H-9.html#%_sec_6.3.2">6.3.2 Pairs and lists</a><br>
|
||||
<a name="%_toc_%_sec_6.3.3" href="r5rs-Z-H-9.html#%_sec_6.3.3">6.3.3 Symbols</a><br>
|
||||
<a name="%_toc_%_sec_6.3.4" href="r5rs-Z-H-9.html#%_sec_6.3.4">6.3.4 Characters</a><br>
|
||||
<a name="%_toc_%_sec_6.3.5" href="r5rs-Z-H-9.html#%_sec_6.3.5">6.3.5 Strings</a><br>
|
||||
<a name="%_toc_%_sec_6.3.6" href="r5rs-Z-H-9.html#%_sec_6.3.6">6.3.6 Vectors</a><br>
|
||||
<a name="%_toc_%_sec_6.4" href="r5rs-Z-H-9.html#%_sec_6.4">6.4 Control features</a><br>
|
||||
<a name="%_toc_%_sec_6.5" href="r5rs-Z-H-9.html#%_sec_6.5">6.5 <tt>Eval</tt></a><br>
|
||||
<a name="%_toc_%_sec_6.6" href="r5rs-Z-H-9.html#%_sec_6.6">6.6 Input and output</a><br>
|
||||
<a name="%_toc_%_sec_6.6.1" href="r5rs-Z-H-9.html#%_sec_6.6.1">6.6.1 Ports</a><br>
|
||||
<a name="%_toc_%_sec_6.6.2" href="r5rs-Z-H-9.html#%_sec_6.6.2">6.6.2 Input</a><br>
|
||||
<a name="%_toc_%_sec_6.6.3" href="r5rs-Z-H-9.html#%_sec_6.6.3">6.6.3 Output</a><br>
|
||||
<a name="%_toc_%_sec_6.6.4" href="r5rs-Z-H-9.html#%_sec_6.6.4">6.6.4 System interface</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_7" href="r5rs-Z-H-10.html#%_chap_7">7 Formal syntax and semantics</a></b><br>
|
||||
<a name="%_toc_%_sec_7.1" href="r5rs-Z-H-10.html#%_sec_7.1">7.1 Formal syntax</a><br>
|
||||
<a name="%_toc_%_sec_7.1.1" href="r5rs-Z-H-10.html#%_sec_7.1.1">7.1.1 Lexical structure</a><br>
|
||||
<a name="%_toc_%_sec_7.1.2" href="r5rs-Z-H-10.html#%_sec_7.1.2">7.1.2 External representations</a><br>
|
||||
<a name="%_toc_%_sec_7.1.3" href="r5rs-Z-H-10.html#%_sec_7.1.3">7.1.3 Expressions</a><br>
|
||||
<a name="%_toc_%_sec_7.1.4" href="r5rs-Z-H-10.html#%_sec_7.1.4">7.1.4 Quasiquotations</a><br>
|
||||
<a name="%_toc_%_sec_7.1.5" href="r5rs-Z-H-10.html#%_sec_7.1.5">7.1.5 Transformers</a><br>
|
||||
<a name="%_toc_%_sec_7.1.6" href="r5rs-Z-H-10.html#%_sec_7.1.6">7.1.6 Programs and definitions</a><br>
|
||||
<a name="%_toc_%_sec_7.2" href="r5rs-Z-H-10.html#%_sec_7.2">7.2 Formal semantics</a><br>
|
||||
<a name="%_toc_%_sec_7.2.1" href="r5rs-Z-H-10.html#%_sec_7.2.1">7.2.1 Abstract syntax</a><br>
|
||||
<a name="%_toc_%_sec_7.2.2" href="r5rs-Z-H-10.html#%_sec_7.2.2">7.2.2 Domain equations</a><br>
|
||||
<a name="%_toc_%_sec_7.2.3" href="r5rs-Z-H-10.html#%_sec_7.2.3">7.2.3 Semantic functions</a><br>
|
||||
<a name="%_toc_%_sec_7.2.4" href="r5rs-Z-H-10.html#%_sec_7.2.4">7.2.4 Auxiliary functions</a><br>
|
||||
<a name="%_toc_%_sec_7.3" href="r5rs-Z-H-10.html#%_sec_7.3">7.3 Derived expression types</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_Temp_6" href="r5rs-Z-H-11.html#%_chap_Temp_6">Notes</a></b><br>
|
||||
<a name="%_toc_%_sec_Temp_7" href="r5rs-Z-H-11.html#%_sec_Temp_7">Language changes</a><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_Temp_8" href="r5rs-Z-H-12.html#%_chap_Temp_8">Additional material</a></b><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_Temp_9" href="r5rs-Z-H-13.html#%_chap_Temp_9">Example</a></b><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_Temp_10" href="r5rs-Z-H-14.html#%_chap_Temp_10">Bibliography</a></b><br>
|
||||
<p><b>
|
||||
<a name="%_toc_%_chap_Temp_11" href="r5rs-Z-H-15.html#%_chap_Temp_11">Alphabetic Index of Definitions of Concepts,
|
||||
Keywords, and Procedures</a></b><br>
|
||||
<p>
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-1.html">previous</a></span><span>, <a href="r5rs-Z-H-3.html">next</a></span> page<span>; </span><span class=disable>contents</span><span><span class=disable>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,132 @@
|
|||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<!-- Generated from TeX source by tex2page, v 4o4,
|
||||
(c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
|
||||
<head>
|
||||
<title>
|
||||
Revised^5 Report on the Algorithmic Language Scheme
|
||||
</title>
|
||||
<link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
|
||||
<meta name=robots content="noindex,follow">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-2.html">previous</a></span><span>, <a href="r5rs-Z-H-4.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
<a name="%_chap_Temp_3"></a>
|
||||
<h1 class=chapter>
|
||||
<div class=chapterheading> </div><p>
|
||||
<a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_3">Introduction</a></h1><p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<p>
|
||||
|
||||
Programming languages should be designed not by piling feature on top of
|
||||
feature, but by removing the weaknesses and restrictions that make additional
|
||||
features appear necessary. Scheme demonstrates that a very small number
|
||||
of rules for forming expressions, with no restrictions on how they are
|
||||
composed, suffice to form a practical and efficient programming language
|
||||
that is flexible enough to support most of the major programming
|
||||
paradigms in use today.<p>
|
||||
|
||||
Scheme
|
||||
was one of the first programming languages to incorporate first class
|
||||
procedures as in the lambda calculus, thereby proving the usefulness of
|
||||
static scope rules and block structure in a dynamically typed language.
|
||||
Scheme was the first major dialect of Lisp to distinguish procedures
|
||||
from lambda expressions and symbols, to use a single lexical
|
||||
environment for all variables, and to evaluate the operator position
|
||||
of a procedure call in the same way as an operand position. By relying
|
||||
entirely on procedure calls to express iteration, Scheme emphasized the
|
||||
fact that tail-recursive procedure calls are essentially goto's that
|
||||
pass arguments. Scheme was the first widely used programming language to
|
||||
embrace first class escape procedures, from which all previously known
|
||||
sequential control structures can be synthesized. A subsequent
|
||||
version of Scheme introduced the concept of exact and inexact numbers,
|
||||
an extension of Common Lisp's generic arithmetic.
|
||||
More recently, Scheme became the first programming language to support
|
||||
hygienic macros, which permit the syntax of a block-structured language
|
||||
to be extended in a consistent and reliable manner.
|
||||
|
||||
<p>
|
||||
|
||||
<a name="%_sec_Temp_4"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_Temp_4">Background</a></h3><p>
|
||||
|
||||
The first description of Scheme was written in
|
||||
1975 [<a href="r5rs-Z-H-14.html#%_sec_7.3">28</a>]. A revised report [<a href="r5rs-Z-H-14.html#%_sec_7.3">25</a>]
|
||||
appeared in 1978, which described the evolution
|
||||
of the language as its MIT implementation was upgraded to support an
|
||||
innovative compiler [<a href="r5rs-Z-H-14.html#%_sec_7.3">26</a>]. Three distinct projects began in
|
||||
1981 and 1982 to use variants of Scheme for courses at MIT, Yale, and
|
||||
Indiana University [<a href="r5rs-Z-H-14.html#%_sec_7.3">21</a>, <a href="r5rs-Z-H-14.html#%_sec_7.3">17</a>, <a href="r5rs-Z-H-14.html#%_sec_7.3">10</a>]. An introductory
|
||||
computer science textbook using Scheme was published in
|
||||
1984 [<a href="r5rs-Z-H-14.html#%_sec_7.3">1</a>].<p>
|
||||
|
||||
As Scheme became more widespread,
|
||||
local dialects began to diverge until students and researchers
|
||||
occasionally found it difficult to understand code written at other
|
||||
sites.
|
||||
Fifteen representatives of the major implementations of Scheme therefore
|
||||
met in October 1984 to work toward a better and more widely accepted
|
||||
standard for Scheme.
|
||||
Their report [<a href="r5rs-Z-H-14.html#%_sec_7.3">4</a>]
|
||||
was published at MIT and Indiana University in the summer of 1985.
|
||||
Further revision took place in the spring of 1986 [<a href="r5rs-Z-H-14.html#%_sec_7.3">23</a>],
|
||||
and in the spring of 1988 [<a href="r5rs-Z-H-14.html#%_sec_7.3">6</a>].
|
||||
The present report reflects further revisions agreed upon in a meeting
|
||||
at Xerox PARC in June 1992.<p>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<p><p><p>
|
||||
|
||||
We intend this report to belong to the entire Scheme community, and so
|
||||
we grant permission to copy it in whole or in part without fee. In
|
||||
particular, we encourage implementors of Scheme to use this report as
|
||||
a starting point for manuals and other documentation, modifying it as
|
||||
necessary.<p>
|
||||
|
||||
<a name="%_sec_Temp_5"></a>
|
||||
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_Temp_5">Acknowledgements</a></h3><p>
|
||||
|
||||
We would like to thank the following people for their help: Alan Bawden, Michael
|
||||
Blair, George Carrette, Andy Cromarty, Pavel Curtis, Jeff Dalton, Olivier Danvy,
|
||||
Ken Dickey, Bruce Duba, Marc Feeley,
|
||||
Andy Freeman, Richard Gabriel, Yekta Gürsel, Ken Haase, Robert
|
||||
Hieb, Paul Hudak, Morry Katz, Chris Lindblad, Mark Meyer, Jim Miller, Jim Philbin,
|
||||
John Ramsdell, Mike Shaff, Jonathan Shapiro, Julie Sussman,
|
||||
Perry Wagle, Daniel Weise, Henry Wu, and Ozan Yigit.
|
||||
We thank Carol Fessenden, Daniel
|
||||
Friedman, and Christopher Haynes for permission to use text from the Scheme 311
|
||||
version 4 reference manual. We thank Texas Instruments, Inc. for permission to
|
||||
use text from the <em>TI Scheme Language Reference Manual</em>[<a href="r5rs-Z-H-14.html#%_sec_7.3">30</a>].
|
||||
We gladly acknowledge the influence of manuals for MIT Scheme[<a href="r5rs-Z-H-14.html#%_sec_7.3">17</a>],
|
||||
T[<a href="r5rs-Z-H-14.html#%_sec_7.3">22</a>], Scheme 84[<a href="r5rs-Z-H-14.html#%_sec_7.3">11</a>],Common Lisp[<a href="r5rs-Z-H-14.html#%_sec_7.3">27</a>],
|
||||
and Algol 60[<a href="r5rs-Z-H-14.html#%_sec_7.3">18</a>].<p>
|
||||
|
||||
We also thank Betty Dexter for the extreme effort she put into
|
||||
setting this report in T<small>E</small>X, and Donald Knuth for designing the program
|
||||
that caused her troubles.<p>
|
||||
|
||||
The Artificial Intelligence Laboratory of the
|
||||
Massachusetts Institute of Technology, the Computer Science
|
||||
Department of Indiana University, the Computer and Information
|
||||
Sciences Department of the University of Oregon, and the NEC Research
|
||||
Institute supported the preparation of this report. Support for the MIT
|
||||
work was provided in part by
|
||||
the Advanced Research Projects Agency of the Department of Defense under Office
|
||||
of Naval Research contract N00014-80-C-0505. Support for the Indiana
|
||||
University work was provided by NSF grants NCS 83-04567 and NCS
|
||||
83-03325.<p>
|
||||
|
||||
<p><p><p>
|
||||
|
||||
|
||||
<p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-2.html">previous</a></span><span>, <a href="r5rs-Z-H-4.html">next</a></span> page<span>; </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
|
||||
|
||||
</body>
|
||||
</html>
|