Add contents of schemers.org-20230110.tgz

SHA1 b2ce2f884321b4e89eda5ecf4ad2914565c6da23
This commit is contained in:
Lassi Kortela 2023-01-12 14:56:11 +02:00
commit 0c0af57d1c
173 changed files with 26508 additions and 0 deletions

View File

@ -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>

View File

@ -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

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

File diff suppressed because it is too large Load Diff

View File

@ -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}

View File

@ -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&nbsp;Dybvig, Will&nbsp;Clinger, Matthew&nbsp;Flatt, Mike&nbsp;Sperber, and Anton&nbsp;van&nbsp;Straaten</h2>
<h3>February 24, 2006</h3>
<p>
<p>
<table cellpadding=0 cellspacing=0>
<tr><td align="right"><b>1.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</b></td><td><b><a class=plain href="./status-mar-2006.html#g3">Structural changes</a></b></td></tr>
<tr><td><b>3.2.&nbsp;</b></td><td><b><a class=plain href="./status-mar-2006.html#g4">Features eliminated</a></b></td></tr>
<tr><td><b>3.3.&nbsp;</b></td><td><b><a class=plain href="./status-mar-2006.html#g5">Changes</a></b></td></tr>
<tr><td><b>3.4.&nbsp;</b></td><td><b><a class=plain href="./status-mar-2006.html#g6">Features added</a></b></td></tr>
<tr><td><b>3.5.&nbsp;</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.&nbsp;</b></td><td><b><a class=plain href="./status-mar-2006.html#g8">Reaffirmations</a></b></td></tr>
<tr><td><b>3.7.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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.&nbsp;</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&nbsp;<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>-&gt;</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&nbsp;<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&nbsp;<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&nbsp;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&nbsp;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-&gt;char</tt> and <tt>char-&gt;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&nbsp;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&nbsp;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&nbsp;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&nbsp;1,&nbsp;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&nbsp;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&nbsp;Straaten</TD></TR><TR><TD nowrap align="left">
core/library split </TD><TD nowrap align="left"> van&nbsp;Straaten </TD><TD nowrap align="left"> Dybvig</TD></TR><TR><TD nowrap align="left">
hash tables </TD><TD nowrap align="left"> van&nbsp;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&nbsp;<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>

Binary file not shown.

View File

@ -0,0 +1,5 @@
<frameset cols="200, *">
<frame name="left" src="navigation.html"></frame>
<frame name="right" src="real-index.html"></frame>
</frameset>

View File

@ -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&nbsp;&nbsp;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&nbsp;&nbsp;Semantics</a>
<li><a target="right" name="%_toc_%_sec_1.2" href="r5rs-Z-H-4.html#%_sec_1.2">1.2&nbsp;&nbsp;Syntax</a>
<li><a target="right" name="%_toc_%_sec_1.3" href="r5rs-Z-H-4.html#%_sec_1.3">1.3&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;Naming conventions</a>
</ol>
</ol>
<li><a target="right" name="%_toc_%_chap_2" href="r5rs-Z-H-5.html#%_chap_2">2&nbsp;&nbsp;Lexical conventions</a>
<ol>
<li><a target="right" name="%_toc_%_sec_2.1" href="r5rs-Z-H-5.html#%_sec_2.1">2.1&nbsp;&nbsp;Identifiers</a>
<li><a target="right" name="%_toc_%_sec_2.2" href="r5rs-Z-H-5.html#%_sec_2.2">2.2&nbsp;&nbsp;Whitespace and comments</a>
<li><a target="right" name="%_toc_%_sec_2.3" href="r5rs-Z-H-5.html#%_sec_2.3">2.3&nbsp;&nbsp;Other notations</a>
</ol>
<li><a target="right" name="%_toc_%_chap_3" href="r5rs-Z-H-6.html#%_chap_3">3&nbsp;&nbsp;Basic concepts</a>
<ol>
<li><a target="right" name="%_toc_%_sec_3.1" href="r5rs-Z-H-6.html#%_sec_3.1">3.1&nbsp;&nbsp;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&nbsp;&nbsp;Disjointness of types</a>
<li><a target="right" name="%_toc_%_sec_3.3" href="r5rs-Z-H-6.html#%_sec_3.3">3.3&nbsp;&nbsp;External representations</a>
<li><a target="right" name="%_toc_%_sec_3.4" href="r5rs-Z-H-6.html#%_sec_3.4">3.4&nbsp;&nbsp;Storage model</a>
<li><a target="right" name="%_toc_%_sec_3.5" href="r5rs-Z-H-6.html#%_sec_3.5">3.5&nbsp;&nbsp;Proper tail recursion</a>
</ol>
<li><a target="right" name="%_toc_%_chap_4" href="r5rs-Z-H-7.html#%_chap_4">4&nbsp;&nbsp;Expressions</a>
<ol>
<li><a target="right" name="%_toc_%_sec_4.1" href="r5rs-Z-H-7.html#%_sec_4.1">4.1&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;Assignments</a>
</ol>
<li><a target="right" name="%_toc_%_sec_4.2" href="r5rs-Z-H-7.html#%_sec_4.2">4.2&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;Quasiquotation</a>
</ol>
<li><a target="right" name="%_toc_%_sec_4.3" href="r5rs-Z-H-7.html#%_sec_4.3">4.3&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;Pattern language</a>
</ol>
</ol>
<li><a target="right" name="%_toc_%_chap_5" href="r5rs-Z-H-8.html#%_chap_5">5&nbsp;&nbsp;Program structure</a>
<ol>
<li><a target="right" name="%_toc_%_sec_5.1" href="r5rs-Z-H-8.html#%_sec_5.1">5.1&nbsp;&nbsp;Programs</a>
<li><a target="right" name="%_toc_%_sec_5.2" href="r5rs-Z-H-8.html#%_sec_5.2">5.2&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;Internal definitions</a>
</ol>
<li><a target="right" name="%_toc_%_sec_5.3" href="r5rs-Z-H-8.html#%_sec_5.3">5.3&nbsp;&nbsp;Syntax definitions</a>
</ol>
<li><a target="right" name="%_toc_%_chap_6" href="r5rs-Z-H-9.html#%_chap_6">6&nbsp;&nbsp;Standard procedures</a>
<ol>
<li><a target="right" name="%_toc_%_sec_6.1" href="r5rs-Z-H-9.html#%_sec_6.1">6.1&nbsp;&nbsp;Equivalence predicates</a>
<li><a target="right" name="%_toc_%_sec_6.2" href="r5rs-Z-H-9.html#%_sec_6.2">6.2&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;Vectors</a>
</ol>
<li><a target="right" name="%_toc_%_sec_6.4" href="r5rs-Z-H-9.html#%_sec_6.4">6.4&nbsp;&nbsp;Control features</a>
<li><a target="right" name="%_toc_%_sec_6.5" href="r5rs-Z-H-9.html#%_sec_6.5">6.5&nbsp;&nbsp;<tt>Eval</tt></a>
<li><a target="right" name="%_toc_%_sec_6.6" href="r5rs-Z-H-9.html#%_sec_6.6">6.6&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;System interface</a>
</ol>
</ol>
<li><a target="right" name="%_toc_%_chap_7" href="r5rs-Z-H-10.html#%_chap_7">7&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;Auxiliary functions</a>
</ol>
<li><a target="right" name="%_toc_%_sec_7.3" href="r5rs-Z-H-10.html#%_sec_7.3">7.3&nbsp;&nbsp;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>

View File

@ -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%;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 B

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</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>&nbsp;</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&nbsp;Jr. and Gerald Jay&nbsp;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&nbsp;<a href="r5rs-Z-H-7.html#%_chap_4">4</a> and&nbsp;<a href="r5rs-Z-H-8.html#%_chap_5">5</a> describe
the syntax and semantics of expressions, programs, and definitions.<p>
Chapter&nbsp;<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&nbsp;<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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</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&nbsp;&nbsp;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. &lt;empty&gt;
stands for the empty string.<p>
The following extensions to BNF are used to make the description more
concise: &lt;thing&gt;* means zero or more occurrences of
&lt;thing&gt;; and &lt;thing&gt;<sup>+</sup> means at least one
&lt;thing&gt;.<p>
<a name="%_sec_7.1.1"></a>
<h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.1.1">7.1.1&nbsp;&nbsp;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>
&lt;Intertoken space&gt; 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 &lt;delimiter&gt;, 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 &lt;num <em>R</em>&gt;, &lt;complex <em>R</em>&gt;, &lt;real
<em>R</em>&gt;, &lt;ureal <em>R</em>&gt;, &lt;uinteger <em>R</em>&gt;, and &lt;prefix <em>R</em>&gt;
should be replicated for <em>R</em> = 2, 8, 10,
and 16. There are no rules for &lt;decimal 2&gt;, &lt;decimal
8&gt;, and &lt;decimal 16&gt;, 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&nbsp;&nbsp;External representations</a></h3><p>
<p>
&lt;Datum&gt; is what the <tt>read</tt> procedure (section&nbsp;<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
&lt;expression&gt; will also parse as a &lt;datum&gt;. <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&nbsp;&nbsp;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&nbsp;&nbsp;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 &lt;quasiquotation&gt;s, a &lt;list qq template <em>D</em>&gt; can sometimes
be confused with either an &lt;unquotation <em>D</em>&gt; or a &lt;splicing
unquotation <em>D</em>&gt;. The interpretation as an
&lt;unquotation&gt; or &lt;splicing
unquotation <em>D</em>&gt; 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&nbsp;&nbsp;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&nbsp;&nbsp;Programs and definitions</a></h3><p>
<p><div align=left><img src="r5rs-Z-G-11.gif" border="0"></div><p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p><a name="%_sec_7.2"></a>
<h2><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.2">7.2&nbsp;&nbsp;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&nbsp;[<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, &lt;undefined&gt; 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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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&nbsp;&nbsp;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>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p><a name="%_sec_7.3"></a>
<h2><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.3">7.3&nbsp;&nbsp;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&nbsp;<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&nbsp;<tt>cond</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;(else&nbsp;=&gt;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(else&nbsp;result1&nbsp;result2&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;=&gt;&nbsp;result))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp&nbsp;test))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;temp&nbsp;(result&nbsp;temp))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;=&gt;&nbsp;result)&nbsp;clause1&nbsp;clause2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp&nbsp;test))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;temp<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(result&nbsp;temp)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;clause1&nbsp;clause2&nbsp;...))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test))&nbsp;test)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test)&nbsp;clause1&nbsp;clause2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp&nbsp;test))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;temp<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;clause1&nbsp;clause2&nbsp;...))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;result1&nbsp;result2&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;result1&nbsp;result2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clause1&nbsp;clause2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;clause1&nbsp;clause2&nbsp;...)))))<br>
<p></tt><p>
<tt><p>(define-syntax&nbsp;<tt>case</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;(else)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;(key&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clauses&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((atom-key&nbsp;(key&nbsp;...)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;atom-key&nbsp;clauses&nbsp;...)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;key<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else&nbsp;result1&nbsp;result2&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;key<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((atoms&nbsp;...)&nbsp;result1&nbsp;result2&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(memv&nbsp;key&nbsp;'(atoms&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;key<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((atoms&nbsp;...)&nbsp;result1&nbsp;result2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clause&nbsp;clauses&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(memv&nbsp;key&nbsp;'(atoms&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;key&nbsp;clause&nbsp;clauses&nbsp;...)))))<br>
<p></tt><p>
<tt><p>(define-syntax&nbsp;<tt>and</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((and)&nbsp;<tt>#t</tt>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((and&nbsp;test)&nbsp;test)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((and&nbsp;test1&nbsp;test2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test1&nbsp;(and&nbsp;test2&nbsp;...)&nbsp;<tt>#f</tt>))))<br>
<p></tt><p>
<tt><p>(define-syntax&nbsp;<tt>or</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((or)&nbsp;<tt>#f</tt>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((or&nbsp;test)&nbsp;test)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((or&nbsp;test1&nbsp;test2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((x&nbsp;test1))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;x&nbsp;x&nbsp;(or&nbsp;test2&nbsp;...))))))<br>
<p></tt><p>
<tt><p>(define-syntax&nbsp;<tt>let</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((let&nbsp;((name&nbsp;val)&nbsp;...)&nbsp;body1&nbsp;body2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((lambda&nbsp;(name&nbsp;...)&nbsp;body1&nbsp;body2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((let&nbsp;tag&nbsp;((name&nbsp;val)&nbsp;...)&nbsp;body1&nbsp;body2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;((tag&nbsp;(lambda&nbsp;(name&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body1&nbsp;body2&nbsp;...)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val&nbsp;...))))<br>
<p></tt><p>
<tt><p>(define-syntax&nbsp;<tt>let*</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((let*&nbsp;()&nbsp;body1&nbsp;body2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;()&nbsp;body1&nbsp;body2&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((let*&nbsp;((name1&nbsp;val1)&nbsp;(name2&nbsp;val2)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body1&nbsp;body2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((name1&nbsp;val1))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let*&nbsp;((name2&nbsp;val2)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body1&nbsp;body2&nbsp;...)))))<br>
<p></tt><p>
The following <tt>letrec</tt> macro uses the symbol <tt>&lt;undefined&gt;</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&nbsp;<tt>letrec</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;((var1&nbsp;init1)&nbsp;...)&nbsp;body&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec&nbsp;&quot;generate_temp_names&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(var1&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;&quot;generate_temp_names&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(temp1&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((var1&nbsp;&lt;undefined&gt;)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp1&nbsp;init1)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(set!&nbsp;var1&nbsp;temp1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;&quot;generate_temp_names&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(x&nbsp;y&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(temp&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec&nbsp;&quot;generate_temp_names&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(y&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(newtemp&nbsp;temp&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...))))<br>
<p></tt><p>
<tt><p>(define-syntax&nbsp;<tt>begin</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((begin&nbsp;exp&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((lambda&nbsp;()&nbsp;exp&nbsp;...)))))<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&nbsp;begin<br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((begin&nbsp;exp)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exp)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((begin&nbsp;exp1&nbsp;exp2&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((x&nbsp;exp1))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;exp2&nbsp;...)))))<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&nbsp;<tt>do</tt><br>
&nbsp;&nbsp;(syntax-rules&nbsp;()<br>
&nbsp;&nbsp;&nbsp;&nbsp;((do&nbsp;((var&nbsp;init&nbsp;step&nbsp;...)&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(test&nbsp;expr&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((loop<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(lambda&nbsp;(var&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;#f&nbsp;#f)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expr&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;(do&nbsp;&quot;step&quot;&nbsp;var&nbsp;step&nbsp;...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...))))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;init&nbsp;...)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;((do&nbsp;&quot;step&quot;&nbsp;x)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x)<br>
&nbsp;&nbsp;&nbsp;&nbsp;((do&nbsp;&quot;step&quot;&nbsp;x&nbsp;y)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y)))<br>
<p></tt><p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</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>&nbsp;</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''&nbsp;[<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>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</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>&nbsp;</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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</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>&nbsp;</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&nbsp;integrate-system<br>
&nbsp;&nbsp;(lambda&nbsp;(system-derivative&nbsp;initial-state&nbsp;h)<br>
&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((next&nbsp;(runge-kutta-4&nbsp;system-derivative&nbsp;h)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec&nbsp;((states<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons&nbsp;initial-state<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(delay&nbsp;(map-streams&nbsp;next<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;states)))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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&nbsp;runge-kutta-4<br>
&nbsp;&nbsp;(lambda&nbsp;(f&nbsp;h)<br>
&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((*h&nbsp;(scale-vector&nbsp;h))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*2&nbsp;(scale-vector&nbsp;2))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*1/2&nbsp;(scale-vector&nbsp;(/&nbsp;1&nbsp;2)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*1/6&nbsp;(scale-vector&nbsp;(/&nbsp;1&nbsp;6))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(lambda&nbsp;(y)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;y&nbsp;is&nbsp;a&nbsp;system&nbsp;state<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let*&nbsp;((k0&nbsp;(*h&nbsp;(f&nbsp;y)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(k1&nbsp;(*h&nbsp;(f&nbsp;(add-vectors&nbsp;y&nbsp;(*1/2&nbsp;k0)))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(k2&nbsp;(*h&nbsp;(f&nbsp;(add-vectors&nbsp;y&nbsp;(*1/2&nbsp;k1)))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(k3&nbsp;(*h&nbsp;(f&nbsp;(add-vectors&nbsp;y&nbsp;k2)))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(add-vectors&nbsp;y<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*1/6&nbsp;(add-vectors&nbsp;k0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*2&nbsp;k1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*2&nbsp;k2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k3))))))))<br>
<br>
(define&nbsp;elementwise<br>
&nbsp;&nbsp;(lambda&nbsp;(f)<br>
&nbsp;&nbsp;&nbsp;&nbsp;(lambda&nbsp;vectors<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(generate-vector<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(vector-length&nbsp;(car&nbsp;vectors))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(lambda&nbsp;(i)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply&nbsp;f<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;(lambda&nbsp;(v)&nbsp;(vector-ref&nbsp;&nbsp;v&nbsp;i))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vectors)))))))<br>
<br>
(define&nbsp;generate-vector<br>
&nbsp;&nbsp;(lambda&nbsp;(size&nbsp;proc)<br>
&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((ans&nbsp;(make-vector&nbsp;size)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec&nbsp;((loop<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(lambda&nbsp;(i)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;((=&nbsp;i&nbsp;size)&nbsp;ans)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(vector-set!&nbsp;ans&nbsp;i&nbsp;(proc&nbsp;i))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;(+&nbsp;i&nbsp;1)))))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;0)))))<br>
<br>
(define&nbsp;add-vectors&nbsp;(elementwise&nbsp;+))<br>
<br>
(define&nbsp;scale-vector<br>
&nbsp;&nbsp;(lambda&nbsp;(s)<br>
&nbsp;&nbsp;&nbsp;&nbsp;(elementwise&nbsp;(lambda&nbsp;(x)&nbsp;(*&nbsp;x&nbsp;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&nbsp;map-streams<br>
&nbsp;&nbsp;(lambda&nbsp;(f&nbsp;s)<br>
&nbsp;&nbsp;&nbsp;&nbsp;(cons&nbsp;(f&nbsp;(head&nbsp;s))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(delay&nbsp;(map-streams&nbsp;f&nbsp;(tail&nbsp;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&nbsp;head&nbsp;car)<br>
(define&nbsp;tail<br>
&nbsp;&nbsp;(lambda&nbsp;(stream)&nbsp;(force&nbsp;(cdr&nbsp;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&nbsp;damped-oscillator<br>
&nbsp;&nbsp;(lambda&nbsp;(R&nbsp;L&nbsp;C)<br>
&nbsp;&nbsp;&nbsp;&nbsp;(lambda&nbsp;(state)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((Vc&nbsp;(vector-ref&nbsp;state&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Il&nbsp;(vector-ref&nbsp;state&nbsp;1)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(vector&nbsp;(-&nbsp;0&nbsp;(+&nbsp;(/&nbsp;Vc&nbsp;(*&nbsp;R&nbsp;C))&nbsp;(/&nbsp;Il&nbsp;C)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(/&nbsp;Vc&nbsp;L))))))<br>
<br>
(define&nbsp;the-states<br>
&nbsp;&nbsp;(integrate-system<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(damped-oscillator&nbsp;10000&nbsp;1000&nbsp;.001)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'#(1&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.01))<p></tt><p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</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>&nbsp;</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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<td>
Robert G. Burger&nbsp;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&nbsp;108-116.<p>
<p><tr><td align=right valign=top><a name="\cite{RRRS}"></a>[4]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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&nbsp;1-55, 1991.<p>
<p><tr><td align=right valign=top><a name="\cite{macrosthatwork}"></a>[7]&nbsp;&nbsp;<td> William Clinger and Jonathan Rees.
Macros that work.
In <i>Proceedings of the 1991 ACM Conference on Principles of
Programming Languages</i>, pages&nbsp;155-162.<p>
<p><tr><td align=right valign=top><a name="\cite{propertailrecursion}"></a>[8]&nbsp;&nbsp;<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]&nbsp;&nbsp;<td>
R.&nbsp;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]&nbsp;&nbsp;<td>
Carol Fessenden, William Clinger, Daniel P.&nbsp;Friedman, and Christopher Haynes.
Scheme 311 version 4 reference manual.
Indiana University Computer Science Technical Report 137, February 1983.
Superseded by&nbsp;[<a href="#%_sec_7.3">11</a>].<p>
<p><tr><td align=right valign=top><a name="\cite{Scheme84}"></a>[11]&nbsp;&nbsp;<td>
D.&nbsp;Friedman, C.&nbsp;Haynes, E.&nbsp;Kohlbecker, and M.&nbsp;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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<td>
Eugene E. Kohlbecker&nbsp;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]&nbsp;&nbsp;<td>
Eugene E.&nbsp;Kohlbecker&nbsp;Jr., Daniel P.&nbsp;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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<td>
Kent M.&nbsp;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]&nbsp;&nbsp;<td>
Jonathan A.&nbsp;Rees and Norman I.&nbsp;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]&nbsp;&nbsp;<td>
Jonathan A.&nbsp;Rees, Norman I.&nbsp;Adams IV, and James R.&nbsp;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]&nbsp;&nbsp;<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&nbsp;37-79, December 1986.<p>
<p><tr><td align=right valign=top><a name="\cite{Reynolds72}"></a>[24]&nbsp;&nbsp;<td>
John Reynolds.
Definitional interpreters for higher order programming languages.
In <i>ACM Conference Proceedings</i>, pages 717-740.
ACM, &nbsp;1972.<p>
<p><tr><td align=right valign=top><a name="\cite{Scheme78}"></a>[25]&nbsp;&nbsp;<td>
Guy Lewis Steele Jr.&nbsp;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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<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]&nbsp;&nbsp;<td>
Joseph E.&nbsp;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]&nbsp;&nbsp;<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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span class=disable><span>; &nbsp;&nbsp;</span>index</span>]</div><p>
<a name="%_chap_Temp_11"></a>
<h1 class=chapter>
<div class=chapterheading>&nbsp;</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>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&lt;</tt></a>, <a href="r5rs-Z-H-10.html#%_idx_638">[2]</a><br>
<a href="r5rs-Z-H-9.html#%_idx_260"><tt>&lt;=</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>=&gt;</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_258"><tt>&gt;</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_262"><tt>&gt;=</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-&gt;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&lt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_462"><tt>char-ci&lt;?</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&gt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_464"><tt>char-ci&gt;?</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&lt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_452"><tt>char&lt;?</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&gt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_454"><tt>char&gt;?</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-&gt;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-&gt;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-&gt;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-&gt;string</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_550"><tt>list-&gt;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-&gt;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-&gt;list</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_352"><tt>string-&gt;number</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_446"><tt>string-&gt;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&lt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_514"><tt>string-ci&lt;?</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&gt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_516"><tt>string-ci&gt;?</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&lt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_506"><tt>string&lt;?</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&gt;=?</tt></a><br>
<a href="r5rs-Z-H-9.html#%_idx_508"><tt>string&gt;?</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-&gt;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-&gt;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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span class=disable><span>; &nbsp;&nbsp;</span>index</span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span class=disable>contents</span><span><span class=disable>; &nbsp;&nbsp;</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>&nbsp;</div><p>
Contents</h1><p>
<p><p> <a name="%_toc_start"><p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_Temp_1" href="r5rs-Z-H-1.html#%_chap_Temp_1">Summary</a></b><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_Temp_3" href="r5rs-Z-H-3.html#%_chap_Temp_3">Introduction</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_Temp_4" href="r5rs-Z-H-3.html#%_sec_Temp_4">Background</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_Temp_5" href="r5rs-Z-H-3.html#%_sec_Temp_5">Acknowledgements</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_1" href="r5rs-Z-H-4.html#%_chap_1">1&nbsp;&nbsp;Overview of Scheme</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.1" href="r5rs-Z-H-4.html#%_sec_1.1">1.1&nbsp;&nbsp;Semantics</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.2" href="r5rs-Z-H-4.html#%_sec_1.2">1.2&nbsp;&nbsp;Syntax</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.3" href="r5rs-Z-H-4.html#%_sec_1.3">1.3&nbsp;&nbsp;Notation and terminology</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.3.1" href="r5rs-Z-H-4.html#%_sec_1.3.1">1.3.1&nbsp;&nbsp;Primitive, library, and optional features</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.3.2" href="r5rs-Z-H-4.html#%_sec_1.3.2">1.3.2&nbsp;&nbsp;Error situations and unspecified behavior</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.3.3" href="r5rs-Z-H-4.html#%_sec_1.3.3">1.3.3&nbsp;&nbsp;Entry format</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.3.4" href="r5rs-Z-H-4.html#%_sec_1.3.4">1.3.4&nbsp;&nbsp;Evaluation examples</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_1.3.5" href="r5rs-Z-H-4.html#%_sec_1.3.5">1.3.5&nbsp;&nbsp;Naming conventions</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_2" href="r5rs-Z-H-5.html#%_chap_2">2&nbsp;&nbsp;Lexical conventions</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_2.1" href="r5rs-Z-H-5.html#%_sec_2.1">2.1&nbsp;&nbsp;Identifiers</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_2.2" href="r5rs-Z-H-5.html#%_sec_2.2">2.2&nbsp;&nbsp;Whitespace and comments</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_2.3" href="r5rs-Z-H-5.html#%_sec_2.3">2.3&nbsp;&nbsp;Other notations</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_3" href="r5rs-Z-H-6.html#%_chap_3">3&nbsp;&nbsp;Basic concepts</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_3.1" href="r5rs-Z-H-6.html#%_sec_3.1">3.1&nbsp;&nbsp;Variables, syntactic keywords, and regions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_3.2" href="r5rs-Z-H-6.html#%_sec_3.2">3.2&nbsp;&nbsp;Disjointness of types</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_3.3" href="r5rs-Z-H-6.html#%_sec_3.3">3.3&nbsp;&nbsp;External representations</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_3.4" href="r5rs-Z-H-6.html#%_sec_3.4">3.4&nbsp;&nbsp;Storage model</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_3.5" href="r5rs-Z-H-6.html#%_sec_3.5">3.5&nbsp;&nbsp;Proper tail recursion</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_4" href="r5rs-Z-H-7.html#%_chap_4">4&nbsp;&nbsp;Expressions</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.1" href="r5rs-Z-H-7.html#%_sec_4.1">4.1&nbsp;&nbsp;Primitive expression types</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.1.1" href="r5rs-Z-H-7.html#%_sec_4.1.1">4.1.1&nbsp;&nbsp;Variable references</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.1.2" href="r5rs-Z-H-7.html#%_sec_4.1.2">4.1.2&nbsp;&nbsp;Literal expressions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.1.3" href="r5rs-Z-H-7.html#%_sec_4.1.3">4.1.3&nbsp;&nbsp;Procedure calls</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.1.4" href="r5rs-Z-H-7.html#%_sec_4.1.4">4.1.4&nbsp;&nbsp;Procedures</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.1.5" href="r5rs-Z-H-7.html#%_sec_4.1.5">4.1.5&nbsp;&nbsp;Conditionals</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.1.6" href="r5rs-Z-H-7.html#%_sec_4.1.6">4.1.6&nbsp;&nbsp;Assignments</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.2" href="r5rs-Z-H-7.html#%_sec_4.2">4.2&nbsp;&nbsp;Derived expression types</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.2.1" href="r5rs-Z-H-7.html#%_sec_4.2.1">4.2.1&nbsp;&nbsp;Conditionals</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.2.2" href="r5rs-Z-H-7.html#%_sec_4.2.2">4.2.2&nbsp;&nbsp;Binding constructs</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.2.3" href="r5rs-Z-H-7.html#%_sec_4.2.3">4.2.3&nbsp;&nbsp;Sequencing</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.2.4" href="r5rs-Z-H-7.html#%_sec_4.2.4">4.2.4&nbsp;&nbsp;Iteration</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.2.5" href="r5rs-Z-H-7.html#%_sec_4.2.5">4.2.5&nbsp;&nbsp;Delayed evaluation</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.2.6" href="r5rs-Z-H-7.html#%_sec_4.2.6">4.2.6&nbsp;&nbsp;Quasiquotation</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.3" href="r5rs-Z-H-7.html#%_sec_4.3">4.3&nbsp;&nbsp;Macros</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.3.1" href="r5rs-Z-H-7.html#%_sec_4.3.1">4.3.1&nbsp;&nbsp;Binding constructs for syntactic keywords</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_4.3.2" href="r5rs-Z-H-7.html#%_sec_4.3.2">4.3.2&nbsp;&nbsp;Pattern language</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_5" href="r5rs-Z-H-8.html#%_chap_5">5&nbsp;&nbsp;Program structure</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_5.1" href="r5rs-Z-H-8.html#%_sec_5.1">5.1&nbsp;&nbsp;Programs</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_5.2" href="r5rs-Z-H-8.html#%_sec_5.2">5.2&nbsp;&nbsp;Definitions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_5.2.1" href="r5rs-Z-H-8.html#%_sec_5.2.1">5.2.1&nbsp;&nbsp;Top level definitions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_5.2.2" href="r5rs-Z-H-8.html#%_sec_5.2.2">5.2.2&nbsp;&nbsp;Internal definitions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_5.3" href="r5rs-Z-H-8.html#%_sec_5.3">5.3&nbsp;&nbsp;Syntax definitions</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_6" href="r5rs-Z-H-9.html#%_chap_6">6&nbsp;&nbsp;Standard procedures</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.1" href="r5rs-Z-H-9.html#%_sec_6.1">6.1&nbsp;&nbsp;Equivalence predicates</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.2" href="r5rs-Z-H-9.html#%_sec_6.2">6.2&nbsp;&nbsp;Numbers</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.2.1" href="r5rs-Z-H-9.html#%_sec_6.2.1">6.2.1&nbsp;&nbsp;Numerical types</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.2.2" href="r5rs-Z-H-9.html#%_sec_6.2.2">6.2.2&nbsp;&nbsp;Exactness</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.2.3" href="r5rs-Z-H-9.html#%_sec_6.2.3">6.2.3&nbsp;&nbsp;Implementation restrictions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.2.4" href="r5rs-Z-H-9.html#%_sec_6.2.4">6.2.4&nbsp;&nbsp;Syntax of numerical constants</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.2.5" href="r5rs-Z-H-9.html#%_sec_6.2.5">6.2.5&nbsp;&nbsp;Numerical operations</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.2.6" href="r5rs-Z-H-9.html#%_sec_6.2.6">6.2.6&nbsp;&nbsp;Numerical input and output</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.3" href="r5rs-Z-H-9.html#%_sec_6.3">6.3&nbsp;&nbsp;Other data types</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.3.1" href="r5rs-Z-H-9.html#%_sec_6.3.1">6.3.1&nbsp;&nbsp;Booleans</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.3.2" href="r5rs-Z-H-9.html#%_sec_6.3.2">6.3.2&nbsp;&nbsp;Pairs and lists</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.3.3" href="r5rs-Z-H-9.html#%_sec_6.3.3">6.3.3&nbsp;&nbsp;Symbols</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.3.4" href="r5rs-Z-H-9.html#%_sec_6.3.4">6.3.4&nbsp;&nbsp;Characters</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.3.5" href="r5rs-Z-H-9.html#%_sec_6.3.5">6.3.5&nbsp;&nbsp;Strings</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.3.6" href="r5rs-Z-H-9.html#%_sec_6.3.6">6.3.6&nbsp;&nbsp;Vectors</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.4" href="r5rs-Z-H-9.html#%_sec_6.4">6.4&nbsp;&nbsp;Control features</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.5" href="r5rs-Z-H-9.html#%_sec_6.5">6.5&nbsp;&nbsp;<tt>Eval</tt></a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.6" href="r5rs-Z-H-9.html#%_sec_6.6">6.6&nbsp;&nbsp;Input and output</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.6.1" href="r5rs-Z-H-9.html#%_sec_6.6.1">6.6.1&nbsp;&nbsp;Ports</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.6.2" href="r5rs-Z-H-9.html#%_sec_6.6.2">6.6.2&nbsp;&nbsp;Input</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.6.3" href="r5rs-Z-H-9.html#%_sec_6.6.3">6.6.3&nbsp;&nbsp;Output</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_6.6.4" href="r5rs-Z-H-9.html#%_sec_6.6.4">6.6.4&nbsp;&nbsp;System interface</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_7" href="r5rs-Z-H-10.html#%_chap_7">7&nbsp;&nbsp;Formal syntax and semantics</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.1" href="r5rs-Z-H-10.html#%_sec_7.1">7.1&nbsp;&nbsp;Formal syntax</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.1.1" href="r5rs-Z-H-10.html#%_sec_7.1.1">7.1.1&nbsp;&nbsp;Lexical structure</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.1.2" href="r5rs-Z-H-10.html#%_sec_7.1.2">7.1.2&nbsp;&nbsp;External representations</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.1.3" href="r5rs-Z-H-10.html#%_sec_7.1.3">7.1.3&nbsp;&nbsp;Expressions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.1.4" href="r5rs-Z-H-10.html#%_sec_7.1.4">7.1.4&nbsp;&nbsp;Quasiquotations</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.1.5" href="r5rs-Z-H-10.html#%_sec_7.1.5">7.1.5&nbsp;&nbsp;Transformers</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.1.6" href="r5rs-Z-H-10.html#%_sec_7.1.6">7.1.6&nbsp;&nbsp;Programs and definitions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.2" href="r5rs-Z-H-10.html#%_sec_7.2">7.2&nbsp;&nbsp;Formal semantics</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.2.1" href="r5rs-Z-H-10.html#%_sec_7.2.1">7.2.1&nbsp;&nbsp;Abstract syntax</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.2.2" href="r5rs-Z-H-10.html#%_sec_7.2.2">7.2.2&nbsp;&nbsp;Domain equations</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.2.3" href="r5rs-Z-H-10.html#%_sec_7.2.3">7.2.3&nbsp;&nbsp;Semantic functions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.2.4" href="r5rs-Z-H-10.html#%_sec_7.2.4">7.2.4&nbsp;&nbsp;Auxiliary functions</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_7.3" href="r5rs-Z-H-10.html#%_sec_7.3">7.3&nbsp;&nbsp;Derived expression types</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_Temp_6" href="r5rs-Z-H-11.html#%_chap_Temp_6">Notes</a></b><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a name="%_toc_%_sec_Temp_7" href="r5rs-Z-H-11.html#%_sec_Temp_7">Language changes</a><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_Temp_8" href="r5rs-Z-H-12.html#%_chap_Temp_8">Additional material</a></b><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_Temp_9" href="r5rs-Z-H-13.html#%_chap_Temp_9">Example</a></b><br>
<p><b>
&nbsp; &nbsp; <a name="%_toc_%_chap_Temp_10" href="r5rs-Z-H-14.html#%_chap_Temp_10">Bibliography</a></b><br>
<p><b>
&nbsp; &nbsp; <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>; &nbsp;&nbsp;</span><span class=disable>contents</span><span><span class=disable>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

View File

@ -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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</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>&nbsp;</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&nbsp;[<a href="r5rs-Z-H-14.html#%_sec_7.3">28</a>]. A revised report&nbsp;[<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&nbsp;[<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&nbsp;[<a href="r5rs-Z-H-14.html#%_sec_7.3">21</a>,&nbsp;<a href="r5rs-Z-H-14.html#%_sec_7.3">17</a>,&nbsp;<a href="r5rs-Z-H-14.html#%_sec_7.3">10</a>]. An introductory
computer science textbook using Scheme was published in
1984&nbsp;[<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&nbsp;[<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&nbsp;[<a href="r5rs-Z-H-14.html#%_sec_7.3">23</a>],
and in the spring of 1988&nbsp;[<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&uuml;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.&nbsp;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>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More