commit 0c0af57d1c074db89ad29d7900050f7abbc3c225 Author: Lassi Kortela Date: Thu Jan 12 14:56:11 2023 +0200 Add contents of schemers.org-20230110.tgz SHA1 b2ce2f884321b4e89eda5ecf4ad2914565c6da23 diff --git a/www/Documents/FAQ/index.html b/www/Documents/FAQ/index.html new file mode 100644 index 0000000..a79635c --- /dev/null +++ b/www/Documents/FAQ/index.html @@ -0,0 +1,12 @@ + + + +Scheme Frequently Asked Questions + + +

+This document has +moved to a Wiki. +

+ + diff --git a/www/Documents/Proposals/shivers-list-lib-10-16-1998 b/www/Documents/Proposals/shivers-list-lib-10-16-1998 new file mode 100644 index 0000000..5b9ab86 --- /dev/null +++ b/www/Documents/Proposals/shivers-list-lib-10-16-1998 @@ -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 diff --git a/www/Documents/Standards/Charter/2004-10-13.pdf b/www/Documents/Standards/Charter/2004-10-13.pdf new file mode 100644 index 0000000..76a85d3 Binary files /dev/null and b/www/Documents/Standards/Charter/2004-10-13.pdf differ diff --git a/www/Documents/Standards/Charter/charter-mar-2006.txt b/www/Documents/Standards/Charter/charter-mar-2006.txt new file mode 100644 index 0000000..c7241f1 --- /dev/null +++ b/www/Documents/Standards/Charter/charter-mar-2006.txt @@ -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 + + diff --git a/www/Documents/Standards/Charter/diffs-2006-03-2004-10.diff b/www/Documents/Standards/Charter/diffs-2006-03-2004-10.diff new file mode 100644 index 0000000..7f2c43d --- /dev/null +++ b/www/Documents/Standards/Charter/diffs-2006-03-2004-10.diff @@ -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. + +- +- 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. +- ++ 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 + + diff --git a/www/Documents/Standards/Charter/index.shtml b/www/Documents/Standards/Charter/index.shtml new file mode 100644 index 0000000..fac61e6 --- /dev/null +++ b/www/Documents/Standards/Charter/index.shtml @@ -0,0 +1,106 @@ + + + + + + +schemers.org: Documents: Standards: A Charter for Change + + + +

A Charter for Change (R6RS)

+ +

+A draft version of R6RS is now available from +www.r6rs.org. +The charter provides for a six-month public comment period. +The comment period is now open and will continue until March 15, 2007. +

+ +

+The R6RS editors asked for the following announcements to be included +here: +

+ +
+ +
    + +
  1. +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 +http://www.r6rs.org/r6rs-editors/. +
  2. + +
  3. +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 +http://www.r6rs.org/process.html. +
  4. + +
  5. +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. +
  6. + +
+ +

+We appreciate the response to date from members of the Scheme community. +

+ +
+ +

+Status Report in June 2006: +HTML, +PDF +

+ +

+Updates in March 2006: +

+

+ +

+Status Report from March 2005. +

+ +

+Amended charter from October 2004, +with a revised progress report +on R6RS. +

+ +

+Original charter of January 2004. +

+ + + + diff --git a/www/Documents/Standards/Charter/jan-2004.txt b/www/Documents/Standards/Charter/jan-2004.txt new file mode 100644 index 0000000..8ea19f7 --- /dev/null +++ b/www/Documents/Standards/Charter/jan-2004.txt @@ -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 diff --git a/www/Documents/Standards/Charter/mar-2005.txt b/www/Documents/Standards/Charter/mar-2005.txt new file mode 100644 index 0000000..4027d91 --- /dev/null +++ b/www/Documents/Standards/Charter/mar-2005.txt @@ -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. + diff --git a/www/Documents/Standards/Charter/oct-2004.txt b/www/Documents/Standards/Charter/oct-2004.txt new file mode 100644 index 0000000..a2f1d19 --- /dev/null +++ b/www/Documents/Standards/Charter/oct-2004.txt @@ -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. + + + 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. + + + + * 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 diff --git a/www/Documents/Standards/Charter/report-mar-2006.txt b/www/Documents/Standards/Charter/report-mar-2006.txt new file mode 100644 index 0000000..f44966e --- /dev/null +++ b/www/Documents/Standards/Charter/report-mar-2006.txt @@ -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. + + + + + diff --git a/www/Documents/Standards/Charter/status-jun-2006/status-jun06.html b/www/Documents/Standards/Charter/status-jun-2006/status-jun06.html new file mode 100644 index 0000000..31ff781 --- /dev/null +++ b/www/Documents/Standards/Charter/status-jun-2006/status-jun06.html @@ -0,0 +1,1104 @@ + + + + + +R6RS Status Report + + + + + + + +

R6RS Status Report

+

Kent Dybvig, Will Clinger, Matthew Flatt, Mike Sperber, and Anton van Straaten

+

June 21, 2006

+ + +

+ + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1. Overview
2. Change Log
3. Guiding Principles
4. Decisions
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
4.1. Language structure
4.2. Programs
4.3. Features eliminated
4.4. Changes
4.5. Features added
4.6. Features to be added
4.7. Reaffirmations
4.8. Beyond R6RS
5. Mutability of pairs
6. Reference implementations 
7. Work in Progress
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
7.1. Libraries
7.2. Records
7.3. Unicode
7.4. Arithmetic
7.5. Exceptions
7.6. I/O
7.7. Macros
7.8. Binary block datatype
7.9. Other possible changes
8. Completion Process
+ + +

+ + + + +

1. Overview

+ + + + +

+This status report describes the current state of the R6RS +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 Revised6 Report on Scheme. + +

+ + + + +

2. Change Log

+ + + + +

+Here is a brief overview of the important changes to this document since +the February 2006 version. + +

+Section 4.1 provides some examples of libraries +we believe might be required by R6RS. + +

+Section 4.2 (new): describes the forms which portable +code can take. + +

+Section 4.3: now lists interaction-environment, +top-level definitions, and top-level expressions among the eliminated +features. +It also lists scheme-report-environment, +null-environment quotient, remainder, and +modulo among those that have been relegated to an R5RS +compatibility library. + +

+Section 4.4 lists several additional changes. +(All but the first four listed are new.) + +

+Section 4.5 lists several added features. +(All but the first six listed are new.) + +

+Section 4.6 lists two new features to be +added: scripts and a byte-vector datatype. +Read/write invariance is now covered in Section 4.4. + +

+Section 4.7 lists several newly reaffirmed features. +(All but the first three listed are new.) + +

+Section 4.8 lists several features that are officially +not under consideration for R6RS. +(All but the first four listed are new.) + +

+Section 5 announces that the editors have decided +to reconsider whether to make pairs immutable and may even consider +whether to require that the second argument of cons be a list. + +

+Section 6 (new) describes the editors' commitment to provide +reference implementations for the major subsystems included in R6RS. + +

+Section 7.2 documents that we have now withdrawn the +record SRFI as planned, after receiving valuable community input, and that +support for records will be based on this SRFI. +It also describes decisions we have made regarding some issues left +open by the SRFI. + +

+Section 7.3 documents that we have now withdrawn the +Unicode SRFI as planned, after receiving valuable community input, and +that support for Unicode will be based on this SRFI. + +

+Section 7.4 documents that the arithmetic SRFI +has undergone revisions. + +

+Section 7.5 documents that we have decided to base the +R6RS exception system on +SRFI's 34 +and 35. + +

+Section 7.6 documents that we have decided to base the +R6RS I/O system on +SRFI's 79 +and 81. + +

+Section 7.8 (new) documents that we have decided to +base R6RS byte vectors on +SRFI 74. + +

+Section 7.9 now lists enumerations and +eval among possible features and changes. +Some of the previously listed items are no longer under consideration +and are now listed as "beyond R6RS" in Section 4.8: + +

+

+ +

+One is now mentioned in Section 4.1: + +

+

+ +

+One is now mentioned in Section 4.7: + +

+

+ +

+Some are listed as changes to be made, features added, or features to be added: + +

+

+ +

+Section 8 now lists Sperber and Clinger as the editors +in charge of byte vectors. + +

+ + + + +

3. Guiding Principles

+ + + + +

+To help guide the standardization effort, the editors have adopted a +set of principles, presented below. +They are, like R6RS itself, a work in progress and still subject +to change. + +

+Like R5RS Scheme, R6RS Scheme should: + +

+

+ +

+In addition, R6RS Scheme should: + +

+

+ +

+In general, R6RS 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. + +

+R6RS Scheme should also be backward compatible with programs +written in R5RS 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. + +

+ + + + +

4. Decisions

+ + + + +

+This section outlines the decisions made to date. + +

+ + + + +

4.1. Language structure

+ + + + +

+The R6RS language consists of a core language and a set of additional +libraries. +The exact composition of the core language is expected to fluctuate as +other features of R6RS are finalized. + +

+Some examples of the kind of libraries which R6RS might specify are as +follows: + +

+

+ + +

+ + + + +

4.2. Programs

+ + + + +

+R6RS programs exist only in the form of libraries and scripts. +A library consists of a single top-level library form. +Libraries may import variable and keyword bindings from other +libraries (standard or user-defined) and may export variable and keyword +bindings. +A script consists of a standard script header and a single +top-level library. +All definitions and expressions must appear within a library form; +R6RS has no notion of a top-level definition or expression. +The eval procedure will likely, however, allow the +evaluation of an expression (but not a definition) within the scope of a +specified set of library bindings. + +

+ + + + +

4.3. Features eliminated

+ + + + +

+The following features of R5RS have been eliminated. + +

+

+ +

+The following features of R5RS are deprecated but will be available in +an R5RS compatibility library: + +

+

+ +

+ + + + +

4.4. Changes

+ + + + +

+The following syntactic and semantic changes have been made to existing +features. + +

+

+ +

+ + + + +

4.5. Features added

+ + + + +

+The following features have been added: + +

+

+ +

+ + + + +

4.6. Features to be added

+ + + + +

+The following features will be added, but the details have yet to be fully +worked out. + +

+

+ +

+ + + + +

4.7. Reaffirmations

+ + + + +

+The following features of R5RS are reaffirmed for R6RS. + +

+

+ +

+ + + + +

4.8. Beyond R6RS

+ + + + +

+The following features are definitely not under consideration for R6RS. +We encourage anyone interested in seeing any of these features in R7RS +to make concrete proposals via the SRFI process. + +

+

+ +

+ + + + +

5. Mutability of pairs

+ + + + +

+Although set-car! and set-cdr! were previously +reaffirmed (Section 4.7), the editors have decided to +reconsider whether pairs should be immutable in R6RS. +Members of the Scheme community wishing to weigh in on the issue +should contact one of the editors. + +

+Making pairs immutable would simplify argument error checks for some +list-processing operations, simplify the list? predicate, allow +apply not to copy the input list when invoking a procedure with a +dot interface, and allow program improvers to perform deforestation, i.e., +to eliminate some of the intermediate lists allocated when nested mapping, +reversing, appending and similar operations are used. +User-defined record types can be used in place of pairs whenever a mutable +data structure is required. + +

+On the other hand, making pairs immutable is an incompatible change that +would break some existing programs, and mutable pairs are natural building +blocks for various abstractions, like queues and streams. + + +

+A more radical change is to require that the second argument to +cons be a list, i.e., the empty list or a pair. +This would make list? constant time and further simplify argument +error checks for some list-processing operations. +Pairs would become useful only as building blocks for lists, and records +(or vectors) would have to be used for most other purposes for which pairs +are currently used. + +

+ + + + +

6. Reference implementations 

+ + + + +

+The editors will publish, along with the revised report proper, +nonnormative, portable (with implementation-dependent hooks as necessary), +and reasonably efficient reference implementations of the major subsystems +of R6RS, including the library, record, Unicode, arithmetic, +exceptions, I/O, and macro subsystems. +The editors may publish reference implementations of selected +additional features as well. + +

+ + + + +

7. Work in Progress

+ + + + +

+Most of the standardization effort is currently focused on several +subsystems. +Sections 7.1-7.8 list for +each subsystem any informal requirements the editors have +identified, the current status, and open questions. + +

+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 R6RS may, however, differ in minor +or significant ways from the published SRFI. + +

+A list of other items up for consideration is given in +Section 7.9. +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. + +

+ + + + +

7.1. Libraries

+ + + + +

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

+Support for libraries is under community discussion via +SRFI 83 (R6RS +Library Syntax). +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 +import and export forms is tied down, +what built-in libraries besides r6rs there might +be, and how to support subsetting and supersetting of libraries. + +

+ + + + +

7.2. Records

+ + + + +

+Informal requirements: + disjoint types, + syntactic interface, + mutable fields. + +

+Support for records will be based on +SRFI 76 (R6RS Records), +which has now been withdrawn as planned after revisions based in part on +community input. +While the SRFI did not fully specify the generativity of ordinary record +definitions, we have decided that they should be "run-time" generative +unless declared nongenerative. +We have also eliminated the restriction +that the parent of a nongenerative record be a nongenerative record, +and we decided to keep the "sealed" feature. + +

+Additionally, we have decided to allow an implementation to treat any or +all of its built-in types as records, i.e., record? may or may +not return true for an object of a built-in type. + + +

+ + + + +

7.3. Unicode

+ + + + +

+Informal requirements: + provision for Unicode characters and + character syntax, Unicode strings and string syntax; Unicode + character I/O; integer->char and char->integer are inverse + operations and support Unicode-specific text encodings; + write/read invariance for every datum, including symbols. + +

+Support for Unicode will be based on +SRFI 75 (R6RS Unicode +data), which has now been withdrawn as planned after revisions based in +part on community input. +See http://srfi.schemers.org/srfi-75/mail-archive/msg00309.html +for a discussion of probable differences between the withdrawn +SRFI and R6RS. + +

+ + + + +

7.4. Arithmetic

+ + + + +

+Informal requirements: + support for IEEE zeros, infinities, and NaNs, + clean up behavior of eqv? wrt numbers, + fix certain arithmetic operations, + transparency. + +

+Changes for R6RS arithmetic, including support for fixnum-specific, +flonum-specific, and bitwise operators and IEEE arithmetic, are under +community discussion via +SRFI 77 (Preliminary +Proposal for R6RS Arithmetic), which has recently been revised based in +part on community input. + +

+ + + + +

7.5. Exceptions

+ + + + +

+Informal requirements: + clarify the meaning of "is an error," + view exception handling as a means of communication between + parts of the program. + +

+The editors have decided to adopt +SRFI 34 (Exception Handling +for Programs) as the basis for the R6RS exception-handling system and +SRFI 35 (Conditions) as the +basis for the R6RS condition system. + +

+ + + + +

7.6. I/O

+ + + + +

+Informal requirements: + read-byte and write-byte, + ports that support binary I/O, + byte-vector datatype, + block read/write operations. + +

+The editors have decided to adopt +SRFI 79 (Primitive I/O) and +SRFI 81 (Port I/O) as the +basis for the R6RS I/O system. + +

+The byte-vector datatype requirement is addressed by the binary block +datatype (Section 7.8). + +

+ + + + +

7.7. Macros

+ + + + +

+Informal requirements: + specify expansion semantics, + specify interaction with modules, + allow procedural transformers, + hygiene-breaking operations, + maintain support for syntax-rules. + +

+The editors have decided to adopt syntax-case as currently +implemented in Chez Scheme and MzScheme, with various differences +to be worked out by Dybvig and Flatt. +Also, the underscore identifier ("_") 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 syntax-rules pattern. + +

+SRFI 93 (R6RS Syntax-Case +Macros) has recently been submitted. + +

+ + + + +

7.8. Binary block datatype

+ + + + +

+The editors have decided to adopt +SRFI 74 (Octet-Addressed +Binary Blocks) as the basis for byte-vector functionality in R6RS, +with the name bytes replaces the name blob. +In contrast with the SRFI, the contents of +(make-bytes n) is unspecified and an +optional fill argument has been added, as +with make-string and make-vector. + +

+ + + + +

7.9. Other possible changes

+ + + + +

+The following possible features and changes have been discussed without +resolution. + +

+

+ +

+ + + + +

8. Completion Process

+ + + + +

+We intend to deliver a draft R6RS to the Steering Committee by +September 1, 2006. +An initial internal (editors only) draft of R6RS has been created and +reflects most of the decisions the editors have made to date. +This draft will be updated as work wraps up on the major subsystems and +other issues. + +

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

+

+
+subsystem primary editor additional editors
+libraries Flatt Dybvig
+records Sperber Dybvig, van Straaten
+arithmetic Clinger Sperber
+Unicode Flatt Clinger
+macros Dybvig Flatt
+exceptions Sperber Clinger
+I/O Sperber van Straaten
+byte vectors Sperber Clinger
+core/library split van Straaten Dybvig
+hash tables van Straaten Clinger
+safe/unsafe mode Clinger Sperber
+
+
+ +

+At this point, our discussions will be limited mostly to the major +subsystems and the other possible features and changes described in +Section 7.9. +New issues may also be considered if this can be done without +jeopardizing our goal to submit a draft R6RS to the steering +committee by the target deadline. + +

+Responsibility for making sure that the editors complete their work and +communicate effectively lies with the chair (Dybvig) and responsibility +for completing the R6RS draft lies with the project editor (Sperber). + +

+ + + + diff --git a/www/Documents/Standards/Charter/status-jun-2006/status-jun06.pdf b/www/Documents/Standards/Charter/status-jun-2006/status-jun06.pdf new file mode 100644 index 0000000..9e0b8c3 Binary files /dev/null and b/www/Documents/Standards/Charter/status-jun-2006/status-jun06.pdf differ diff --git a/www/Documents/Standards/Charter/status-jun-2006/status.css b/www/Documents/Standards/Charter/status-jun-2006/status.css new file mode 100644 index 0000000..4ce783f --- /dev/null +++ b/www/Documents/Standards/Charter/status-jun-2006/status.css @@ -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} + diff --git a/www/Documents/Standards/Charter/status-mar-2006.html b/www/Documents/Standards/Charter/status-mar-2006.html new file mode 100644 index 0000000..51f1a95 --- /dev/null +++ b/www/Documents/Standards/Charter/status-mar-2006.html @@ -0,0 +1,677 @@ + + + + + +R6RS Status Report + + + + + + + +

R6RS Status Report

+

Kent Dybvig, Will Clinger, Matthew Flatt, Mike Sperber, and Anton van Straaten

+

February 24, 2006

+ + +

+ + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
1. Overview
2. Guiding Principles
3. Decisions
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
3.1. Structural changes
3.2. Features eliminated
3.3. Changes
3.4. Features added
3.5. Features to be added
3.6. Reaffirmations
3.7. Beyond R6RS
4. Work in Progress
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
4.1. Libraries
4.2. Records
4.3. Unicode
4.4. Arithmetic
4.5. Exceptions
4.6. I/O
4.7. Macros
4.8. Other possible changes
5. Completion Process
+ + +

+ + + +


1. Overview

+ + + +

+This status report describes the current state of the R6RS +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 R6RS. + +

+ + + +


2. Guiding Principles

+ + + +

+To help guide the standardization effort, the editors have adopted a +set of principles, presented below. +They are, like R6RS itself, a work in progress and still subject +to change. + +

+Like R5RS Scheme, R6RS Scheme should: + +

+

+ +

+In addition, R6RS Scheme should: + +

+

+ +

+In general, R6RS 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. + +

+R6RS Scheme should also be backward compatible with programs +written in R5RS 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. + +

+ + + +


3. Decisions

+ + + +

+This section outlines the decisions made to date. + +

+ + + +


3.1. Structural changes

+ + + +

+R6RS will consist of a core language and set of separate libraries. + + +

+The following features are definitely in the core language: + +

+

+ +

+The following features are definitely in a separate library. + +

+

+ +

+ + + +


3.2. Features eliminated

+ + + +

+The following features have been eliminated. + +

+

+ +

+ + + +


3.3. Changes

+ + + +

+The following syntactic and semantic changes have been made to existing +features. + +

+

+ +

+ + + +


3.4. Features added

+ + + +

+The following features have been added. + +

+

+ +

+ + + +


3.5. Features to be added

+ + + +

+The following features will be added once the details have been worked out. + +

+

+ +

+ + + +


3.6. Reaffirmations

+ + + +

+The following features of R5RS are reaffirmed for R6RS. + +

+

+ +

+ + + +


3.7. Beyond R6RS

+ + + +

+The following features are definitely not under consideration for R6RS. + +

+

+ +

+ + + +


4. Work in Progress

+ + + +

+Most of the standardization effort is currently focused on several +subsystems: libraries, records, Unicode, arithmetic, exceptions, I/O, +modules, and hash tables. +Sections 4.1-4.7 list for +each subsystem a set of informal requirements the editors have +identified, the current status, and open questions. + +

+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 R6RS may, however, differ in minor +or significant ways from the published SRFI. + +

+A list of other items up for consideration is given in +Section 4.8. +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. + +

+ + + +


4.1. Libraries

+ + + +

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

+Support for libraries is under community discussion via SRFI 83. +Two big issues have arisen: the need to clarify phases, +e.g., for compile-time modules that import at +compile-time, and how library names are written +(coding as strings is controversial). +Still up in the air are the extent to which the syntax of +import and export forms is tied down, +what built-in libraries besides r6rs there might +be, and whether there is to be support for user-defined +libraries. + +

+ + + +


4.2. Records

+ + + +

+Informal requirements: + disjoint types, + syntactic interface, + mutable fields. + +

+Support for records is under community discussion via SRFI 76. +Still to be settled is whether generativity should be specified, +e.g., as expand-time or run-time and also whether to elide or +provide a rationale for the "sealed" feature. + +

+ + + +


4.3. Unicode

+ + + +

+Informal requirements: + provision for Unicode characters and + character syntax, Unicode strings and string syntax; Unicode + character I/O; integer->char and char->integer are inverse + operations and support Unicode-specific text encodings; + write/read invariance for every datum, including symbols. + +

+Support for Unicode is under community discussion via SRFI 75. +Open issues include what normalization and character representation +to use. +We will probably use normalization form "C," and +Scheme characters will likely correspond to Unicode scalar values +(which can be represented by a 21-bit fixed-length encoding, but +other representations are also possible). + +

+ + + +


4.4. Arithmetic

+ + + +

+Informal requirements: + support for IEEE zeros, infinities, and NaNs, + clean up behavior of eqv? wrt numbers, + fix certain arithmetic operations, + transparency. + +

+Changes for R6RS arithmetic are under community discussion via SRFI 77. +There is general agreement to require the full tower and to +require that real? implies an exact zero imaginary part. +Among the open questions are whether fixnum, flonum, exact-only, +and inexact-only operations should be in separate libraries rather +than in the core language. + +

+ + + +


4.5. Exceptions

+ + + +

+Informal requirements: + clarify the meaning of "is an error," + view exception handling as a means of communication between + parts of the program. + +

+Proposals for this subsystem are currently under discussion. +No R6RS-specific SRFIs have been published, and no decisions have +been made. +There is, however, general agreement to use SRFI 34 as a basis for +the R6RS exception-handling system. + +

+ + + +


4.6. I/O

+ + + +

+Informal requirements: + read-byte and write-byte, + ports that support binary I/O, + byte vectors, + block read/write operations. + +

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

+Proposals for this subsystem are currently under discussion. +No R6RS-specific SRFIs have been published, and no decisions have +been made. + +

+ + + +


4.7. Macros

+ + + +

+Informal requirements: + specify expansion semantics, + specify interaction with modules, + allow procedural transformers, + hygiene-breaking operations, + maintain support for syntax-rules. + +

+The editors have decided to adopt syntax-case as currently +implemented in Chez Scheme and Dr. Scheme, with various differences +to be worked out by Dybvig and Flatt. +Also, the underscore identifier ("_") 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 syntax-rules pattern. + + +

+ + + +


4.8. Other possible changes

+ + + +

+The following possible features and changes have been discussed without +resolution. + +

+

+ + +

+ + + +


5. Completion Process

+ + + +

+We intend to deliver a draft R6RS to the Steering Committee by +September 1, 2006. +In order to meet this target, we plan to wrap up work on the various +subsystems, decide on the core language/library split, and create a +rough internal (editors only) draft of the R6RS by mid-June. + +

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

+

+
+subsystem primary editor additional editors
+libraries Flatt Dybvig
+records Sperber Dybvig, van Straaten
+arithmetic Clinger Sperber
+Unicode Flatt Clinger
+macros Dybvig Flatt
+exceptions Sperber Clinger
+I/O Sperber van Straaten
+core/library split van Straaten Dybvig
+hash tables van Straaten Clinger
+safe/unsafe mode Clinger Sperber
+
+
+ +

+As time permits, we will also discuss as a group the other possible +features and changes described in Section 4.8, +as well as additional ones that may arise, and decide which are to be +incorporated into R6RS. + +

+Responsibility for making sure that the editors complete their work and +communicate effectively lies with the chair (Dybvig) and responsibility +for creating the R6RS drafts lies with the project editor (Sperber). + +

+ + + + diff --git a/www/Documents/Standards/Charter/status-mar-2006.pdf b/www/Documents/Standards/Charter/status-mar-2006.pdf new file mode 100644 index 0000000..c7e9752 Binary files /dev/null and b/www/Documents/Standards/Charter/status-mar-2006.pdf differ diff --git a/www/Documents/Standards/R5RS/HTML/index.html b/www/Documents/Standards/R5RS/HTML/index.html new file mode 100644 index 0000000..df02ad7 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/index.html @@ -0,0 +1,5 @@ + + + + + diff --git a/www/Documents/Standards/R5RS/HTML/navigation.html b/www/Documents/Standards/R5RS/HTML/navigation.html new file mode 100644 index 0000000..2f45393 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/navigation.html @@ -0,0 +1,182 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + + +

R5RS

+ + +
    +
  1. 1  Overview of Scheme +
      +
    1. 1.1  Semantics +
    2. 1.2  Syntax +
    3. 1.3  Notation and terminology +
        +
      1. 1.3.1  Primitive, library, and optional features +
      2. 1.3.2  Error situations and unspecified behavior +
      3. 1.3.3  Entry format +
      4. 1.3.4  Evaluation examples +
      5. 1.3.5  Naming conventions +
      +
    +
  2. 2  Lexical conventions +
      +
    1. 2.1  Identifiers +
    2. 2.2  Whitespace and comments +
    3. 2.3  Other notations +
    +
  3. 3  Basic concepts +
      +
    1. 3.1  Variables, syntactic keywords, and regions +
    2. 3.2  Disjointness of types +
    3. 3.3  External representations +
    4. 3.4  Storage model +
    5. 3.5  Proper tail recursion +
    +
  4. 4  Expressions +
      +
    1. 4.1  Primitive expression types +
        +
      1. 4.1.1  Variable references +
      2. 4.1.2  Literal expressions +
      3. 4.1.3  Procedure calls +
      4. 4.1.4  Procedures +
      5. 4.1.5  Conditionals +
      6. 4.1.6  Assignments +
      +
    2. 4.2  Derived expression types +
        +
      1. 4.2.1  Conditionals +
      2. 4.2.2  Binding constructs +
      3. 4.2.3  Sequencing +
      4. 4.2.4  Iteration +
      5. 4.2.5  Delayed evaluation +
      6. 4.2.6  Quasiquotation +
      +
    3. 4.3  Macros +
        +
      1. 4.3.1  Binding constructs for syntactic keywords +
      2. 4.3.2  Pattern language +
      +
    +
  5. 5  Program structure +
      +
    1. 5.1  Programs +
    2. 5.2  Definitions +
        +
      1. 5.2.1  Top level definitions +
      2. 5.2.2  Internal definitions +
      +
    3. 5.3  Syntax definitions +
    +
  6. 6  Standard procedures +
      +
    1. 6.1  Equivalence predicates +
    2. 6.2  Numbers +
        +
      1. 6.2.1  Numerical types +
      2. 6.2.2  Exactness +
      3. 6.2.3  Implementation restrictions +
      4. 6.2.4  Syntax of numerical constants +
      5. 6.2.5  Numerical operations +
      6. 6.2.6  Numerical input and output +
      +
    3. 6.3  Other data types +
        +
      1. 6.3.1  Booleans +
      2. 6.3.2  Pairs and lists +
      3. 6.3.3  Symbols +
      4. 6.3.4  Characters +
      5. 6.3.5  Strings +
      6. 6.3.6  Vectors +
      +
    4. 6.4  Control features +
    5. 6.5  Eval +
    6. 6.6  Input and output +
        +
      1. 6.6.1  Ports +
      2. 6.6.2  Input +
      3. 6.6.3  Output +
      4. 6.6.4  System interface +
      +
    +
  7. 7  Formal syntax and semantics +
      +
    1. 7.1  Formal syntax +
        +
      1. 7.1.1  Lexical structure +
      2. 7.1.2  External representations +
      3. 7.1.3  Expressions +
      4. 7.1.4  Quasiquotations +
      5. 7.1.5  Transformers +
      6. 7.1.6  Programs and definitions +
      +
    2. 7.2  Formal semantics +
        +
      1. 7.2.1  Abstract syntax +
      2. 7.2.2  Domain equations +
      3. 7.2.3  Semantic functions +
      4. 7.2.4  Auxiliary functions +
      +
    3. 7.3  Derived expression types +
    +
+ + + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-C.css b/www/Documents/Standards/R5RS/HTML/r5rs-Z-C.css new file mode 100644 index 0000000..4b8941c --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-C.css @@ -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%; +} + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-1.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-1.gif new file mode 100644 index 0000000..1b3977b Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-1.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-10.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-10.gif new file mode 100644 index 0000000..4a5f8a5 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-10.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-11.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-11.gif new file mode 100644 index 0000000..4163a3f Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-11.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-12.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-12.gif new file mode 100644 index 0000000..e231a44 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-12.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-13.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-13.gif new file mode 100644 index 0000000..3c67fbb Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-13.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-14.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-14.gif new file mode 100644 index 0000000..5facefe Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-14.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-15.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-15.gif new file mode 100644 index 0000000..87c05a9 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-15.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-16.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-16.gif new file mode 100644 index 0000000..9155424 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-16.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-17.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-17.gif new file mode 100644 index 0000000..c7b3c64 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-17.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-18.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-18.gif new file mode 100644 index 0000000..5573e79 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-18.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-19.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-19.gif new file mode 100644 index 0000000..69fb4bf Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-19.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-2.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-2.gif new file mode 100644 index 0000000..1ad6b4e Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-2.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-20.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-20.gif new file mode 100644 index 0000000..85ffcd7 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-20.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-21.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-21.gif new file mode 100644 index 0000000..8ac96e0 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-21.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-22.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-22.gif new file mode 100644 index 0000000..086650a Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-22.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-23.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-23.gif new file mode 100644 index 0000000..b91e8f8 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-23.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-24.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-24.gif new file mode 100644 index 0000000..3835475 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-24.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-25.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-25.gif new file mode 100644 index 0000000..59227eb Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-25.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-26.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-26.gif new file mode 100644 index 0000000..6ae89ad Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-26.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-27.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-27.gif new file mode 100644 index 0000000..1a0bb81 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-27.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-28.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-28.gif new file mode 100644 index 0000000..9a5c1a3 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-28.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-29.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-29.gif new file mode 100644 index 0000000..435be76 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-29.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-3.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-3.gif new file mode 100644 index 0000000..7017257 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-3.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-30.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-30.gif new file mode 100644 index 0000000..c1c02fc Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-30.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-31.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-31.gif new file mode 100644 index 0000000..1dea6aa Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-31.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-32.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-32.gif new file mode 100644 index 0000000..31c2dc5 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-32.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-33.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-33.gif new file mode 100644 index 0000000..561e52d Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-33.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-34.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-34.gif new file mode 100644 index 0000000..341dc6e Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-34.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-35.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-35.gif new file mode 100644 index 0000000..656e8a9 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-35.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-36.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-36.gif new file mode 100644 index 0000000..adf8025 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-36.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-37.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-37.gif new file mode 100644 index 0000000..ad6d343 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-37.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-38.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-38.gif new file mode 100644 index 0000000..ee3e952 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-38.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-39.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-39.gif new file mode 100644 index 0000000..b7a9595 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-39.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-4.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-4.gif new file mode 100644 index 0000000..3b78d0e Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-4.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-40.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-40.gif new file mode 100644 index 0000000..5f08271 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-40.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-41.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-41.gif new file mode 100644 index 0000000..500f2a2 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-41.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-42.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-42.gif new file mode 100644 index 0000000..bf6e969 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-42.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-43.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-43.gif new file mode 100644 index 0000000..73819c3 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-43.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-44.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-44.gif new file mode 100644 index 0000000..46cf8ad Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-44.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-45.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-45.gif new file mode 100644 index 0000000..7dba694 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-45.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-46.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-46.gif new file mode 100644 index 0000000..f25a407 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-46.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-47.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-47.gif new file mode 100644 index 0000000..802be42 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-47.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-48.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-48.gif new file mode 100644 index 0000000..3e5d195 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-48.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-49.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-49.gif new file mode 100644 index 0000000..9f0df4f Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-49.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-5.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-5.gif new file mode 100644 index 0000000..114f35d Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-5.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-50.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-50.gif new file mode 100644 index 0000000..17592d1 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-50.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-51.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-51.gif new file mode 100644 index 0000000..47f4185 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-51.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-52.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-52.gif new file mode 100644 index 0000000..be62f3d Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-52.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-53.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-53.gif new file mode 100644 index 0000000..5cd3741 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-53.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-54.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-54.gif new file mode 100644 index 0000000..d8dc11c Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-54.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-55.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-55.gif new file mode 100644 index 0000000..4956445 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-55.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-56.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-56.gif new file mode 100644 index 0000000..087dbfb Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-56.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-57.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-57.gif new file mode 100644 index 0000000..730821d Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-57.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-58.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-58.gif new file mode 100644 index 0000000..faeaabe Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-58.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-59.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-59.gif new file mode 100644 index 0000000..6e9f46e Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-59.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-6.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-6.gif new file mode 100644 index 0000000..1a8f2bc Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-6.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-60.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-60.gif new file mode 100644 index 0000000..0728635 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-60.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-61.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-61.gif new file mode 100644 index 0000000..eca534a Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-61.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-62.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-62.gif new file mode 100644 index 0000000..961bbf3 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-62.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-63.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-63.gif new file mode 100644 index 0000000..99e376f Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-63.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-64.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-64.gif new file mode 100644 index 0000000..f7a4cf9 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-64.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-65.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-65.gif new file mode 100644 index 0000000..6b9669b Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-65.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-7.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-7.gif new file mode 100644 index 0000000..96e5d75 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-7.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-8.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-8.gif new file mode 100644 index 0000000..86a46dc Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-8.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-9.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-9.gif new file mode 100644 index 0000000..d1bfd78 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-9.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-1.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-1.gif new file mode 100644 index 0000000..594bec2 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-1.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-2.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-2.gif new file mode 100644 index 0000000..2c18cc9 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-2.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-3.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-3.gif new file mode 100644 index 0000000..4d17b51 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-3.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-4.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-4.gif new file mode 100644 index 0000000..6a59f21 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-4.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-5.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-5.gif new file mode 100644 index 0000000..ae4b559 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-5.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-6.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-6.gif new file mode 100644 index 0000000..80c6b58 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-6.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-7.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-7.gif new file mode 100644 index 0000000..d331241 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-7.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-8.gif b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-8.gif new file mode 100644 index 0000000..d595d21 Binary files /dev/null and b/www/Documents/Standards/R5RS/HTML/r5rs-Z-G-D-8.gif differ diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-1.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-1.html new file mode 100644 index 0000000..6ff11d9 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-1.html @@ -0,0 +1,61 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Summary

+ +The report gives a defining description of the programming language +Scheme. Scheme is a statically scoped and properly tail-recursive +dialect of the Lisp programming language invented by Guy Lewis +Steele Jr. and Gerald Jay Sussman. It was designed to have an +exceptionally clear and simple semantics and few different ways to +form expressions. A wide variety of programming paradigms, including +imperative, functional, and message passing styles, find convenient +expression in Scheme.

+ +The introduction offers a brief history of the language and of +the report.

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

+ +Chapters 4 and 5 describe +the syntax and semantics of expressions, programs, and definitions.

+ +Chapter 6 describes Scheme's built-in +procedures, which include all of the language's data manipulation and +input/output primitives.

+ +Chapter 7 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.

+ +The report concludes with a list of references and an +alphabetic index.

+ +

+ + +

+ + +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-10.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-10.html new file mode 100644 index 0000000..6426f76 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-10.html @@ -0,0 +1,546 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+

+Formal syntax and semantics

+ +

+ +This chapter provides formal descriptions of what has already been +described informally in previous chapters of this report.

+ +

+ + +

7.1  Formal syntax

+ +

+ +This section provides a formal syntax for Scheme written in an extended +BNF.

+ +All spaces in the grammar are for legibility. Case is insignificant; +for example, #x1A and #X1a are equivalent. <empty> +stands for the empty string.

+ +The following extensions to BNF are used to make the description more +concise: <thing>* means zero or more occurrences of +<thing>; and <thing>+ means at least one +<thing>.

+ + +

7.1.1  Lexical structure

+ +This section describes how individual tokens (identifiers, +numbers, etc.) are formed from sequences of characters. The following +sections describe how expressions and programs are formed from sequences +of tokens.

+ +<Intertoken space> may occur on either side of any token, but not +within a token.

+ +Tokens which require implicit termination (identifiers, numbers, +characters, and dot) may be terminated by any <delimiter>, but not +necessarily by anything else.

+ +The following five characters are reserved for future extensions to the +language: [ ] { } |

+ +

+ + +

+ + +

+ +

+ +

+ +The following rules for <num R>, <complex R>, <real +R>, <ureal R>, <uinteger R>, and <prefix R> +should be replicated for R = 2, 8, 10, +and 16. There are no rules for <decimal 2>, <decimal +8>, and <decimal 16>, which means that numbers containing +decimal points or exponents must be in decimal radix. +

+ +

+ +

+ +

+ + +

7.1.2  External representations

+ +

+ +<Datum> is what the read procedure (section 6.6.2) +successfully parses. Note that any string that parses as an +<expression> will also parse as a <datum>.

+ +

+ + +

7.1.3  Expressions

+ +

+ + +

7.1.4  Quasiquotations

+ +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 D = 1, 2, +3, .... D keeps track of the nesting depth.

+ +

+ +In <quasiquotation>s, a <list qq template D> can sometimes +be confused with either an <unquotation D> or a <splicing +unquotation D>. The interpretation as an +<unquotation> or <splicing +unquotation D> takes precedence.

+ + +

7.1.5  Transformers

+ +

+ + +

7.1.6  Programs and definitions

+ +

+        

+

7.2  Formal semantics

+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + +

+ + + + +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 [29]; the notation is +summarized below:

+ +

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

+ +The boolean flag associated with pairs, vectors, and strings will be true +for mutable objects and false for immutable objects.

+ +The order of evaluation within a call is unspecified. We mimic that +here by applying arbitrary permutations permute and unpermute, 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.

+ +The storage allocator new is implementation-dependent, but it must +obey the following axiom: if new L, then + (new | L) 2 = false.

+ + + + +

+ +The definition of is omitted because an accurate definition of + would complicate the semantics without being very interesting.

+ +If P is a program in which all variables are defined before being +referenced or assigned, then the meaning of P is +

+where I* is the sequence of variables defined in P, P' +is the sequence of expressions obtained by replacing every definition +in P by an assignment, <undefined> is an expression that evaluates +to undefined, and + is the semantic function that assigns meaning to expressions.

+ +

+ + +

7.2.1  Abstract syntax

+ + + + + + + + + +

+ +

+ +

+ + +

7.2.2  Domain equations

+ +

+ + +

7.2.3  Semantic functions

+ + + +

+ +

+ + + + +

+ +

+ +

+ +Definition of deliberately omitted.

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +Here and elsewhere, any expressed value other than undefined may +be used in place of unspecified.

+ +

+ +

+ +

+ +

+ +

+ + + +

7.2.4  Auxiliary functions

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ + +

+ + +

+ + +

+ +

+ + +

+ + +

+ + +

+ +

+ +

+ +

+ +

+ + +        

+

7.3  Derived expression types

+ +

+ +This section gives macro definitions for the derived expression types in +terms of the primitive expression types (literal, variable, call, lambda, +if, set!). See section 6.4 for a possible +definition of delay.

+ +

(define-syntax cond
+  (syntax-rules (else =>)
+    ((cond (else result1 result2 ...))
+     (begin result1 result2 ...))
+    ((cond (test => result))
+     (let ((temp test))
+       (if temp (result temp))))
+    ((cond (test => result) clause1 clause2 ...)
+     (let ((temp test))
+       (if temp
+           (result temp)
+           (cond clause1 clause2 ...))))
+    ((cond (test)) test)
+    ((cond (test) clause1 clause2 ...)
+     (let ((temp test))
+       (if temp
+           temp
+           (cond clause1 clause2 ...))))
+    ((cond (test result1 result2 ...))
+     (if test (begin result1 result2 ...)))
+    ((cond (test result1 result2 ...)
+           clause1 clause2 ...)
+     (if test
+         (begin result1 result2 ...)
+         (cond clause1 clause2 ...)))))
+

+ +

(define-syntax case
+  (syntax-rules (else)
+    ((case (key ...)
+       clauses ...)
+     (let ((atom-key (key ...)))
+       (case atom-key clauses ...)))
+    ((case key
+       (else result1 result2 ...))
+     (begin result1 result2 ...))
+    ((case key
+       ((atoms ...) result1 result2 ...))
+     (if (memv key '(atoms ...))
+         (begin result1 result2 ...)))
+    ((case key
+       ((atoms ...) result1 result2 ...)
+       clause clauses ...)
+     (if (memv key '(atoms ...))
+         (begin result1 result2 ...)
+         (case key clause clauses ...)))))
+

+ +

(define-syntax and
+  (syntax-rules ()
+    ((and) #t)
+    ((and test) test)
+    ((and test1 test2 ...)
+     (if test1 (and test2 ...) #f))))
+

+ +

(define-syntax or
+  (syntax-rules ()
+    ((or) #f)
+    ((or test) test)
+    ((or test1 test2 ...)
+     (let ((x test1))
+       (if x x (or test2 ...))))))
+

+ +

(define-syntax let
+  (syntax-rules ()
+    ((let ((name val) ...) body1 body2 ...)
+     ((lambda (name ...) body1 body2 ...)
+      val ...))
+    ((let tag ((name val) ...) body1 body2 ...)
+     ((letrec ((tag (lambda (name ...)
+                      body1 body2 ...)))
+        tag)
+      val ...))))
+

+ +

(define-syntax let*
+  (syntax-rules ()
+    ((let* () body1 body2 ...)
+     (let () body1 body2 ...))
+    ((let* ((name1 val1) (name2 val2) ...)
+       body1 body2 ...)
+     (let ((name1 val1))
+       (let* ((name2 val2) ...)
+         body1 body2 ...)))))
+

+ +The following letrec macro uses the symbol <undefined> +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.

+ +

(define-syntax letrec
+  (syntax-rules ()
+    ((letrec ((var1 init1) ...) body ...)
+     (letrec "generate_temp_names"
+       (var1 ...)
+       ()
+       ((var1 init1) ...)
+       body ...))
+    ((letrec "generate_temp_names"
+       ()
+       (temp1 ...)
+       ((var1 init1) ...)
+       body ...)
+     (let ((var1 <undefined>) ...)
+       (let ((temp1 init1) ...)
+         (set! var1 temp1)
+         ...
+         body ...)))
+    ((letrec "generate_temp_names"
+       (x y ...)
+       (temp ...)
+       ((var1 init1) ...)
+       body ...)
+     (letrec "generate_temp_names"
+       (y ...)
+       (newtemp temp ...)
+       ((var1 init1) ...)
+       body ...))))
+

+ +

(define-syntax begin
+  (syntax-rules ()
+    ((begin exp ...)
+     ((lambda () exp ...)))))
+

+ +The following alternative expansion for begin 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 begin contains no definitions.

+ +

(define-syntax begin
+  (syntax-rules ()
+    ((begin exp)
+     exp)
+    ((begin exp1 exp2 ...)
+     (let ((x exp1))
+       (begin exp2 ...)))))
+

+ +The following definition +of do uses a trick to expand the variable clauses. +As with letrec above, an auxiliary macro would also work. +The expression (if #f #f) is used to obtain an unspecific +value.

+ +

(define-syntax do
+  (syntax-rules ()
+    ((do ((var init step ...) ...)
+         (test expr ...)
+         command ...)
+     (letrec
+       ((loop
+         (lambda (var ...)
+           (if test
+               (begin
+                 (if #f #f)
+                 expr ...)
+               (begin
+                 command
+                 ...
+                 (loop (do "step" var step ...)
+                       ...))))))
+       (loop init ...)))
+    ((do "step" x)
+     x)
+    ((do "step" x y)
+     y)))
+

+ +        

+ +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-11.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-11.html new file mode 100644 index 0000000..31bc0c2 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-11.html @@ -0,0 +1,85 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Notes

+ + +

+ +

+ + +

Language changes

+ +

+ +This section enumerates the changes that have been made to Scheme since +the ``Revised4 report'' [6] was published.

+ +

+ + + +

+ + +        

+ +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-12.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-12.html new file mode 100644 index 0000000..7ef3028 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-12.html @@ -0,0 +1,38 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Additional material

+ + +

+ +The Internet Scheme Repository at +

+ +http://www.cs.indiana.edu/scheme-repository/ +

+ +contains an extensive Scheme bibliography, as well as papers, +programs, implementations, and other material related to Scheme. +

+ + +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-13.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-13.html new file mode 100644 index 0000000..5fd65f2 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-13.html @@ -0,0 +1,145 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Example

+ + +

+Integrate-system integrates the system +

+of differential equations with the method of Runge-Kutta.

+ +The parameter system-derivative is a function that takes a system +state (a vector of values for the state variables y1, ..., yn) +and produces a system derivative (the values y1/, ..., +yn/). The parameter initial-state provides an initial +system state, and h is an initial guess for the length of the +integration step.

+ +The value returned by integrate-system is an infinite stream of +system states.

+ +

(define integrate-system
+  (lambda (system-derivative initial-state h)
+    (let ((next (runge-kutta-4 system-derivative h)))
+      (letrec ((states
+                (cons initial-state
+                      (delay (map-streams next
+                                          states)))))
+        states))))

+ +Runge-Kutta-4 takes a function, f, that produces a +system derivative from a system state. Runge-Kutta-4 +produces a function that takes a system state and +produces a new system state.

+ +

(define runge-kutta-4
+  (lambda (f h)
+    (let ((*h (scale-vector h))
+          (*2 (scale-vector 2))
+          (*1/2 (scale-vector (/ 1 2)))
+          (*1/6 (scale-vector (/ 1 6))))
+      (lambda (y)
+        ;; y is a system state
+        (let* ((k0 (*h (f y)))
+               (k1 (*h (f (add-vectors y (*1/2 k0)))))
+               (k2 (*h (f (add-vectors y (*1/2 k1)))))
+               (k3 (*h (f (add-vectors y k2)))))
+          (add-vectors y
+            (*1/6 (add-vectors k0
+                               (*2 k1)
+                               (*2 k2)
+                               k3))))))))
+
+(define elementwise
+  (lambda (f)
+    (lambda vectors
+      (generate-vector
+        (vector-length (car vectors))
+        (lambda (i)
+          (apply f
+                 (map (lambda (v) (vector-ref  v i))
+                      vectors)))))))
+
+(define generate-vector
+  (lambda (size proc)
+    (let ((ans (make-vector size)))
+      (letrec ((loop
+                (lambda (i)
+                  (cond ((= i size) ans)
+                        (else
+                         (vector-set! ans i (proc i))
+                         (loop (+ i 1)))))))
+        (loop 0)))))
+
+(define add-vectors (elementwise +))
+
+(define scale-vector
+  (lambda (s)
+    (elementwise (lambda (x) (* x s)))))

+ +Map-streams is analogous to map: it applies its first +argument (a procedure) to all the elements of its second argument (a +stream).

+ +

(define map-streams
+  (lambda (f s)
+    (cons (f (head s))
+          (delay (map-streams f (tail s))))))

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

+ +

(define head car)
+(define tail
+  (lambda (stream) (force (cdr stream))))

+ +



The following illustrates the use of integrate-system in +integrating the system +

+which models a damped oscillator.

+ +

(define damped-oscillator
+  (lambda (R L C)
+    (lambda (state)
+      (let ((Vc (vector-ref state 0))
+            (Il (vector-ref state 1)))
+        (vector (- 0 (+ (/ Vc (* R C)) (/ Il C)))
+                (/ Vc L))))))
+
+(define the-states
+  (integrate-system
+     (damped-oscillator 10000 1000 .001)
+     '#(1 0)
+     .01))

+ +

+ + +        

+ + + + + + +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-14.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-14.html new file mode 100644 index 0000000..9f8e6da --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-14.html @@ -0,0 +1,187 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Bibliography

+ + +

+ +

[1]   +Harold Abelson and Gerald Jay Sussman with Julie Sussman. +Structure and Interpretation of Computer Programs, second edition. +MIT Press, Cambridge, 1996.

+ +

[2]   Alan Bawden and Jonathan Rees. +Syntactic closures. +In Proceedings of the 1988 ACM Symposium on Lisp and +Functional Programming, pages 86-95.

+ +

[3]   +Robert G. Burger and R. Kent Dybvig. +Printing floating-point numbers quickly and accurately. +In Proceedings of the ACM SIGPLAN '96 Conference +on Programming Language Design and Implementation, pages 108-116.

+ +

[4]   +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.

+ +

[5]   William Clinger. +How to read floating point numbers accurately. +In Proceedings of the ACM SIGPLAN '90 Conference +on Programming Language Design and Implementation, pages 92-101. +Proceedings published as SIGPLAN Notices 25(6), June 1990.

+ +

[6]   +William Clinger and Jonathan Rees, editors. +The revised4 report on the algorithmic language Scheme. +In ACM Lisp Pointers 4(3), pages 1-55, 1991.

+ +

[7]   William Clinger and Jonathan Rees. +Macros that work. +In Proceedings of the 1991 ACM Conference on Principles of +Programming Languages, pages 155-162.

+ +

[8]   William Clinger. +Proper Tail Recursion and Space Efficiency. +To appear in Proceedings of the 1998 ACM Conference on Programming +Language Design and Implementation, June 1998.

+ +

[9]   +R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. +Syntactic abstraction in Scheme. +Lisp and Symbolic Computation 5(4):295-326, 1993.

+ +

[10]   +Carol Fessenden, William Clinger, Daniel P. Friedman, and Christopher Haynes. +Scheme 311 version 4 reference manual. +Indiana University Computer Science Technical Report 137, February 1983. +Superseded by [11].

+ +

[11]   +D. Friedman, C. Haynes, E. Kohlbecker, and M. Wand. +Scheme 84 interim reference manual. +Indiana University Computer Science Technical Report 153, January 1985.

+ +

[12]   +IEEE Standard 754-1985. IEEE Standard for Binary Floating-Point +Arithmetic. IEEE, New York, 1985.

+ +

[13]   +IEEE Standard 1178-1990. IEEE Standard for the Scheme +Programming Language. IEEE, New York, 1991.

+ +

[14]   +Eugene E. Kohlbecker Jr. +Syntactic Extensions in the Programming Language Lisp. +PhD thesis, Indiana University, August 1986.

+ +

[15]   +Eugene E. Kohlbecker Jr., Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. +Hygienic macro expansion. +In Proceedings of the 1986 ACM Conference on Lisp +and Functional Programming, pages 151-161.

+ +

[16]   +Peter Landin. +A correspondence between Algol 60 and Church's lambda notation: Part I. +Communications of the ACM 8(2):89-101, February 1965.

+ +

[17]   +MIT Department of Electrical Engineering and Computer Science. +Scheme manual, seventh edition. +September 1984.

+ +

[18]   +Peter Naur et al. +Revised report on the algorithmic language Algol 60. +Communications of the ACM 6(1):1-17, January 1963.

+ +

[19]   +Paul Penfield, Jr. +Principal values and branch cuts in complex APL. +In APL '81 Conference Proceedings, pages 248-256. +ACM SIGAPL, San Francisco, September 1981. +Proceedings published as APL Quote Quad 12(1), ACM, September 1981.

+ +

[20]   +Kent M. Pitman. +The revised MacLisp manual (Saturday evening edition). +MIT Laboratory for Computer Science Technical Report 295, May 1983.

+ +

[21]   +Jonathan A. Rees and Norman I. Adams IV. +T: A dialect of Lisp or, lambda: The ultimate software tool. +In Conference Record of the 1982 ACM Symposium on Lisp and +Functional Programming, pages 114-122.

+ +

[22]   +Jonathan A. Rees, Norman I. Adams IV, and James R. Meehan. +The T manual, fourth edition. +Yale University Computer Science Department, January 1984.

+ +

[23]   +Jonathan Rees and William Clinger, editors. +The revised3 report on the algorithmic language Scheme. +In ACM SIGPLAN Notices 21(12), pages 37-79, December 1986.

+ +

[24]   +John Reynolds. +Definitional interpreters for higher order programming languages. +In ACM Conference Proceedings, pages 717-740. +ACM,  1972.

+ +

[25]   +Guy Lewis Steele Jr. and Gerald Jay Sussman. +The revised report on Scheme, a dialect of Lisp. +MIT Artificial Intelligence Memo 452, January 1978.

+ +

[26]   +Guy Lewis Steele Jr. +Rabbit: a compiler for Scheme. +MIT Artificial Intelligence Laboratory Technical Report 474, May 1978.

+ +

[27]   +Guy Lewis Steele Jr. +Common Lisp: The Language, second edition. +Digital Press, Burlington MA, 1990.

+ +

[28]   +Gerald Jay Sussman and Guy Lewis Steele Jr. +Scheme: an interpreter for extended lambda calculus. +MIT Artificial Intelligence Memo 349, December 1975.

+ +

[29]   +Joseph E. Stoy. +Denotational Semantics: The Scott-Strachey Approach to +Programming Language Theory. +MIT Press, Cambridge, 1977.

+ +

[30]   +Texas Instruments, Inc. +TI Scheme Language Reference Manual. +Preliminary version 1.0, November 1985.

+ +

+

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-15.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-15.html new file mode 100644 index 0000000..7ed5256 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-15.html @@ -0,0 +1,430 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Alphabetic Index of Definitions of Concepts, +Keywords, and Procedures

+ + +        

+ +

+ + +

+ +

+ +
+
', [2]
+*
++, [2]
+,, [2]
+,@
+-
+...
+/
+;
+<, [2]
+<=
+=
+=>
+>
+>=
+`

+ +

+ +
+abs
+acos
+and
+angle
+append
+apply, [2]
+asin
+assoc
+assq
+assv
+atan

+ +

+ +
+#b
+backquote
+begin
+binding
+binding construct
+boolean?, [2]
+bound

+ +

+ +
+caar
+cadr
+call
+call by need
+call-with-current-continuation
+call-with-input-file
+call-with-output-file
+call-with-values
+car, [2]
+case
+cdddar
+cddddr
+cdr
+ceiling
+char->integer
+char-alphabetic?
+char-ci<=?
+char-ci<?
+char-ci=?
+char-ci>=?
+char-ci>?
+char-downcase
+char-lower-case?
+char-numeric?
+char-ready?
+char-upcase
+char-upper-case?
+char-whitespace?
+char<=?
+char<?
+char=?
+char>=?
+char>?
+char?, [2]
+close-input-port
+close-output-port
+combination
+comma
+comment
+complex?
+cond
+cons
+constant
+continuation
+cos
+current-input-port
+current-output-port

+ +

+ +
+#d
+define
+define-syntax
+definition
+delay
+denominator
+display
+do
+dotted pair
+dynamic-wind

+ +

+ +
+#e
+else, [2]
+empty list, [2], +[3], [4], +[5], [6], +[7]
+eof-object?
+eq?
+equal?
+equivalence predicate
+eqv?, [2]
+error
+escape procedure
+eval
+even?
+exact
+exact->inexact
+exact?
+exactness
+exp
+expt

+ +

+ +
+#f
+false, [2], +[3]
+floor
+for-each
+force

+ +

+ +
+gcd

+ +

+ +
+hygienic

+ +

+ +
+#i
+identifier, [2], +[3]
+if
+imag-part
+immutable
+implementation restriction, +[2]
+improper list
+inexact
+inexact->exact
+inexact?
+initial environment
+input-port?
+integer->char
+integer?
+interaction-environment
+internal definition

+ +

+ +
+keyword, [2]

+ +

+ +
+lambda
+lazy evaluation
+lcm
+length
+let
+let*
+let-syntax
+letrec
+letrec-syntax
+library
+library procedure
+list
+list->string
+list->vector
+list-ref
+list-tail
+list?
+load
+location
+log

+ +

+ +
+macro
+macro keyword
+macro transformer
+macro use
+magnitude
+make-polar
+make-rectangular
+make-string
+make-vector
+map
+max
+member
+memq
+memv
+min
+modulo
+mutable

+ +

+ +
+negative?
+newline
+not
+null-environment
+null?
+number
+number->string
+number?, [2]
+numerator
+numerical types

+ +

+ +
+#o
+object
+odd?
+open-input-file
+open-output-file
+optional
+or
+output-port?

+ +

+ +
+pair
+pair?, [2]
+peek-char
+port
+port?
+positive?
+predicate
+procedure call
+procedure?, [2]
+promise, [2]
+proper tail recursion

+ +

+ +
+quasiquote
+quote
+quotient

+ +

+ +
+rational?
+rationalize
+read
+read-char
+real-part
+real?
+referentially transparent
+region, [2], +[3], [4], +[5], [6], +[7]
+remainder
+reverse
+round

+ +

+ +
+scheme-report-environment
+set!
+set-car!
+set-cdr!
+setcar
+simplest rational
+sin
+sqrt
+string
+string->list
+string->number
+string->symbol
+string-append
+string-ci<=?
+string-ci<?
+string-ci=?
+string-ci>=?
+string-ci>?
+string-copy
+string-fill!
+string-length
+string-ref
+string-set!
+string<=?
+string<?
+string=?
+string>=?
+string>?
+string?, [2]
+substring
+symbol->string
+symbol?, [2]
+syntactic keyword, +[2], [3]
+syntax definition
+syntax-rules

+ +

+ +
+#t
+tail call
+tan
+token
+top level environment, +[2]
+transcript-off
+transcript-on
+true, [2], +[3], [4], +[5]
+truncate
+type

+ +

+ +
+unbound, [2], +[3]
+unspecified

+ +

+ +
+valid indexes, +[2]
+values
+variable, [2], +[3]
+vector
+vector->list
+vector-fill!
+vector-length
+vector-ref
+vector-set!
+vector?, [2]

+ +

+ +
+Whitespace
+with-input-from-file
+with-output-to-file
+write
+write-char

+ +

+ +
+#x

+ +

+ +
+zero?

+ + +

+ + +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-2.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-2.html new file mode 100644 index 0000000..bbd8ca4 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-2.html @@ -0,0 +1,134 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Contents

+ +

+    Summary
+

+    Introduction
+            Background
+            Acknowledgements
+

+    1  Overview of Scheme
+        1.1  Semantics
+        1.2  Syntax
+        1.3  Notation and terminology
+            1.3.1  Primitive, library, and optional features
+            1.3.2  Error situations and unspecified behavior
+            1.3.3  Entry format
+            1.3.4  Evaluation examples
+            1.3.5  Naming conventions
+

+    2  Lexical conventions
+        2.1  Identifiers
+        2.2  Whitespace and comments
+        2.3  Other notations
+

+    3  Basic concepts
+        3.1  Variables, syntactic keywords, and regions
+        3.2  Disjointness of types
+        3.3  External representations
+        3.4  Storage model
+        3.5  Proper tail recursion
+

+    4  Expressions
+        4.1  Primitive expression types
+            4.1.1  Variable references
+            4.1.2  Literal expressions
+            4.1.3  Procedure calls
+            4.1.4  Procedures
+            4.1.5  Conditionals
+            4.1.6  Assignments
+        4.2  Derived expression types
+            4.2.1  Conditionals
+            4.2.2  Binding constructs
+            4.2.3  Sequencing
+            4.2.4  Iteration
+            4.2.5  Delayed evaluation
+            4.2.6  Quasiquotation
+        4.3  Macros
+            4.3.1  Binding constructs for syntactic keywords
+            4.3.2  Pattern language
+

+    5  Program structure
+        5.1  Programs
+        5.2  Definitions
+            5.2.1  Top level definitions
+            5.2.2  Internal definitions
+        5.3  Syntax definitions
+

+    6  Standard procedures
+        6.1  Equivalence predicates
+        6.2  Numbers
+            6.2.1  Numerical types
+            6.2.2  Exactness
+            6.2.3  Implementation restrictions
+            6.2.4  Syntax of numerical constants
+            6.2.5  Numerical operations
+            6.2.6  Numerical input and output
+        6.3  Other data types
+            6.3.1  Booleans
+            6.3.2  Pairs and lists
+            6.3.3  Symbols
+            6.3.4  Characters
+            6.3.5  Strings
+            6.3.6  Vectors
+        6.4  Control features
+        6.5  Eval
+        6.6  Input and output
+            6.6.1  Ports
+            6.6.2  Input
+            6.6.3  Output
+            6.6.4  System interface
+

+    7  Formal syntax and semantics
+        7.1  Formal syntax
+            7.1.1  Lexical structure
+            7.1.2  External representations
+            7.1.3  Expressions
+            7.1.4  Quasiquotations
+            7.1.5  Transformers
+            7.1.6  Programs and definitions
+        7.2  Formal semantics
+            7.2.1  Abstract syntax
+            7.2.2  Domain equations
+            7.2.3  Semantic functions
+            7.2.4  Auxiliary functions
+        7.3  Derived expression types
+

+    Notes
+            Language changes
+

+    Additional material
+

+    Example
+

+    Bibliography
+

+    Alphabetic Index of Definitions of Concepts, +Keywords, and Procedures
+

+ +

+ + +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-3.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-3.html new file mode 100644 index 0000000..3f5d589 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-3.html @@ -0,0 +1,132 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+
 

+Introduction

+ + +

+ +

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

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

+ + +

Background

+ +The first description of Scheme was written in +1975 [28]. A revised report [25] + appeared in 1978, which described the evolution +of the language as its MIT implementation was upgraded to support an +innovative compiler [26]. Three distinct projects began in +1981 and 1982 to use variants of Scheme for courses at MIT, Yale, and +Indiana University [211710]. An introductory +computer science textbook using Scheme was published in +1984 [1].

+ +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 [4] +was published at MIT and Indiana University in the summer of 1985. +Further revision took place in the spring of 1986 [23], +and in the spring of 1988 [6]. +The present report reflects further revisions agreed upon in a meeting +at Xerox PARC in June 1992.

+ + +

+ +

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

+ + +

Acknowledgements

+ +We would like to thank the following people for their help: Alan Bawden, Michael +Blair, George Carrette, Andy Cromarty, Pavel Curtis, Jeff Dalton, Olivier Danvy, +Ken Dickey, Bruce Duba, Marc Feeley, +Andy Freeman, Richard Gabriel, Yekta Gürsel, Ken Haase, Robert +Hieb, Paul Hudak, Morry Katz, Chris Lindblad, Mark Meyer, Jim Miller, Jim Philbin, +John Ramsdell, Mike Shaff, Jonathan Shapiro, Julie Sussman, +Perry Wagle, Daniel Weise, Henry Wu, and Ozan Yigit. +We thank Carol Fessenden, Daniel +Friedman, and Christopher Haynes for permission to use text from the Scheme 311 +version 4 reference manual. We thank Texas Instruments, Inc. for permission to +use text from the TI Scheme Language Reference Manual[30]. +We gladly acknowledge the influence of manuals for MIT Scheme[17], +T[22], Scheme 84[11],Common Lisp[27], +and Algol 60[18].

+ +We also thank Betty Dexter for the extreme effort she put into +setting this report in TEX, and Donald Knuth for designing the program +that caused her troubles.

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

+ +

+ + +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-4.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-4.html new file mode 100644 index 0000000..b1be3ce --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-4.html @@ -0,0 +1,288 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+

+Overview of Scheme

+ + +

1.1  Semantics

+ +

+ +This section gives an overview of Scheme's semantics. A +detailed informal semantics is the subject of +chapters 3 through 6. For reference +purposes, section 7.2 provides a formal +semantics of Scheme.

+ +Following Algol, Scheme is a statically scoped programming +language. Each use of a variable is associated with a lexically +apparent binding of that variable.

+ +Scheme has latent as opposed to manifest types. Types +are associated with values (also called objects) rather than +with variables. (Some authors refer to languages with latent types as +weakly typed or dynamically typed languages.) Other languages with +latent types are APL, Snobol, and other dialects of Lisp. Languages +with manifest types (sometimes referred to as strongly typed or +statically typed languages) include Algol 60, Pascal, and C.

+ +All objects created in the course of a Scheme computation, including +procedures and continuations, have unlimited extent. +No Scheme object is ever destroyed. The reason that +implementations of Scheme do not (usually!) run out of storage is that +they are permitted to reclaim the storage occupied by an object if +they can prove that the object cannot possibly matter to any future +computation. Other languages in which most objects have unlimited +extent include APL and other Lisp dialects.

+ +Implementations of Scheme are required to be properly tail-recursive. +This allows the execution of an iterative computation in constant space, +even if the iterative computation is described by a syntactically +recursive procedure. Thus with a properly tail-recursive implementation, +iteration can be expressed using the ordinary procedure-call +mechanics, so that special iteration constructs are useful only as +syntactic sugar. See section 3.5.

+ +Scheme procedures are objects in their own right. Procedures can be +created dynamically, stored in data structures, returned as results of +procedures, and so on. Other languages with these properties include +Common Lisp and ML.

+ +One distinguishing feature of Scheme is that continuations, which +in most other languages only operate behind the scenes, also have +``first-class'' status. Continuations are useful for implementing a +wide variety of advanced control constructs, including non-local exits, +backtracking, and coroutines. See section 6.4.

+ +Arguments to Scheme procedures are always passed by value, which +means that the actual argument expressions are evaluated before the +procedure gains control, whether the procedure needs the result of the +evaluation or not. ML, C, and APL are three other languages that always +pass arguments by value. +This is distinct from the lazy-evaluation semantics of Haskell, +or the call-by-name semantics of Algol 60, where an argument +expression is not evaluated unless its value is needed by the +procedure.

+ +

+ +Scheme's model of arithmetic is designed to remain as independent as +possible of the particular ways in which numbers are represented within a +computer. In Scheme, every integer is a rational number, every rational is a +real, and every real is a complex number. Thus the distinction between integer +and real arithmetic, so important to many programming languages, does not +appear in Scheme. In its place is a distinction between exact arithmetic, +which corresponds to the mathematical ideal, and inexact arithmetic on +approximations. As in Common Lisp, exact arithmetic is not limited to +integers.

+ + +

1.2  Syntax

+ +Scheme, like most dialects of Lisp, employs a fully parenthesized prefix +notation for programs and (other) data; the grammar of Scheme generates a +sublanguage of the language used for data. An important +consequence of this simple, uniform representation is the susceptibility of +Scheme programs and data to uniform treatment by other Scheme programs. +For example, the eval procedure evaluates a Scheme program expressed +as data.

+ +The read procedure performs syntactic as well as lexical decomposition of +the data it reads. The read procedure parses its input as data +(section 7.1.2), not as program.

+ +The formal syntax of Scheme is described in section 7.1.

+ + +

1.3  Notation and terminology

+ + +

1.3.1  Primitive, library, and optional features

+ +

+ +It is required that every implementation of Scheme support all +features that are not marked as being optional. Implementations are +free to omit optional features of Scheme or to add extensions, +provided the extensions are not in conflict with the language reported +here. In particular, implementations must support portable code by +providing a syntactic mode that preempts no lexical conventions of this +report.

+ +To aid in understanding and implementing Scheme, some features are marked +as library. These can be easily implemented in terms of the other, +primitive, features. They are redundant in the strict sense of +the word, but they capture common patterns of usage, and are therefore +provided as convenient abbreviations.

+ + +

1.3.2  Error situations and unspecified behavior

+ + +When speaking of an error situation, this report uses the phrase ``an +error is signalled'' to indicate that implementations must detect and +report the error. If such wording does not appear in the discussion of +an error, then implementations are not required to detect or report the +error, though they are encouraged to do so. An error situation that +implementations are not required to detect is usually referred to simply +as ``an error.''

+ +For example, it is an error for a procedure to be passed an argument that +the procedure is not explicitly specified to handle, even though such +domain errors are seldom mentioned in this report. Implementations may +extend a procedure's domain of definition to include such arguments.

+ +This report uses the phrase ``may report a violation of an +implementation restriction'' to indicate circumstances under which an +implementation is permitted to report that it is unable to continue +execution of a correct program because of some restriction imposed by the +implementation. Implementation restrictions are of course discouraged, +but implementations are encouraged to report violations of implementation +restrictions.

+ +For example, an implementation may report a violation of an +implementation restriction if it does not have enough storage to run a +program.

+ +If the value of an expression is said to be ``unspecified,'' then +the expression must evaluate to some object without signalling an error, +but the value depends on the implementation; this report explicitly does +not say what value should be returned.

+ +

+ +

+ + +

1.3.3  Entry format

+ +Chapters 4 and 6 are organized +into entries. Each entry describes one language feature or a group of +related features, where a feature is either a syntactic construct or a +built-in procedure. An entry begins with one or more header lines of the form

+ +

category:  template 
+

+ +for required, primitive features, or

+ +

qualifier category:  template 
+

+ +where qualifier is either ``library'' or ``optional'' as defined +in section 1.3.1.

+ +If category is ``syntax'', the entry describes an expression +type, and the template gives the syntax of the expression type. +Components of expressions are designated by syntactic variables, which +are written using angle brackets, for example, <expression>, +<variable>. Syntactic variables should be understood to denote segments of +program text; for example, <expression> stands for any string of +characters which is a syntactically valid expression. The notation +

+        <thing1> ... +

+indicates zero or more occurrences of a <thing>, and +

+        <thing1> <thing2> ... +

+indicates one or more occurrences of a <thing>.

+ +If category is ``procedure'', then the entry describes a procedure, and +the header line gives a template for a call to the procedure. Argument +names in the template are italicized. Thus the header line

+ +

procedure:  (vector-ref vector k) 
+

+ +indicates that the built-in procedure vector-ref takes +two arguments, a vector vector and an exact non-negative integer +k (see below). The header lines

+ +

procedure:  (make-vector k) 
+ +
procedure:  (make-vector k fill) 
+

+ +indicate that the make-vector procedure must be defined to take +either one or two arguments.

+ + +It is an error for an operation to be presented with an argument that it +is not specified to handle. For succinctness, we follow the convention +that if an argument name is also the name of a type listed in +section 3.2, then that argument must be of the named type. +For example, the header line for vector-ref given above dictates that the +first argument to vector-ref must be a vector. The following naming +conventions also imply type restrictions: + +

+ + + + + + + + + + +
objany object
list, list1, ... listj, ...list (see section 6.3.2)
z, z1, ... zj, ...complex number
x, x1, ... xj, ...real number
y, y1, ... yj, ...real number
q, q1, ... qj, ...rational number
n, n1, ... nj, ...integer
k, k1, ... kj, ...exact non-negative integer
+

+ +

+ + +

1.3.4  Evaluation examples

+ +The symbol ``===>'' used in program examples should be read +``evaluates to.'' For example,

+ +

(* 5 8)              ===>  40

+ +means that the expression (* 5 8) evaluates to the object 40. +Or, more precisely: the expression given by the sequence of characters +``(* 5 8)'' evaluates, in the initial environment, to an object +that may be represented externally by the sequence of characters ``40''. See section 3.3 for a discussion of external +representations of objects.

+ + +

1.3.5  Naming conventions

+ +By convention, the names of procedures that always return a boolean +value usually end +in ``?''. Such procedures are called predicates.

+ +By convention, the names of procedures that store values into previously +allocated locations (see section 3.4) usually end in +``!''. +Such procedures are called mutation procedures. +By convention, the value returned by a mutation procedure is unspecified.

+ +By convention, ``->'' appears within the names of procedures that +take an object of one type and return an analogous object of another type. +For example, list->vector takes a list and returns a vector whose +elements are the same as those of the list.

+ + +

+ +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-5.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-5.html new file mode 100644 index 0000000..56f33c3 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-5.html @@ -0,0 +1,164 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+

+Lexical conventions

+ +This section gives an informal account of some of the lexical +conventions used in writing Scheme programs. For a formal syntax of +Scheme, see section 7.1.

+ +Upper and lower case forms of a letter are never distinguished +except within character and string constants. For example, Foo is +the same identifier as FOO, and #x1AB is the same number as +#X1ab.

+ + +

2.1  Identifiers

+ +

+ +Most identifiers allowed by other programming +languages are also acceptable to Scheme. The precise rules for forming +identifiers vary among implementations of Scheme, but in all +implementations a sequence of letters, digits, and ``extended alphabetic +characters'' that begins with a character that cannot begin a number is +an identifier. In addition, +, -, and ... are identifiers. +Here are some examples of identifiers:

+ +

lambda                   q
+list->vector             soup
++                        V17a
+<=?                      a34kTMNs
+the-word-recursion-has-many-meanings

+ +Extended alphabetic characters may be used within identifiers as if +they were letters. The following are extended alphabetic characters:

+ +

! $ % & * + - . / : < = > ? @ ^ _ ~ 

+ +See section 7.1.1 for a formal syntax of identifiers.

+ +Identifiers have two uses within Scheme programs: +

+ +

+ + +

2.2  Whitespace and comments

+ +Whitespace characters are spaces and newlines. +(Implementations typically provide additional whitespace characters such +as tab or page break.) Whitespace is used for improved readability and +as necessary to separate tokens from each other, a token being an +indivisible lexical unit such as an identifier or number, but is +otherwise insignificant. Whitespace may occur between any two tokens, +but not within a token. Whitespace may also occur inside a string, +where it is significant.

+ +A semicolon (;) indicates the start of a +comment. The comment continues to the +end of the line on which the semicolon appears. Comments are invisible +to Scheme, but the end of the line is visible as whitespace. This +prevents a comment from appearing in the middle of an identifier or +number.

+ +

;;; The FACT procedure computes the factorial
+;;; of a non-negative integer.
+(define fact
+  (lambda (n)
+    (if (= n 0)
+        1        ;Base case: return 1
+        (* n (fact (- n 1))))))

+ + +

2.3  Other notations

+ +

+ +For a description of the notations used for numbers, see +section 6.2.

+ +

+        

+

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-6.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-6.html new file mode 100644 index 0000000..432bbcd --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-6.html @@ -0,0 +1,327 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+

+Basic concepts

+ +

+ + +

3.1  Variables, syntactic keywords, and regions

+ + +

+ +An identifier may name a type of syntax, or it may name +a location where a value can be stored. An identifier that names a type +of syntax is called a syntactic keyword +and is said to be bound to that syntax. An identifier that names a +location is called a variable and is said to be +bound to that location. The set of all visible +bindings in effect at some point in a program is +known as the environment in effect at that point. The value +stored in the location to which a variable is bound is called the +variable's value. By abuse of terminology, the variable is sometimes +said to name the value or to be bound to the value. This is not quite +accurate, but confusion rarely results from this practice.

+ +

+ +

+ +Certain expression types are used to create new kinds of syntax +and bind syntactic keywords to those new syntaxes, while other +expression types create new locations and bind variables to those +locations. These expression types are called binding constructs. + +Those that bind syntactic keywords are listed in section 4.3. +The most fundamental of the variable binding constructs is the +lambda expression, because all other variable binding constructs +can be explained in terms of lambda expressions. The other +variable binding constructs are let, let*, letrec, +and do expressions (see sections 4.1.4, 4.2.2, and +4.2.4).

+ + +Like Algol and Pascal, and unlike most other dialects of Lisp +except for Common Lisp, Scheme is a statically scoped language with +block structure. To each place where an identifier is bound in a program +there corresponds a region of the program text within which +the binding is visible. The region is determined by the particular +binding construct that establishes the binding; if the binding is +established by a lambda expression, for example, then its region +is the entire lambda expression. Every mention of an identifier +refers to the binding of the identifier that established the +innermost of the regions containing the use. If there is no binding of +the identifier whose region contains the use, then the use refers to the +binding for the variable in the top level environment, if any +(chapters 4 and 6); if there is no +binding for the identifier, +it is said to be unbound.

+ +

+ +

+ +

+ + +

3.2  Disjointness of types

+ +

+ +No object satisfies more than one of the following predicates:

+ +

boolean?          pair?
+symbol?           number?
+char?             string?
+vector?           port?
+procedure?

+ +These predicates define the types boolean, pair, symbol, number, char (or character), string, vector, port, and procedure. The empty list is a special +object of its own type; it satisfies none of the above predicates. + + +

+ +Although there is a separate boolean type, +any Scheme value can be used as a boolean value for the purpose of a +conditional test. As explained in section 6.3.1, all +values count as true in such a test except for #f. +This report uses the word ``true'' to refer to any +Scheme value except #f, and the word ``false'' to refer to +#f.

+ + +

3.3  External representations

+ +

+ +An important concept in Scheme (and Lisp) is that of the external +representation of an object as a sequence of characters. For example, +an external representation of the integer 28 is the sequence of +characters ``28'', and an external representation of a list consisting +of the integers 8 and 13 is the sequence of characters ``(8 13)''.

+ +The external representation of an object is not necessarily unique. The +integer 28 also has representations ``#e28.000'' and ``#x1c'', and the +list in the previous paragraph also has the representations ``( 08 13 +)'' and ``(8 . (13 . ()))'' (see section 6.3.2).

+ +Many objects have standard external representations, but some, such as +procedures, do not have standard representations (although particular +implementations may define representations for them).

+ +An external representation may be written in a program to obtain the +corresponding object (see quote, section 4.1.2).

+ +External representations can also be used for input and output. The +procedure read (section 6.6.2) parses external +representations, and the procedure write (section 6.6.3) +generates them. Together, they provide an elegant and powerful +input/output facility.

+ +Note that the sequence of characters ``(+ 2 6)'' is not an +external representation of the integer 8, even though it is an +expression evaluating to the integer 8; rather, it is an external +representation of a three-element list, the elements of which are the symbol ++ and the integers 2 and 6. Scheme's syntax has the property that +any sequence of characters that is an expression is also the external +representation of some object. This can lead to confusion, since it may +not be obvious out of context whether a given sequence of characters is +intended to denote data or program, but it is also a source of power, +since it facilitates writing programs such as interpreters and +compilers that treat programs as data (or vice versa).

+ +The syntax of external representations of various kinds of objects +accompanies the description of the primitives for manipulating the +objects in the appropriate sections of chapter 6.

+ + +

3.4  Storage model

+ +

+ +Variables and objects such as pairs, vectors, and strings implicitly +denote locations or sequences of locations. A string, for +example, denotes as many locations as there are characters in the string. +(These locations need not correspond to a full machine word.) A new value may be +stored into one of these locations using the string-set! procedure, but +the string continues to denote the same locations as before.

+ +An object fetched from a location, by a variable reference or by +a procedure such as car, vector-ref, or string-ref, is +equivalent in the sense of eqv? (section 6.1) +to the object last stored in the location before the fetch.

+ +Every location is marked to show whether it is in use. +No variable or object ever refers to a location that is not in use. +Whenever this report speaks of storage being allocated for a variable +or object, what is meant is that an appropriate number of locations are +chosen from the set of locations that are not in use, and the chosen +locations are marked to indicate that they are now in use before the variable +or object is made to denote them.

+ +In many systems it is desirable for constants (i.e. the values of +literal expressions) to reside in read-only-memory. To express this, it is +convenient to imagine that every object that denotes locations is associated +with a flag telling whether that object is mutable or +immutable. In such systems literal constants and the strings +returned by symbol->string are immutable objects, while all objects +created by the other procedures listed in this report are mutable. It is an +error to attempt to store a new value into a location that is denoted by an +immutable object.

+ + +

3.5  Proper tail recursion

+ +

+ +Implementations of Scheme are required to be +properly tail-recursive. +Procedure calls that occur in certain syntactic +contexts defined below are `tail calls'. A Scheme implementation is +properly tail-recursive if it supports an unbounded number of active +tail calls. A call is active if the called procedure may still +return. Note that this includes calls that may be returned from either +by the current continuation or by continuations captured earlier by +call-with-current-continuation that are later invoked. +In the absence of captured continuations, calls could +return at most once and the active calls would be those that had not +yet returned. +A formal definition of proper tail recursion can be found +in [8].

+ +

Rationale:  

+ +Intuitively, no space is needed for an active tail call because the +continuation that is used in the tail call has the same semantics as the +continuation passed to the procedure containing the call. Although an improper +implementation might use a new continuation in the call, a return +to this new continuation would be followed immediately by a return +to the continuation passed to the procedure. A properly tail-recursive +implementation returns to that continuation directly.

+ +Proper tail recursion was one of the central ideas in Steele and +Sussman's original version of Scheme. Their first Scheme interpreter +implemented both functions and actors. Control flow was expressed using +actors, which differed from functions in that they passed their results +on to another actor instead of returning to a caller. In the terminology +of this section, each actor finished with a tail call to another actor.

+ +Steele and Sussman later observed that in their interpreter the code +for dealing with actors was identical to that for functions and thus +there was no need to include both in the language.

+ +

+ +A tail call is a procedure call that occurs +in a tail context. Tail contexts are defined inductively. Note +that a tail context is always determined with respect to a particular lambda +expression.

+ +

+ +Certain built-in procedures are also required to perform tail calls. +The first argument passed to apply and to +call-with-current-continuation, and the second argument passed to +call-with-values, must be called via a tail call. +Similarly, eval must evaluate its argument as if it +were in tail position within the eval procedure.

+ +In the following example the only tail call is the call to f. +None of the calls to g or h are tail calls. The reference to +x is in a tail context, but it is not a call and thus is not a +tail call. +

(lambda ()
+  (if (g)
+      (let ((x (h)))
+        x)
+      (and (g) (f))))
+

+

Note:   +Implementations are allowed, but not required, to +recognize that some non-tail calls, such as the call to h +above, can be evaluated as though they were tail calls. +In the example above, the let expression could be compiled +as a tail call to h. (The possibility of h returning +an unexpected number of values can be ignored, because in that +case the effect of the let is explicitly unspecified and +implementation-dependent.) +

+ +        

+

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html new file mode 100644 index 0000000..4a2ab4f --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html @@ -0,0 +1,1023 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+

+Expressions

+ +

+ + +

+ + +Expression types are categorized as primitive or derived. +Primitive expression types include variables and procedure calls. +Derived expression types are not semantically primitive, but can instead +be defined as macros. +With the exception of quasiquote, whose macro definition is complex, +the derived expressions are classified as library features. +Suitable definitions are given in section 7.3.

+ + +

4.1  Primitive expression types

+ +

+ + +

4.1.1  Variable references

+ +

+ +

syntax:  <variable> 
+

+ +An expression consisting of a variable +(section 3.1) is a variable reference. The value of +the variable reference is the value stored in the location to which the +variable is bound. It is an error to reference an +unbound variable.

+ +

(define x 28)
+x           ===>  28

+

+ + +

4.1.2  Literal expressions

+ +

+ +

syntax:  (quote <datum>) 
+ +
syntax:  '<datum> 
+ +
syntax:  <constant> 
+

+ +(quote <datum>) evaluates to <datum>. +<Datum> +may be any external representation of a Scheme object (see +section 3.3). This notation is used to include literal +constants in Scheme code.

+ +

(quote a)                             ===>  a
+(quote #(a b c))             ===>  #(a b c)
+(quote (+ 1 2))                       ===>  (+ 1 2)

+ +(quote <datum>) may be abbreviated as +'<datum>. The two notations are equivalent in all +respects.

+ +

'a                           ===>  a
+'#(a b c)                   ===>  #(a b c)
+'()                          ===>  ()
+'(+ 1 2)                     ===>  (+ 1 2)
+'(quote a)                   ===>  (quote a)
+''a                          ===>  (quote a)

+ +Numerical constants, string constants, character constants, and boolean +constants evaluate ``to themselves''; they need not be quoted.

+ +

'"abc"             ===>  "abc"
+"abc"              ===>  "abc"
+'145932            ===>  145932
+145932             ===>  145932
+'#t          ===>  #t
+#t           ===>  #t

+ +As noted in section 3.4, it is an error to alter a constant +(i.e. the value of a literal expression) using a mutation procedure like +set-car! or string-set!.

+ +

+ + +

4.1.3  Procedure calls

+ +

+ +

syntax:  (<operator> <operand1> ...) 
+

+ +A procedure call is written by simply enclosing in parentheses +expressions for the procedure to be called and the arguments to be +passed to it. The operator and operand expressions are evaluated (in an +unspecified order) and the resulting procedure is passed the resulting +arguments. +

(+ 3 4)                                  ===>  7
+((if #f + *) 3 4)                 ===>  12

+ +A number of procedures are available as the values of variables in the +initial environment; for example, the addition and multiplication +procedures in the above examples are the values of the variables + +and *. New procedures are created by evaluating lambda expressions +(see section 4.1.4). + + +Procedure calls may return any number of values (see values in +section 6.4). With the exception of values +the procedures available in the initial environment return one +value or, for procedures such as apply, pass on the values returned +by a call to one of their arguments.

+ +Procedure calls are also called combinations. +

+ +

Note:   In contrast to other dialects of Lisp, the order of +evaluation is unspecified, and the operator expression and the operand +expressions are always evaluated with the same evaluation rules. +

+ +

Note:   +Although the order of evaluation is otherwise unspecified, the effect of +any concurrent evaluation of the operator and operand expressions is +constrained to be consistent with some sequential order of evaluation. +The order of evaluation may be chosen differently for each procedure call. +

+ +

Note:   In many dialects of Lisp, the empty combination, (), is a legitimate expression. In Scheme, combinations must have at +least one subexpression, so () is not a syntactically valid +expression. +

+ +

+ +

+ + +

4.1.4  Procedures

+ +

+ +

syntax:  (lambda <formals> <body>) 
+

+ +Syntax: <Formals> should be a formal arguments list as described below, +and <body> should be a sequence of one or more expressions.

+ +Semantics: A lambda expression evaluates to a procedure. The environment in +effect when the lambda expression was evaluated is remembered as part of the +procedure. When the procedure is later called with some actual +arguments, the environment in which the lambda expression was evaluated will +be extended by binding the variables in the formal argument list to +fresh locations, the corresponding actual argument values will be stored +in those locations, and the expressions in the body of the lambda expression +will be evaluated sequentially in the extended environment. +The result(s) of the last expression in the body will be returned as +the result(s) of the procedure call.

+ +

(lambda (x) (+ x x))              ===>  a procedure
+((lambda (x) (+ x x)) 4)          ===>  8
+
+(define reverse-subtract
+  (lambda (x y) (- y x)))
+(reverse-subtract 7 10)                 ===>  3
+
+(define add4
+  (let ((x 4))
+    (lambda (y) (+ x y))))
+(add4 6)                                ===>  10

+ +<Formals> should have one of the following forms:

+ +

+ +It is an error for a <variable> to appear more than once in +<formals>.

+ +

((lambda x x) 3 4 5 6)                  ===>  (3 4 5 6)
+((lambda (x y . z) z)
+ 3 4 5 6)                               ===>  (5 6)

+ +Each procedure created as the result of evaluating a lambda expression is +(conceptually) tagged +with a storage location, in order to make eqv? and +eq? work on procedures (see section 6.1).

+ +

+ + +

4.1.5  Conditionals

+ +

+ +

syntax:  (if <test> <consequent> <alternate>) 
+ +
syntax:  (if <test> <consequent>) 
+ +Syntax: <Test>, <consequent>, and <alternate> may be arbitrary +expressions.

+ +Semantics: An if expression is evaluated as follows: first, +<test> is evaluated. If it yields a true value (see +section 6.3.1), then <consequent> is evaluated and +its value(s) is(are) returned. Otherwise <alternate> is evaluated and its +value(s) is(are) returned. If <test> yields a false value and no +<alternate> is specified, then the result of the expression is +unspecified.

+ +

(if (> 3 2) 'yes 'no)                   ===>  yes
+(if (> 2 3) 'yes 'no)                   ===>  no
+(if (> 3 2)
+    (- 3 2)
+    (+ 3 2))                            ===>  1

+ +

+ + +

4.1.6  Assignments

+ +

+ +

syntax:  (set! <variable> <expression>) 
+

+ +<Expression> is evaluated, and the resulting value is stored in +the location to which <variable> is bound. <Variable> must +be bound either in some region enclosing the set! expression +or at top level. The result of the set! expression is +unspecified.

+ +

(define x 2)
+(+ x 1)                         ===>  3
+(set! x 4)                      ===>  unspecified
+(+ x 1)                         ===>  5

+ +

+ + +

4.2  Derived expression types

+ +

+ +The constructs in this section are hygienic, as discussed in +section 4.3. +For reference purposes, section 7.3 gives macro definitions +that will convert most of the constructs described in this section +into the primitive constructs described in the previous section.

+ +

+ + +

4.2.1  Conditionals

+ +

+ +

library syntax:  (cond <clause1> <clause2> ...) 
+

+ +Syntax: Each <clause> should be of the form +

(<test> <expression1...)

+where <test> is any expression. Alternatively, a <clause> may be +of the form +

(<test> => <expression>)

+The last <clause> may be +an ``else clause,'' which has the form +

(else <expression1> <expression2...).

+ +

+ +Semantics: A cond expression is evaluated by evaluating the <test> +expressions of successive <clause>s in order until one of them +evaluates to a true value (see +section 6.3.1). When a <test> evaluates to a true +value, then the remaining <expression>s in its <clause> are +evaluated in order, and the result(s) of the last <expression> in the +<clause> is(are) returned as the result(s) of the entire cond +expression. If the selected <clause> contains only the +<test> and no <expression>s, then the value of the +<test> is returned as the result. If the selected <clause> uses the +=> alternate form, then the <expression> is evaluated. +Its value must be a procedure that accepts one argument; this procedure is then +called on the value of the <test> and the value(s) returned by this +procedure is(are) returned by the cond expression. +If all <test>s evaluate +to false values, and there is no else clause, then the result of +the conditional expression is unspecified; if there is an else +clause, then its <expression>s are evaluated, and the value(s) of +the last one is(are) returned.

+ +

(cond ((> 3 2) 'greater)
+      ((< 3 2) 'less))                 ===>  greater
+(cond ((> 3 3) 'greater)
+      ((< 3 3) 'less)
+      (else 'equal))                    ===>  equal
+(cond ((assv 'b '((a 1) (b 2))) => cadr)
+      (else #f))                 ===>  2

+ +

+ +

library syntax:  (case <key> <clause1> <clause2> ...) 
+

+ +Syntax: <Key> may be any expression. Each <clause> should have +the form +

((<datum1...) <expression1> <expression2...),

+where each <datum> is an external representation of some object. +All the <datum>s must be distinct. +The last <clause> may be an ``else clause,'' which has the form +

(else <expression1> <expression2...).

+

+ +Semantics: A case expression is evaluated as follows. <Key> is +evaluated and its result is compared against each <datum>. If the +result of evaluating <key> is equivalent (in the sense of +eqv?; see section 6.1) to a <datum>, then the +expressions in the corresponding <clause> are evaluated from left +to right and the result(s) of the last expression in the <clause> is(are) +returned as the result(s) of the case expression. If the result of +evaluating <key> is different from every <datum>, then if +there is an else clause its expressions are evaluated and the +result(s) of the last is(are) the result(s) of the case expression; +otherwise the result of the case expression is unspecified.

+ +

(case (* 2 3)
+  ((2 3 5 7) 'prime)
+  ((1 4 6 8 9) 'composite))             ===>  composite
+(case (car '(c d))
+  ((a) 'a)
+  ((b) 'b))                             ===>  unspecified
+(case (car '(c d))
+  ((a e i o u) 'vowel)
+  ((w y) 'semivowel)
+  (else 'consonant))                    ===>  consonant

+ +

+ +

library syntax:  (and <test1> ...) 
+

+ +The <test> expressions are evaluated from left to right, and the +value of the first expression that evaluates to a false value (see +section 6.3.1) is returned. Any remaining expressions +are not evaluated. If all the expressions evaluate to true values, the +value of the last expression is returned. If there are no expressions +then #t is returned.

+ +

(and (= 2 2) (> 2 1))                   ===>  #t
+(and (= 2 2) (< 2 1))                   ===>  #f
+(and 1 2 'c '(f g))                     ===>  (f g)
+(and)                                   ===>  #t

+ +

+ +

library syntax:  (or <test1> ...) 
+

+ +The <test> expressions are evaluated from left to right, and the value of the +first expression that evaluates to a true value (see +section 6.3.1) is returned. Any remaining expressions +are not evaluated. If all expressions evaluate to false values, the +value of the last expression is returned. If there are no +expressions then #f is returned.

+ +

(or (= 2 2) (> 2 1))                    ===>  #t
+(or (= 2 2) (< 2 1))                    ===>  #t
+(or #f #f #f)         ===>  #f
+(or (memq 'b '(a b c)) 
+    (/ 3 0))                            ===>  (b c)

+ +

+ + +

4.2.2  Binding constructs

+ +The three binding constructs let, let*, and letrec +give Scheme a block structure, like Algol 60. The syntax of the three +constructs is identical, but they differ in the regions they establish +for their variable bindings. In a let expression, the initial +values are computed before any of the variables become bound; in a +let* expression, the bindings and evaluations are performed +sequentially; while in a letrec expression, all the bindings are in +effect while their initial values are being computed, thus allowing +mutually recursive definitions.

+ +

library syntax:  (let <bindings> <body>) 
+

+ +Syntax: <Bindings> should have the form +

((<variable1> <init1>) ...),

+where each <init> is an expression, and <body> should be a +sequence of one or more expressions. It is +an error for a <variable> to appear more than once in the list of variables +being bound.

+ +Semantics: The <init>s are evaluated in the current environment (in some +unspecified order), the <variable>s are bound to fresh locations +holding the results, the <body> is evaluated in the extended +environment, and the value(s) of the last expression of <body> +is(are) returned. Each binding of a <variable> has <body> as its +region.

+ +

(let ((x 2) (y 3))
+  (* x y))                              ===>  6
+
+(let ((x 2) (y 3))
+  (let ((x 7)
+        (z (+ x y)))
+    (* z x)))                           ===>  35

+ +See also named let, section 4.2.4.

+ +

+ +

library syntax:  (let* <bindings> <body>) 
+

+ +Syntax: <Bindings> should have the form +

((<variable1> <init1>) ...),

+and <body> should be a sequence of +one or more expressions.

+ +Semantics: Let* is similar to let, but the bindings are performed +sequentially from left to right, and the region of a binding indicated +by (<variable> <init>) is that part of the let* +expression to the right of the binding. Thus the second binding is done +in an environment in which the first binding is visible, and so on.

+ +

(let ((x 2) (y 3))
+  (let* ((x 7)
+         (z (+ x y)))
+    (* z x)))                     ===>  70

+ +

+ +

library syntax:  (letrec <bindings> <body>) 
+

+ +Syntax: <Bindings> should have the form +

((<variable1> <init1>) ...),

+and <body> should be a sequence of +one or more expressions. It is an error for a <variable> to appear more +than once in the list of variables being bound.

+ +Semantics: The <variable>s are bound to fresh locations holding undefined +values, the <init>s are evaluated in the resulting environment (in +some unspecified order), each <variable> is assigned to the result +of the corresponding <init>, the <body> is evaluated in the +resulting environment, and the value(s) of the last expression in +<body> is(are) returned. Each binding of a <variable> has the +entire letrec expression as its region, making it possible to +define mutually recursive procedures.

+ +

(letrec ((even?
+          (lambda (n)
+            (if (zero? n)
+                #t
+                (odd? (- n 1)))))
+         (odd?
+          (lambda (n)
+            (if (zero? n)
+                #f
+                (even? (- n 1))))))
+  (even? 88))   
+                        ===>  #t

+ +One restriction on letrec is very important: it must be possible +to evaluate each <init> without assigning or referring to the value of any +<variable>. If this restriction is violated, then it is an error. The +restriction is necessary because Scheme passes arguments by value rather than by +name. In the most common uses of letrec, all the <init>s are +lambda expressions and the restriction is satisfied automatically.

+ + +

+ + +

4.2.3  Sequencing

+ +

+ +

library syntax:  (begin <expression1> <expression2> ...) 
+

+ +The <expression>s are evaluated sequentially from left to right, +and the value(s) of the last <expression> is(are) returned. This +expression type is used to sequence side effects such as input and +output.

+ +

(define x 0)
+
+(begin (set! x 5)
+       (+ x 1))                          ===>  6
+
+(begin (display "4 plus 1 equals ")
+       (display (+ 4 1)))              ===>  unspecified
 and prints  4 plus 1 equals 5

+ +

+ + +

4.2.4  Iteration

+ + +

library syntax:  (do ((<variable1> <init1> <step1>) 
+ +     ...)
+   (<test> <expression> ...)
+ <command> ...)

+ +Do is an iteration construct. It specifies a set of variables to +be bound, how they are to be initialized at the start, and how they are +to be updated on each iteration. When a termination condition is met, +the loop exits after evaluating the <expression>s.

+ +Do expressions are evaluated as follows: +The <init> expressions are evaluated (in some unspecified order), +the <variable>s are bound to fresh locations, the results of the +<init> expressions are stored in the bindings of the +<variable>s, and then the iteration phase begins.

+ +Each iteration begins by evaluating <test>; if the result is +false (see section 6.3.1), then the <command> +expressions are evaluated in order for effect, the <step> +expressions are evaluated in some unspecified order, the +<variable>s are bound to fresh locations, the results of the +<step>s are stored in the bindings of the +<variable>s, and the next iteration begins.

+ +If <test> evaluates to a true value, then the +<expression>s are evaluated from left to right and the value(s) of +the last <expression> is(are) returned. If no <expression>s +are present, then the value of the do expression is unspecified.

+ +The region of the binding of a <variable> +consists of the entire do expression except for the <init>s. +It is an error for a <variable> to appear more than once in the +list of do variables.

+ +A <step> may be omitted, in which case the effect is the +same as if (<variable> <init> <variable>) had +been written instead of (<variable> <init>).

+ +

(do ((vec (make-vector 5))
+     (i 0 (+ i 1)))
+    ((= i 5) vec)
+  (vector-set! vec i i))                  ===>  #(0 1 2 3 4)
+
+(let ((x '(1 3 5 7 9)))
+  (do ((x x (cdr x))
+       (sum 0 (+ sum (car x))))
+      ((null? x) sum)))                     ===>  25

+ +

+ +

library syntax:  (let <variable> <bindings> <body>) 
+

+ + +``Named let'' is a variant on the syntax of let which provides +a more general looping construct than do and may also be used to express +recursions. +It has the same syntax and semantics as ordinary let +except that <variable> is bound within <body> to a procedure +whose formal arguments are the bound variables and whose body is +<body>. Thus the execution of <body> may be repeated by +invoking the procedure named by <variable>.

+ +

(let loop ((numbers '(3 -2 1 6 -5))
+           (nonneg '())
+           (neg '()))
+  (cond ((null? numbers) (list nonneg neg))
+        ((>= (car numbers) 0)
+         (loop (cdr numbers)
+               (cons (car numbers) nonneg)
+               neg))
+        ((< (car numbers) 0)
+         (loop (cdr numbers)
+               nonneg
+               (cons (car numbers) neg)))))   
                ===>  ((6 1 3) (-5 -2))

+ +

+ + +

4.2.5  Delayed evaluation

+ +

+ +

library syntax:  (delay <expression>) 
+

+ +

+ +The delay construct is used together with the procedure force to +implement lazy evaluation or call by need. +(delay <expression>) returns an object called a +promise which at some point in the future may be asked (by +the force procedure) to evaluate +<expression>, and deliver the resulting value. +The effect of <expression> returning multiple values +is unspecified.

+ +See the description of force (section 6.4) for a +more complete description of delay.

+ +

+ + +

4.2.6  Quasiquotation

+ +

+ +

syntax:  (quasiquote <qq template>) 
+
syntax:  `<qq template> 
+

+ +``Backquote'' or ``quasiquote'' expressions are useful +for constructing a list or vector structure when most but not all of the +desired structure is known in advance. If no +commas appear within the <qq template>, the result of +evaluating +`<qq template> is equivalent to the result of evaluating +'<qq template>. If a comma appears within the +<qq template>, however, the expression following the comma is +evaluated (``unquoted'') and its result is inserted into the structure +instead of the comma and the expression. If a comma appears followed +immediately by an at-sign (@), then the following +expression must evaluate to a list; the opening and closing parentheses +of the list are then ``stripped away'' and the elements of the list are +inserted in place of the comma at-sign expression sequence. A comma +at-sign should only appear within a list or vector <qq template>.

+ + +

`(list ,(+ 1 2) 4)          ===>  (list 3 4)
+(let ((name 'a)) `(list ,name ',name))           
                ===>  (list a (quote a))
+`(a ,(+ 1 2) ,@(map abs '(4 -5 6)) b)           
                ===>  (a 3 4 5 6 b)
+`(( foo ,(- 10 3)) ,@(cdr '(c)) . ,(car '(cons)))           
                ===>  ((foo 7) . cons)
+`#(10 5 ,(sqrt 4) ,@(map sqrt '(16 9)) 8)           
                ===>  #(10 5 2 4 3 8)

+ +Quasiquote forms may be nested. Substitutions are made only for +unquoted components appearing at the same nesting level +as the outermost backquote. The nesting level increases by one inside +each successive quasiquotation, and decreases by one inside each +unquotation.

+ +

`(a `(b ,(+ 1 2) ,(foo ,(+ 1 3) d) e) f)           
                ===>  (a `(b ,(+ 1 2) ,(foo 4 d) e) f)
+(let ((name1 'x)
+      (name2 'y))
+  `(a `(b ,,name1 ,',name2 d) e))           
                ===>  (a `(b ,x ,'y d) e)

+ +The two notations +`<qq template> and (quasiquote <qq template>) +are identical in all respects. +,<expression> is identical to (unquote <expression>), +and +,@<expression> is identical to (unquote-splicing <expression>). +The external syntax generated by write for two-element lists whose +car is one of these symbols may vary between implementations. +

+ +

(quasiquote (list (unquote (+ 1 2)) 4))           
                ===>  (list 3 4)
+'(quasiquote (list (unquote (+ 1 2)) 4))           
                ===>  `(list ,(+ 1 2) 4)
+     i.e., (quasiquote (list (unquote (+ 1 2)) 4))

+ +Unpredictable behavior can result if any of the symbols +quasiquote, unquote, or unquote-splicing appear in +positions within a <qq template> otherwise than as described above.

+ +

+ + +

4.3  Macros

+ +

+ +Scheme programs can define and use new derived expression types, +called macros. +Program-defined expression types have the syntax +

(<keyword> <datum> ...)

where <keyword> is an identifier that uniquely determines the +expression type. This identifier is called the syntactic +keyword, or simply keyword, of the macro. The +number of the <datum>s, and their syntax, depends on the +expression type.

+ +Each instance of a macro is called a use +of the macro. +The set of rules that specifies +how a use of a macro is transcribed into a more primitive expression +is called the transformer +of the macro.

+ +The macro definition facility consists of two parts:

+ +

+ +The syntactic keyword of a macro may shadow variable bindings, and local +variable bindings may shadow keyword bindings. All macros +defined using the pattern language are ``hygienic'' and ``referentially +transparent'' and thus preserve Scheme's lexical scoping [1415279]: + +

+ +

+ + + + +

4.3.1  Binding constructs for syntactic keywords

+ +

+ +Let-syntax and letrec-syntax are +analogous to let and letrec, but they bind +syntactic keywords to macro transformers instead of binding variables +to locations that contain values. Syntactic keywords may also be +bound at top level; see section 5.3.

+ +

syntax:  (let-syntax <bindings> <body>) 
+

+ +Syntax: <Bindings> should have the form +

((<keyword> <transformer spec>) ...)

+Each <keyword> is an identifier, +each <transformer spec> is an instance of syntax-rules, and +<body> should be a sequence of one or more expressions. It is an error +for a <keyword> to appear more than once in the list of keywords +being bound.

+ +Semantics: The <body> is expanded in the syntactic environment +obtained by extending the syntactic environment of the +let-syntax expression with macros whose keywords are +the <keyword>s, bound to the specified transformers. +Each binding of a <keyword> has <body> as its region.

+ +

(let-syntax ((when (syntax-rules ()
+                     ((when test stmt1 stmt2 ...)
+                      (if test
+                          (begin stmt1
+                                 stmt2 ...))))))
+  (let ((if #t))
+    (when if (set! if 'now))
+    if))                                   ===>  now
+
+(let ((x 'outer))
+  (let-syntax ((m (syntax-rules () ((m) x))))
+    (let ((x 'inner))
+      (m))))                               ===>  outer

+ +

+ +

syntax:  (letrec-syntax <bindings> <body>) 
+

+ +Syntax: Same as for let-syntax.

+ +Semantics: The <body> is expanded in the syntactic environment obtained by +extending the syntactic environment of the letrec-syntax +expression with macros whose keywords are the +<keyword>s, bound to the specified transformers. +Each binding of a <keyword> has the <bindings> +as well as the <body> within its region, +so the transformers can +transcribe expressions into uses of the macros +introduced by the letrec-syntax expression.

+ +

(letrec-syntax
+  ((my-or (syntax-rules ()
+            ((my-or) #f)
+            ((my-or e) e)
+            ((my-or e1 e2 ...)
+             (let ((temp e1))
+               (if temp
+                   temp
+                   (my-or e2 ...)))))))
+  (let ((x #f)
+        (y 7)
+        (temp 8)
+        (let odd?)
+        (if even?))
+    (my-or x
+           (let temp)
+           (if y)
+           y)))                ===>  7

+ +

+ + +

4.3.2  Pattern language

+ +

+ +A <transformer spec> has the following form:

+ +

:  (syntax-rules <literals> <syntax rule> ...) 
+

+ +Syntax: <Literals> is a list of identifiers and each <syntax rule> +should be of the form +

(<pattern> <template>)

+The <pattern> in a <syntax rule> is a list <pattern> +that begins with the keyword for the macro.

+ +A <pattern> is either an identifier, a constant, or one of the +following +

(<pattern> ...)
+(<pattern> <pattern> ... . <pattern>)
+(<pattern> ... <pattern> <ellipsis>)
+#(<pattern> ...)
+#(<pattern> ... <pattern> <ellipsis>)

+and a template is either an identifier, a constant, or one of the following +

(<element> ...)
+(<element> <element> ... . <template>)
+#(<element> ...)

+where an <element> is a <template> optionally +followed by an <ellipsis> and +an <ellipsis> is the identifier ``...'' (which cannot be used as +an identifier in either a template or a pattern).

+ +Semantics: An instance of syntax-rules produces a new macro +transformer by specifying a sequence of hygienic rewrite rules. A use +of a macro whose keyword is associated with a transformer specified by +syntax-rules is matched against the patterns contained in the +<syntax rule>s, beginning with the leftmost <syntax rule>. +When a match is found, the macro use is transcribed hygienically +according to the template.

+ +An identifier that appears in the pattern of a <syntax rule> is +a pattern variable, unless it is the keyword that begins the pattern, +is listed in <literals>, or is the identifier ``...''. +Pattern variables match arbitrary input elements and +are used to refer to elements of the input in the template. It is an +error for the same pattern variable to appear more than once in a +<pattern>.

+ +The keyword at the beginning of the pattern in a +<syntax rule> is not involved in the matching and +is not considered a pattern variable or literal identifier.

+ +

Rationale:   +The scope of the keyword is determined by the expression or syntax +definition that binds it to the associated macro transformer. +If the keyword were a pattern variable or literal +identifier, then +the template that follows the pattern would be within its scope +regardless of whether the keyword were bound by let-syntax +or by letrec-syntax. +

+ +Identifiers that appear in <literals> are interpreted as literal +identifiers to be matched against corresponding subforms of the input. +A subform +in the input matches a literal identifier if and only if it is an +identifier +and either both its occurrence in the macro expression and its +occurrence in the macro definition have the same lexical binding, or +the two identifiers are equal and both have no lexical binding.

+ + +A subpattern followed by ... can match zero or more elements of the +input. It is an error for ... to appear in <literals>. +Within a pattern the identifier ... must follow the last element of +a nonempty sequence of subpatterns.

+ +More formally, an input form F matches a pattern P if and only if:

+ +

+ +It is an error to use a macro keyword, within the scope of its +binding, in an expression that does not match any of the patterns.

+ +When a macro use is transcribed according to the template of the +matching <syntax rule>, pattern variables that occur in the +template are replaced by the subforms they match in the input. +Pattern variables that occur in subpatterns followed by one or more +instances of the identifier +... are allowed only in subtemplates that are +followed by as many instances of .... +They are replaced in the +output by all of the subforms they match in the input, distributed as +indicated. It is an error if the output cannot be built up as +specified.

+ + +Identifiers that appear in the template but are not pattern variables +or the identifier +... are inserted into the output as literal identifiers. If a +literal identifier is inserted as a free identifier then it refers to the +binding of that identifier within whose scope the instance of +syntax-rules appears. +If a literal identifier is inserted as a bound identifier then it is +in effect renamed to prevent inadvertent captures of free identifiers.

+ +As an example, if let and cond are defined as in +section 7.3 then they are hygienic (as required) and +the following is not an error.

+ +

(let ((=> #f))
+  (cond (#t => 'ok)))                   ===> ok

+ +The macro transformer for cond recognizes => +as a local variable, and hence an expression, and not as the +top-level identifier =>, which the macro transformer treats +as a syntactic keyword. Thus the example expands into

+ +

(let ((=> #f))
+  (if #t (begin => 'ok)))

+ +instead of

+ +

(let ((=> #f))
+  (let ((temp #t))
+    (if temp ('ok temp))))

+ +which would result in an invalid procedure call.

+ +

+ +        

+

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-8.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-8.html new file mode 100644 index 0000000..db3236a --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-8.html @@ -0,0 +1,198 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+

+Program structure

+ +

+ + +

5.1  Programs

+ +A Scheme program consists of a sequence of expressions, definitions, +and syntax definitions. +Expressions are described in chapter 4; +definitions and syntax definitions are the subject of the rest of the +present chapter.

+ +Programs are typically stored in files or entered interactively to a +running Scheme system, although other paradigms are possible; +questions of user interface lie outside the scope of this report. +(Indeed, Scheme would still be useful as a notation for expressing +computational methods even in the absence of a mechanical +implementation.)

+ +Definitions and syntax definitions occurring at the top level of a program +can be interpreted +declaratively. +They cause bindings to be created in the top level +environment or modify the value of existing top-level bindings. +Expressions occurring at the top level of a program are +interpreted imperatively; they are executed in order when the program is +invoked or loaded, and typically perform some kind of initialization.

+ +At the top level of a program (begin <form1> ...) is +equivalent to the sequence of expressions, definitions, and syntax definitions +that form the body of the begin.

+ +

+ + +

5.2  Definitions

+ +

+ +Definitions are valid in some, but not all, contexts where expressions +are allowed. They are valid only at the top level of a <program> +and at the beginning of a <body>. +

+ +A definition should have one of the following forms:

+ +

+ + +

5.2.1  Top level definitions

+ +At the top level of a program, a definition +

(define <variable> <expression>)

+has essentially the same effect as the assignment expression +

(set! <variable> <expression>)

+if <variable> is bound. If <variable> is not bound, +however, then the definition will bind <variable> to a new +location before performing the assignment, whereas it would be an error +to perform a set! on an unbound variable.

+ +

(define add3
+  (lambda (x) (+ x 3)))
+(add3 3)                                    ===>  6
+(define first car)
+(first '(1 2))                              ===>  1

+ +Some implementations of Scheme use an initial environment in +which all possible variables are bound to locations, most of +which contain undefined values. Top level definitions in +such an implementation are truly equivalent to assignments.

+ +

+ + +

5.2.2  Internal definitions

+ +

+ +Definitions may occur at the +beginning of a <body> (that is, the body of a lambda, +let, let*, letrec, let-syntax, or letrec-syntax +expression or that of a definition of an appropriate form). +Such definitions are known as internal definitions as opposed to the top level definitions described above. +The variable defined by an internal definition is local to the +<body>. That is, <variable> is bound rather than assigned, +and the region of the binding is the entire <body>. For example,

+ +

(let ((x 5))
+  (define foo (lambda (y) (bar x y)))
+  (define bar (lambda (a b) (+ (* a b) a)))
+  (foo (+ x 3)))                        ===>  45

+ +A <body> containing internal definitions can always be converted +into a completely equivalent letrec expression. For example, the +let expression in the above example is equivalent to

+ +

(let ((x 5))
+  (letrec ((foo (lambda (y) (bar x y)))
+           (bar (lambda (a b) (+ (* a b) a))))
+    (foo (+ x 3))))

+ +Just as for the equivalent letrec expression, it must be +possible to evaluate each <expression> of every internal +definition in a <body> without assigning or referring to +the value of any <variable> being defined.

+ +Wherever an internal definition may occur +(begin <definition1> ...) +is equivalent to the sequence of definitions +that form the body of the begin.

+ + +

5.3  Syntax definitions

+ +Syntax definitions are valid only at the top level of a <program>. + +They have the following form:

+ +(define-syntax <keyword> <transformer spec>)

+ +<Keyword> is an identifier, and +the <transformer spec> should be an instance of syntax-rules. +The top-level syntactic environment is extended by binding the +<keyword> to the specified transformer.

+ +There is no define-syntax analogue of internal definitions.

+ + + +Although macros may expand into definitions and syntax definitions in +any context that permits them, it is an error for a definition or syntax +definition to shadow a syntactic keyword whose meaning is needed to +determine whether some form in the group of forms that contains the +shadowing definition is in fact a definition, or, for internal definitions, +is needed to determine the boundary between the group and the expressions +that follow the group. For example, the following are errors:

+ +

(define define 3)
+
+(begin (define begin list))
+
+(let-syntax
+  ((foo (syntax-rules ()
+          ((foo (proc args ...) body ...)
+           (define proc
+             (lambda (args ...)
+               body ...))))))
+  (let ((x 3))
+    (foo (plus x y) (+ x y))
+    (define foo x)
+    (plus foo x)))
+

+ +        

+ +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html new file mode 100644 index 0000000..815ab1d --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html @@ -0,0 +1,2900 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + +

+ + +

+

+Standard procedures

+ + +

+ + + +

+ +This chapter describes Scheme's built-in procedures. The initial (or +``top level'') Scheme environment starts out with a number of variables +bound to locations containing useful values, most of which are primitive +procedures that manipulate data. For example, the variable abs is +bound to (a location initially containing) a procedure of one argument +that computes the absolute value of a number, and the variable + +is bound to a procedure that computes sums. Built-in procedures that +can easily be written in terms of other built-in procedures are identified as +``library procedures''.

+ +A program may use a top-level definition to bind any variable. It may +subsequently alter any such binding by an assignment (see 4.1.6). +These operations do not modify the behavior of Scheme's built-in +procedures. Altering any top-level binding that has not been introduced by a +definition has an unspecified effect on the behavior of the built-in procedures.

+ + +

6.1  Equivalence predicates

+ +

+ +A predicate is a procedure that always returns a boolean +value (#t or #f). An equivalence predicate is +the computational analogue of a mathematical equivalence relation (it is +symmetric, reflexive, and transitive). Of the equivalence predicates +described in this section, eq? is the finest or most +discriminating, and equal? is the coarsest. Eqv? is +slightly less discriminating than eq?.

+ +

procedure:  (eqv? obj1 obj2) 
+

+ +The eqv? procedure defines a useful equivalence relation on objects. +Briefly, it returns #t if obj1 and obj2 should +normally be regarded as the same object. This relation is left slightly +open to interpretation, but the following partial specification of +eqv? holds for all implementations of Scheme.

+ +The eqv? procedure returns #t if:

+ +

+ +The eqv? procedure returns #f if:

+ +

+ +

(eqv? 'a 'a)                             ===>  #t
+(eqv? 'a 'b)                             ===>  #f
+(eqv? 2 2)                               ===>  #t
+(eqv? '() '())                           ===>  #t
+(eqv? 100000000 100000000)               ===>  #t
+(eqv? (cons 1 2) (cons 1 2))             ===>  #f
+(eqv? (lambda () 1)
+      (lambda () 2))                     ===>  #f
+(eqv? #f 'nil)                          ===>  #f
+(let ((p (lambda (x) x)))
+  (eqv? p p))                                 ===>  #t

+ +The following examples illustrate cases in which the above rules do +not fully specify the behavior of eqv?. All that can be said +about such cases is that the value returned by eqv? must be a +boolean.

+ +

(eqv? "" "")                     ===>  unspecified
+(eqv? '#() '#())                 ===>  unspecified
+(eqv? (lambda (x) x)
+      (lambda (x) x))            ===>  unspecified
+(eqv? (lambda (x) x)
+      (lambda (y) y))            ===>  unspecified

+ +The next set of examples shows the use of eqv? with procedures +that have local state. Gen-counter must return a distinct +procedure every time, since each procedure has its own internal counter. +Gen-loser, however, returns equivalent procedures each time, since +the local state does not affect the value or side effects of the +procedures.

+ +

(define gen-counter
+  (lambda ()
+    (let ((n 0))
+      (lambda () (set! n (+ n 1)) n))))
+(let ((g (gen-counter)))
+  (eqv? g g))                   ===>  #t
+(eqv? (gen-counter) (gen-counter))
+                                ===>  #f
+(define gen-loser
+  (lambda ()
+    (let ((n 0))
+      (lambda () (set! n (+ n 1)) 27))))
+(let ((g (gen-loser)))
+  (eqv? g g))                   ===>  #t
+(eqv? (gen-loser) (gen-loser))
+                                ===>  unspecified
+
+(letrec ((f (lambda () (if (eqv? f g) 'both 'f)))
+         (g (lambda () (if (eqv? f g) 'both 'g))))
+  (eqv? f g))
+                                ===>  unspecified
+
+(letrec ((f (lambda () (if (eqv? f g) 'f 'both)))
+         (g (lambda () (if (eqv? f g) 'g 'both))))
+  (eqv? f g))
+                                ===>  #f

+ + +Since it is an error to modify constant objects (those returned by +literal expressions), implementations are permitted, though not +required, to share structure between constants where appropriate. Thus +the value of eqv? on constants is sometimes +implementation-dependent.

+ +

(eqv? '(a) '(a))                         ===>  unspecified
+(eqv? "a" "a")                           ===>  unspecified
+(eqv? '(b) (cdr '(a b)))                 ===>  unspecified
+(let ((x '(a)))
+  (eqv? x x))                            ===>  #t

+ +

Rationale:   +The above definition of eqv? allows implementations latitude in +their treatment of procedures and literals: implementations are free +either to detect or to fail to detect that two procedures or two literals +are equivalent to each other, and can decide whether or not to +merge representations of equivalent objects by using the same pointer or +bit pattern to represent both. +

+ +

+ +

procedure:  (eq? obj1 obj2) 
+

+ +Eq? is similar to eqv? except that in some cases it is +capable of discerning distinctions finer than those detectable by +eqv?.

+ +Eq? and eqv? are guaranteed to have the same +behavior on symbols, booleans, the empty list, pairs, procedures, +and non-empty +strings and vectors. Eq?'s behavior on numbers and characters is +implementation-dependent, but it will always return either true or +false, and will return true only when eqv? would also return +true. Eq? may also behave differently from eqv? on empty +vectors and empty strings.

+ +

(eq? 'a 'a)                             ===>  #t
+(eq? '(a) '(a))                         ===>  unspecified
+(eq? (list 'a) (list 'a))               ===>  #f
+(eq? "a" "a")                           ===>  unspecified
+(eq? "" "")                             ===>  unspecified
+(eq? '() '())                           ===>  #t
+(eq? 2 2)                               ===>  unspecified
+(eq? #\A #\A)         ===>  unspecified
+(eq? car car)                           ===>  #t
+(let ((n (+ 2 3)))
+  (eq? n n))              ===>  unspecified
+(let ((x '(a)))
+  (eq? x x))              ===>  #t
+(let ((x '#()))
+  (eq? x x))              ===>  #t
+(let ((p (lambda (x) x)))
+  (eq? p p))              ===>  #t

+ +

+ +

Rationale:   It will usually be possible to implement eq? much +more efficiently than eqv?, for example, as a simple pointer +comparison instead of as some more complicated operation. One reason is +that it may not be possible to compute eqv? of two numbers in +constant time, whereas eq? implemented as pointer comparison will +always finish in constant time. Eq? may be used like eqv? +in applications using procedures to implement objects with state since +it obeys the same constraints as eqv?. +

+ +

+ +

library procedure:  (equal? obj1 obj2) 
+

+ +Equal? recursively compares the contents of pairs, vectors, and +strings, applying eqv? on other objects such as numbers and symbols. +A rule of thumb is that objects are generally equal? if they print +the same. Equal? may fail to terminate if its arguments are +circular data structures.

+ +

(equal? 'a 'a)                          ===>  #t
+(equal? '(a) '(a))                      ===>  #t
+(equal? '(a (b) c)
+        '(a (b) c))                     ===>  #t
+(equal? "abc" "abc")                    ===>  #t
+(equal? 2 2)                            ===>  #t
+(equal? (make-vector 5 'a)
+        (make-vector 5 'a))             ===>  #t
+(equal? (lambda (x) x)
+        (lambda (y) y))          ===>  unspecified

+ +

+ + +

6.2  Numbers

+ + +

+ + + +

+ +Numerical computation has traditionally been neglected by the Lisp +community. Until Common Lisp there was no carefully thought out +strategy for organizing numerical computation, and with the exception of +the MacLisp system [20] little effort was made to +execute numerical code efficiently. This report recognizes the excellent work +of the Common Lisp committee and accepts many of their recommendations. +In some ways this report simplifies and generalizes their proposals in a manner +consistent with the purposes of Scheme.

+ +It is important to distinguish between the mathematical numbers, the +Scheme numbers that attempt to model them, the machine representations +used to implement the Scheme numbers, and notations used to write numbers. +This report uses the types number, complex, real, +rational, and integer to refer to both mathematical numbers +and Scheme numbers. Machine representations such as fixed point and +floating point are referred to by names such as fixnum and +flonum.

+ + + +

6.2.1  Numerical types

+ + +

+ + + +Mathematically, numbers may be arranged into a tower of subtypes +in which each level is a subset of the level above it: +

+ number
+    complex
+    real
+    rational
+    integer +

+ +For example, 3 is an integer. Therefore 3 is also a rational, +a real, and a complex. The same is true of the Scheme numbers +that model 3. For Scheme numbers, these types are defined by the +predicates number?, complex?, real?, rational?, +and integer?.

+ +There is no simple relationship between a number's type and its +representation inside a computer. Although most implementations of +Scheme will offer at least two different representations of 3, these +different representations denote the same integer.

+ + +Scheme's numerical operations treat numbers as abstract data, as +independent of their representation as possible. Although an implementation +of Scheme may use fixnum, flonum, and perhaps other representations for +numbers, this should not be apparent to a casual programmer writing +simple programs.

+ +It is necessary, however, to distinguish between numbers that are +represented exactly and those that may not be. For example, indexes +into data structures must be known exactly, as must some polynomial +coefficients in a symbolic algebra system. On the other hand, the +results of measurements are inherently inexact, and irrational numbers +may be approximated by rational and therefore inexact approximations. +In order to catch uses of inexact numbers where exact numbers are +required, Scheme explicitly distinguishes exact from inexact numbers. +This distinction is orthogonal to the dimension of type.

+ + +

6.2.2  Exactness

+ + + +Scheme numbers are either exact or inexact. A number is +exact if it was written as an exact constant or was derived from +exact numbers using only exact operations. A number is +inexact if it was written as an inexact constant, +if it was +derived using inexact ingredients, or if it was derived using +inexact operations. Thus inexactness is a contagious +property of a number. + +If two implementations produce exact results for a +computation that did not involve inexact intermediate results, +the two ultimate results will be mathematically equivalent. This is +generally not true of computations involving inexact numbers +since approximate methods such as floating point arithmetic may be used, +but it is the duty of each implementation to make the result as close as +practical to the mathematically ideal result.

+ +Rational operations such as + should always produce +exact results when given exact arguments. +If the operation is unable to produce an exact result, +then it may either report the violation of an implementation restriction +or it may silently coerce its +result to an inexact value. +See section 6.2.3.

+ +With the exception of inexact->exact, the operations described in +this section must generally return inexact results when given any inexact +arguments. An operation may, however, return an exact result if it can +prove that the value of the result is unaffected by the inexactness of its +arguments. For example, multiplication of any number by an exact zero +may produce an exact zero result, even if the other argument is +inexact.

+ + +

6.2.3  Implementation restrictions

+ +

+ +Implementations of Scheme are not required to implement the whole +tower of subtypes given in section 6.2.1, +but they must implement a coherent subset consistent with both the +purposes of the implementation and the spirit of the Scheme language. +For example, an implementation in which all numbers are real +may still be quite useful.

+ +Implementations may also support only a limited range of numbers of +any type, subject to the requirements of this section. The supported +range for exact numbers of any type may be different from the +supported range for inexact numbers of that type. For example, +an implementation that uses flonums to represent all its +inexact real numbers may +support a practically unbounded range of exact integers +and rationals +while limiting the range of inexact reals (and therefore +the range of inexact integers and rationals) +to the dynamic range of the flonum format. +Furthermore +the gaps between the representable inexact integers and +rationals are +likely to be very large in such an implementation as the limits of this +range are approached.

+ +An implementation of Scheme must support exact integers +throughout the range of numbers that may be used for indexes of +lists, vectors, and strings or that may result from computing the length of a +list, vector, or string. The length, vector-length, +and string-length procedures must return an exact +integer, and it is an error to use anything but an exact integer as an +index. Furthermore any integer constant within the index range, if +expressed by an exact integer syntax, will indeed be read as an exact +integer, regardless of any implementation restrictions that may apply +outside this range. Finally, the procedures listed below will always +return an exact integer result provided all their arguments are exact integers +and the mathematically expected result is representable as an exact integer +within the implementation:

+ +

+            -             *
+quotient     remainder     modulo
+max          min           abs
+numerator    denominator   gcd
+lcm          floor         ceiling
+truncate     round         rationalize
+expt

+ +Implementations are encouraged, but not required, to support +exact integers and exact rationals of +practically unlimited size and precision, and to implement the +above procedures and the / procedure in +such a way that they always return exact results when given exact +arguments. If one of these procedures is unable to deliver an exact +result when given exact arguments, then it may either report a +violation of an +implementation restriction or it may silently coerce its result to an +inexact number. Such a coercion may cause an error later.

+ + +An implementation may use floating point and other approximate +representation strategies for inexact numbers. +This report recommends, but does not require, that the IEEE 32-bit +and 64-bit floating point standards be followed by implementations that use +flonum representations, and that implementations using +other representations should match or exceed the precision achievable +using these floating point standards [12].

+ +In particular, implementations that use flonum representations +must follow these rules: A flonum result +must be represented with at least as much precision as is used to express any of +the inexact arguments to that operation. It is desirable (but not required) for +potentially inexact operations such as sqrt, when applied to exact +arguments, to produce exact answers whenever possible (for example the +square root of an exact 4 ought to be an exact 2). +If, however, an +exact number is operated upon so as to produce an inexact result +(as by sqrt), and if the result is represented as a flonum, then +the most precise flonum format available must be used; but if the result +is represented in some other way then the representation must have at least as +much precision as the most precise flonum format available.

+ +Although Scheme allows a variety of written +notations for +numbers, any particular implementation may support only some of them. +For example, an implementation in which all numbers are real +need not support the rectangular and polar notations for complex +numbers. If an implementation encounters an exact numerical constant that +it cannot represent as an exact number, then it may either report a +violation of an implementation restriction or it may silently represent the +constant by an inexact number.

+ + +

6.2.4  Syntax of numerical constants

+ +

+ + + +The syntax of the written representations for numbers is described formally in +section 7.1.1. Note that case is not significant in numerical +constants.

+ + +A number may be written in binary, octal, decimal, or +hexadecimal by the use of a radix prefix. The radix prefixes are #b (binary), #o (octal), #d (decimal), and #x (hexadecimal). With +no radix prefix, a number is assumed to be expressed in decimal.

+ +A +numerical constant may be specified to be either exact or +inexact by a prefix. The prefixes are #e +for exact, and #i for inexact. An exactness +prefix may appear before or after any radix prefix that is used. If +the written representation of a number has no exactness prefix, the +constant may be either inexact or exact. It is +inexact if it contains a decimal point, an +exponent, or a ``#'' character in the place of a digit, +otherwise it is exact. + +In systems with inexact numbers +of varying precisions it may be useful to specify +the precision of a constant. For this purpose, numerical constants +may be written with an exponent marker that indicates the +desired precision of the inexact +representation. The letters s, f, +d, and l specify the use of short, single, +double, and long precision, respectively. (When fewer +than four internal +inexact +representations exist, the four size +specifications are mapped onto those available. For example, an +implementation with two internal representations may map short and +single together and long and double together.) In addition, the +exponent marker e specifies the default precision for the +implementation. The default precision has at least as much precision +as double, but +implementations may wish to allow this default to be set by the user.

+ +

3.14159265358979F0
+        Round to single --- 3.141593
+0.6L0
+        Extend to long --- .600000000000000

+ + +

6.2.5  Numerical operations

+ +The reader is referred to section 1.3.3 for a summary +of the naming conventions used to specify restrictions on the types of +arguments to numerical routines. +The examples used in this section assume that any numerical constant written +using an exact notation is indeed represented as an exact +number. Some examples also assume that certain numerical constants written +using an inexact notation can be represented without loss of +accuracy; the inexact constants were chosen so that this is +likely to be true in implementations that use flonums to represent +inexact numbers.

+ +

+ +

procedure:  (number? obj) 
+ +
procedure:  (complex? obj) 
+ +
procedure:  (real? obj) 
+ +
procedure:  (rational? obj) 
+ +
procedure:  (integer? obj) 
+

+ +These numerical type predicates can be applied to any kind of +argument, including non-numbers. They return #t if the object is +of the named type, and otherwise they return #f. +In general, if a type predicate is true of a number then all higher +type predicates are also true of that number. Consequently, if a type +predicate is false of a number, then all lower type predicates are +also false of that number. + +If z is an inexact complex number, then (real? z) is true if +and only if (zero? (imag-part z)) is true. If x is an inexact +real number, then (integer? x) is true if and only if +(= x (round x)).

+ +

(complex? 3+4i)                 ===>  #t
+(complex? 3)                    ===>  #t
+(real? 3)                       ===>  #t
+(real? -2.5+0.0i)               ===>  #t
+(real? #e1e10)                  ===>  #t
+(rational? 6/10)                ===>  #t
+(rational? 6/3)                 ===>  #t
+(integer? 3+0i)                 ===>  #t
+(integer? 3.0)                  ===>  #t
+(integer? 8/4)                  ===>  #t

+ +

Note:   +The behavior of these type predicates on inexact numbers +is unreliable, since any inaccuracy may affect the result. +

+ +

Note:   +In many implementations the rational? procedure will be the same +as real?, and the complex? procedure will be the same as +number?, but unusual implementations may be able to represent +some irrational numbers exactly or may extend the number system to +support some kind of non-complex numbers. +

+ +

+ +

procedure:  (exact? z) 
+ +
procedure:  (inexact? z) 
+

+ +These numerical predicates provide tests for the exactness of a +quantity. For any Scheme number, precisely one of these predicates +is true.

+ +

+ +

procedure:  (= z1 z2 z3 ...) 
+ +
procedure:  (< x1 x2 x3 ...) 
+ +
procedure:  (> x1 x2 x3 ...) 
+ +
procedure:  (<= x1 x2 x3 ...) 
+ +
procedure:  (>= x1 x2 x3 ...) 
+

+ +These procedures return #t if their arguments are (respectively): +equal, monotonically increasing, monotonically decreasing, +monotonically nondecreasing, or monotonically nonincreasing.

+ +These predicates are required to be transitive.

+ +

Note:   +The traditional implementations of these predicates in Lisp-like +languages are not transitive. +

+ +

Note:   +While it is not an error to compare inexact numbers using these +predicates, the results may be unreliable because a small inaccuracy +may affect the result; this is especially true of = and zero?. +When in doubt, consult a numerical analyst. +

+ +

+ +

library procedure:  (zero? z) 
+ +
library procedure:  (positive? x) 
+ +
library procedure:  (negative? x) 
+ +
library procedure:  (odd? n) 
+ +
library procedure:  (even? n) 
+

+ +These numerical predicates test a number for a particular property, +returning #t or #f. See note above.

+ +

+ +

library procedure:  (max x1 x2 ...) 
+ +
library procedure:  (min x1 x2 ...) 
+

+ +These procedures return the maximum or minimum of their arguments.

+ +

(max 3 4)                      ===>  4    ; exact
+(max 3.9 4)                    ===>  4.0  ; inexact

+ +

Note:   +If any argument is inexact, then the result will also be inexact (unless +the procedure can prove that the inaccuracy is not large enough to affect the +result, which is possible only in unusual implementations). If min or +max is used to compare numbers of mixed exactness, and the numerical +value of the result cannot be represented as an inexact number without loss of +accuracy, then the procedure may report a violation of an implementation +restriction. +

+ +

+ +

procedure:  (+ z1 ...) 
+ +
procedure:  (* z1 ...) 
+

+ +These procedures return the sum or product of their arguments. + +

(+ 3 4)                         ===>  7
+(+ 3)                           ===>  3
+(+)                             ===>  0
+(* 4)                           ===>  4
+(*)                             ===>  1

+ +

+ +

procedure:  (- z1 z2) 
+ +
procedure:  (- z) 
+ +
optional procedure:  (- z1 z2 ...) 
+ +
procedure:  (/ z1 z2) 
+ +
procedure:  (/ z) 
+ +
optional procedure:  (/ z1 z2 ...) 
+

+ +With two or more arguments, these procedures return the difference or +quotient of their arguments, associating to the left. With one argument, +however, they return the additive or multiplicative inverse of their argument. + +

(- 3 4)                         ===>  -1
+(- 3 4 5)                       ===>  -6
+(- 3)                           ===>  -3
+(/ 3 4 5)                       ===>  3/20
+(/ 3)                           ===>  1/3

+ +

+ +

library procedure:  (abs x) 
+

+ +Abs returns the absolute value of its argument. +

(abs -7)                        ===>  7
+

+

+ +

procedure:  (quotient n1 n2) 
+ +
procedure:  (remainder n1 n2) 
+ +
procedure:  (modulo n1 n2) 
+

+ +These procedures implement number-theoretic (integer) +division. n2 should be non-zero. All three procedures +return integers. If n1/n2 is an integer: +

    (quotient n1 n2)           ===> n1/n2
+    (remainder n1 n2)          ===> 0
+    (modulo n1 n2)             ===> 0
+

+If n1/n2 is not an integer: +

    (quotient n1 n2)           ===> nq
+    (remainder n1 n2)          ===> nr
+    (modulo n1 n2)             ===> nm
+

+where nq is n1/n2 rounded towards zero, +0 < |nr| < |n2|, 0 < |nm| < |n2|, +nr and nm differ from n1 by a multiple of n2, +nr has the same sign as n1, and +nm has the same sign as n2.

+ +From this we can conclude that for integers n1 and n2 with +n2 not equal to 0, +

     (= n1 (+ (* n2 (quotient n1 n2))
+           (remainder n1 n2)))
+                                         ===>  #t

+provided all numbers involved in that computation are exact.

+ +

(modulo 13 4)                   ===>  1
+(remainder 13 4)                ===>  1
+
+(modulo -13 4)                  ===>  3
+(remainder -13 4)               ===>  -1
+
+(modulo 13 -4)                  ===>  -3
+(remainder 13 -4)               ===>  1
+
+(modulo -13 -4)                 ===>  -1
+(remainder -13 -4)              ===>  -1
+
+(remainder -13 -4.0)            ===>  -1.0  ; inexact

+

+ +

library procedure:  (gcd n1 ...) 
+ +
library procedure:  (lcm n1 ...) 
+

+ +These procedures return the greatest common divisor or least common +multiple of their arguments. The result is always non-negative. + +

(gcd 32 -36)                    ===>  4
+(gcd)                           ===>  0
+(lcm 32 -36)                    ===>  288
+(lcm 32.0 -36)                  ===>  288.0  ; inexact
+(lcm)                           ===>  1

+ +

+ +

procedure:  (numerator q) 
+ +
procedure:  (denominator q) 
+

+ +These procedures return the numerator or denominator of their +argument; the result is computed as if the argument was represented as +a fraction in lowest terms. The denominator is always positive. The +denominator of 0 is defined to be 1. + +

(numerator (/ 6 4))          ===>  3
+(denominator (/ 6 4))          ===>  2
+(denominator
+  (exact->inexact (/ 6 4)))         ===> 2.0

+ +

+ +

procedure:  (floor x) 
+ +
procedure:  (ceiling x) 
+ +
procedure:  (truncate x) 
+ +
procedure:  (round x) 
+

+ +These procedures return integers. +Floor returns the largest integer not larger than x. +Ceiling returns the smallest integer not smaller than x. +Truncate returns the integer closest to x whose absolute +value is not larger than the absolute value of x. Round returns the +closest integer to x, rounding to even when x is halfway between two +integers.

+ +

Rationale:   +Round rounds to even for consistency with the default rounding +mode specified by the IEEE floating point standard. +

+ +

Note:   +If the argument to one of these procedures is inexact, then the result +will also be inexact. If an exact value is needed, the +result should be passed to the inexact->exact procedure. +

+ +

(floor -4.3)                  ===>  -5.0
+(ceiling -4.3)                ===>  -4.0
+(truncate -4.3)               ===>  -4.0
+(round -4.3)                  ===>  -4.0
+
+(floor 3.5)                   ===>  3.0
+(ceiling 3.5)                 ===>  4.0
+(truncate 3.5)                ===>  3.0
+(round 3.5)                   ===>  4.0  ; inexact
+
+(round 7/2)                   ===>  4    ; exact
+(round 7)                     ===>  7

+ +

+ +

library procedure:  (rationalize x y) 
+ +

+ +Rationalize returns the simplest rational number +differing from x by no more than y. A rational number r1 is +simpler than another rational number +r2 if r1 = p1/q1 and r2 = p2/q2 (in lowest terms) and |p1| +< |p2| and |q1| < |q2|. Thus 3/5 is simpler than 4/7. +Although not all rationals are comparable in this ordering (consider 2/7 +and 3/5) any interval contains a rational number that is simpler than +every other rational number in that interval (the simpler 2/5 lies +between 2/7 and 3/5). Note that 0 = 0/1 is the simplest rational of +all.

+ +

(rationalize
+  (inexact->exact .3) 1/10)          ===> 1/3    ; exact
+(rationalize .3 1/10)                ===> #i1/3  ; inexact

+ +

+ +

procedure:  (exp z) 
+ +
procedure:  (log z) 
+ +
procedure:  (sin z) 
+ +
procedure:  (cos z) 
+ +
procedure:  (tan z) 
+ +
procedure:  (asin z) 
+ +
procedure:  (acos z) 
+ +
procedure:  (atan z) 
+ +
procedure:  (atan y x) 
+

+ +These procedures are part of every implementation that supports +general +real numbers; they compute the usual transcendental functions. Log +computes the natural logarithm of z (not the base ten logarithm). +Asin, acos, and atan compute arcsine (sin-1), +arccosine (cos-1), and arctangent (tan-1), respectively. +The two-argument variant of atan computes (angle +(make-rectangular x y)) (see below), even in implementations +that don't support general complex numbers.

+ +In general, the mathematical functions log, arcsine, arccosine, and +arctangent are multiply defined. +The value of log z is defined to be the one whose imaginary +part lies in the range from - (exclusive) to (inclusive). +log 0 is undefined. +With log defined this way, the values of sin-1 z, cos-1 z, +and tan-1 z are according to the following formulæ: +

sin-1 z = - i log (i z + (1 - z2)1/2)

+

cos-1 z = / 2 - sin-1 z

+

tan-1 z = (log (1 + i z) - log (1 - i z)) / (2 i)

+ +The above specification follows [27], which in turn +cites [19]; refer to these sources for more detailed +discussion of branch cuts, boundary conditions, and implementation of +these functions. When it is possible these procedures produce a real +result from a real argument.

+ +

+ +

+ +

procedure:  (sqrt z) 
+

+ +Returns the principal square root of z. The result will have +either positive real part, or zero real part and non-negative imaginary +part. +

+ +

procedure:  (expt z1 z2) 
+

+ +Returns z1 raised to the power z2. For z1 0 +

z1z2 = ez2 log z1

+0z is 1 if z = 0 and 0 otherwise. +

+ +

+ +

procedure:  (make-rectangular x1 x2) 
+ +
procedure:  (make-polar x3 x4) 
+ +
procedure:  (real-part z) 
+ +
procedure:  (imag-part z) 
+ +
procedure:  (magnitude z) 
+ +
procedure:  (angle z) 
+

+ +These procedures are part of every implementation that supports +general +complex numbers. Suppose x1, x2, x3, and x4 are +real numbers and z is a complex number such that +

z = x1 + x2i + = x3 · ei x4

+Then +

(make-rectangular x1 x2)         ===> z
+(make-polar x3 x4)             ===> z
+(real-part z)                          ===> x1
+(imag-part z)                          ===> x2
+(magnitude z)                          ===> |x3|
+(angle z)                              ===> xangle
+

+where - < xangle < with xangle = x4 + 2 n +for some integer n.

+ +

Rationale:   +Magnitude is the same as abs for a real argument, +but abs must be present in all implementations, whereas +magnitude need only be present in implementations that support +general complex numbers. +

+ +

+ +

procedure:  (exact->inexact z) 
+ +
procedure:  (inexact->exact z) 
+

+ +Exact->inexact returns an inexact representation of z. +The value returned is the +inexact number that is numerically closest to the argument. +If an exact argument has no reasonably close inexact equivalent, +then a violation of an implementation restriction may be reported.

+ +Inexact->exact returns an exact representation of +z. The value returned is the exact number that is numerically +closest to the argument. +If an inexact argument has no reasonably close exact equivalent, +then a violation of an implementation restriction may be reported.

+ + +These procedures implement the natural one-to-one correspondence between +exact and inexact integers throughout an +implementation-dependent range. See section 6.2.3.

+ +

+ +

+ + +

6.2.6  Numerical input and output

+ +

procedure:  (number->string z) 
+ +
procedure:  (number->string z radix) 
+

+ +Radix must be an exact integer, either 2, 8, 10, or 16. If omitted, +radix defaults to 10. +The procedure number->string takes a +number and a radix and returns as a string an external representation of +the given number in the given radix such that +

(let ((number number)
+      (radix radix))
+  (eqv? number
+        (string->number (number->string number
+                                        radix)
+                        radix)))
+

+is true. It is an error if no possible result makes this expression true.

+ +If z is inexact, the radix is 10, and the above expression +can be satisfied by a result that contains a decimal point, +then the result contains a decimal point and is expressed using the +minimum number of digits (exclusive of exponent and trailing +zeroes) needed to make the above expression +true [35]; +otherwise the format of the result is unspecified.

+ +The result returned by number->string +never contains an explicit radix prefix.

+ +

Note:   +The error case can occur only when z is not a complex number +or is a complex number with a non-rational real or imaginary part. +

+ +

Rationale:   +If z is an inexact number represented using flonums, and +the radix is 10, then the above expression is normally satisfied by +a result containing a decimal point. The unspecified case +allows for infinities, NaNs, and non-flonum representations. +

+ +

+ +

procedure:  (string->number string) 
+ +
procedure:  (string->number string radix) 
+

+ + +Returns a number of the maximally precise representation expressed by the +given string. Radix must be an exact integer, either 2, 8, 10, +or 16. If supplied, radix is a default radix that may be overridden +by an explicit radix prefix in string (e.g. "#o177"). If radix +is not supplied, then the default radix is 10. If string is not +a syntactically valid notation for a number, then string->number +returns #f.

+ +

(string->number "100")                ===>  100
+(string->number "100" 16)             ===>  256
+(string->number "1e2")                ===>  100.0
+(string->number "15##")               ===>  1500.0

+ +

Note:   +The domain of string->number may be restricted by implementations +in the following ways. String->number is permitted to return +#f whenever string contains an explicit radix prefix. +If all numbers supported by an implementation are real, then +string->number is permitted to return #f whenever +string uses the polar or rectangular notations for complex +numbers. If all numbers are integers, then +string->number may return #f whenever +the fractional notation is used. If all numbers are exact, then +string->number may return #f whenever +an exponent marker or explicit exactness prefix is used, or if +a # appears in place of a digit. If all inexact +numbers are integers, then +string->number may return #f whenever +a decimal point is used. +

+ +

+ + +

6.3  Other data types

+ +This section describes operations on some of Scheme's non-numeric data types: +booleans, pairs, lists, symbols, characters, strings and vectors.

+ + +

6.3.1  Booleans

+ +

+ +The standard boolean objects for true and false are written as +#t and #f. What really +matters, though, are the objects that the Scheme conditional expressions +(if, cond, and, or, do) treat as +true or false. The phrase ``a true value'' +(or sometimes just ``true'') means any object treated as true by the +conditional expressions, and the phrase ``a false value'' (or +``false'') means any object treated as false by the conditional expressions.

+ +Of all the standard Scheme values, only #f +counts as false in conditional expressions. +Except for #f, +all standard Scheme values, including #t, +pairs, the empty list, symbols, numbers, strings, vectors, and procedures, +count as true.

+ + + +

Note:   +Programmers accustomed to other dialects of Lisp should be aware that +Scheme distinguishes both #f and the empty list +from the symbol nil. +

+ +Boolean constants evaluate to themselves, so they do not need to be quoted +in programs.

+ +

#t                 ===>  #t
+#f                ===>  #f
+'#f               ===>  #f

+ +

library procedure:  (not obj) 
+

+ +Not returns #t if obj is false, and returns +#f otherwise.

+ +

(not #t)           ===>  #f
+(not 3)                  ===>  #f
+(not (list 3))           ===>  #f
+(not #f)          ===>  #t
+(not '())                ===>  #f
+(not (list))             ===>  #f
+(not 'nil)               ===>  #f

+ +

+ +

library procedure:  (boolean? obj) 
+

+ +Boolean? returns #t if obj is either #t or +#f and returns #f otherwise.

+ +

(boolean? #f)          ===>  #t
+(boolean? 0)                  ===>  #f
+(boolean? '())                ===>  #f

+ +

+ + +

6.3.2  Pairs and lists

+ +

+ +A pair (sometimes called a dotted pair) is a +record structure with two fields called the car and cdr fields (for +historical reasons). Pairs are created by the procedure cons. +The car and cdr fields are accessed by the procedures car and +cdr. The car and cdr fields are assigned by the procedures +set-car! and set-cdr!.

+ +Pairs are used primarily to represent lists. A list can +be defined recursively as either the empty list or a pair whose +cdr is a list. More precisely, the set of lists is defined as the smallest +set X such that

+ +

+ +The objects in the car fields of successive pairs of a list are the +elements of the list. For example, a two-element list is a pair whose car +is the first element and whose cdr is a pair whose car is the second element +and whose cdr is the empty list. The length of a list is the number of +elements, which is the same as the number of pairs.

+ +The empty list is a special object of its own type +(it is not a pair); it has no elements and its length is zero.

+ +

Note:   +The above definitions imply that all lists have finite length and are +terminated by the empty list. +

+ +The most general notation (external representation) for Scheme pairs is +the ``dotted'' notation (c1 . c2) where +c1 is the value of the car field and c2 is the value of the +cdr field. For example (4 . 5) is a pair whose car is 4 and whose +cdr is 5. Note that (4 . 5) is the external representation of a +pair, not an expression that evaluates to a pair.

+ +A more streamlined notation can be used for lists: the elements of the +list are simply enclosed in parentheses and separated by spaces. The +empty list is written () . For example,

+ +

(a b c d e)

+ +and

+ +

(a . (b . (c . (d . (e . ())))))

+ +are equivalent notations for a list of symbols.

+ +A chain of pairs not ending in the empty list is called an +improper list. Note that an improper list is not a list. +The list and dotted notations can be combined to represent +improper lists:

+ +

(a b c . d)

+ +is equivalent to

+ +

(a . (b . (c . d)))

+ +Whether a given pair is a list depends upon what is stored in the cdr +field. When the set-cdr! procedure is used, an object can be a +list one moment and not the next:

+ +

(define x (list 'a 'b 'c))
+(define y x)
+y                               ===>  (a b c)
+(list? y)                       ===>  #t
+(set-cdr! x 4)                  ===>  unspecified
+x                               ===>  (a . 4)
+(eqv? x y)                      ===>  #t
+y                               ===>  (a . 4)
+(list? y)                       ===>  #f
+(set-cdr! x x)                  ===>  unspecified
+(list? x)                       ===>  #f

+ + +Within literal expressions and representations of objects read by the +read procedure, the forms '<datum>, +`<datum>, ,<datum>, and +,@<datum> denote two-element lists whose first elements are +the symbols quote, quasiquote, unquote, and +unquote-splicing, respectively. The second element in each case +is <datum>. This convention is supported so that arbitrary Scheme +programs may be represented as lists. That is, according to Scheme's grammar, every +<expression> is also a <datum> (see section 7.1.2). +Among other things, this permits the use of the read procedure to +parse Scheme programs. See section 3.3.

+ +

procedure:  (pair? obj) 
+

+ +Pair? returns #t if obj is a pair, and otherwise +returns #f.

+ +

(pair? '(a . b))                ===>  #t
+(pair? '(a b c))                ===>  #t
+(pair? '())                     ===>  #f
+(pair? '#(a b))                 ===>  #f

+

+ +

procedure:  (cons obj1 obj2) 
+

+ +Returns a newly allocated pair whose car is obj1 and whose cdr is +obj2. The pair is guaranteed to be different (in the sense of +eqv?) from every existing object.

+ +

(cons 'a '())                   ===>  (a)
+(cons '(a) '(b c d))            ===>  ((a) b c d)
+(cons "a" '(b c))               ===>  ("a" b c)
+(cons 'a 3)                     ===>  (a . 3)
+(cons '(a b) 'c)                ===>  ((a b) . c)

+

+ +

procedure:  (car pair) 
+

+ + +Returns the contents of the car field of pair. Note that it is an +error to take the car of the empty list.

+ +

(car '(a b c))                  ===>  a
+(car '((a) b c d))              ===>  (a)
+(car '(1 . 2))                  ===>  1
+(car '())                       ===>  error

+ +

+ +

procedure:  (cdr pair) 
+

+ + +Returns the contents of the cdr field of pair. +Note that it is an error to take the cdr of the empty list.

+ +

(cdr '((a) b c d))              ===>  (b c d)
+(cdr '(1 . 2))                  ===>  2
+(cdr '())                       ===>  error

+ +

+ +

procedure:  (set-car! pair obj) 
+

+ + +Stores obj in the car field of pair. +The value returned by set-car! is unspecified. +

(define (f) (list 'not-a-constant-list))
+(define (g) '(constant-list))
+(set-car! (f) 3)                     ===>  unspecified
+(set-car! (g) 3)                     ===>  error

+ +

+ +

procedure:  (set-cdr! pair obj) 
+

+ + +Stores obj in the cdr field of pair. +The value returned by set-cdr! is unspecified. +

+ +

+ +

library procedure:  (caar pair) 
+ +
library procedure:  (cadr pair) 
+ +
                                                :                                                    
+ +
library procedure:  (cdddar pair) 
+ +
library procedure:  (cddddr pair) 
+

+ +These procedures are compositions of car and cdr, where +for example caddr could be defined by

+ +

(define caddr (lambda (x) (car (cdr (cdr x))))).

+ +Arbitrary compositions, up to four deep, are provided. There are +twenty-eight of these procedures in all.

+ +

+ +

library procedure:  (null? obj) 
+

+ +Returns #t if obj is the empty list, +otherwise returns #f.

+ + +

+ +

library procedure:  (list? obj) 
+

+ +Returns #t if obj is a list, otherwise returns #f. +By definition, all lists have finite length and are terminated by +the empty list.

+ +

        (list? '(a b c))             ===>  #t
+        (list? '())                  ===>  #t
+        (list? '(a . b))             ===>  #f
+        (let ((x (list 'a)))
+          (set-cdr! x x)
+          (list? x))                 ===>  #f

+

+ +

library procedure:  (list obj ...) 
+

+ +Returns a newly allocated list of its arguments.

+ +

(list 'a (+ 3 4) 'c)                    ===>  (a 7 c)
+(list)                                  ===>  ()

+

+ +

library procedure:  (length list) 
+

+ + +Returns the length of list.

+ +

(length '(a b c))                       ===>  3
+(length '(a (b) (c d e)))               ===>  3
+(length '())                            ===>  0

+

+ +

library procedure:  (append list ...) 
+

+ + +Returns a list consisting of the elements of the first list +followed by the elements of the other lists.

+ +

(append '(x) '(y))                      ===>  (x y)
+(append '(a) '(b c d))                  ===>  (a b c d)
+(append '(a (b)) '((c)))                ===>  (a (b) (c))

+ +The resulting list is always newly allocated, except that it shares +structure with the last list argument. The last argument may +actually be any object; an improper list results if the last argument is not a +proper list.

+ +

(append '(a b) '(c . d))                ===>  (a b c . d)
+(append '() 'a)                         ===>  a

+

+ +

library procedure:  (reverse list) 
+

+ + +Returns a newly allocated list consisting of the elements of list +in reverse order.

+ +

(reverse '(a b c))                      ===>  (c b a)
+(reverse '(a (b c) d (e (f))))  
                ===>  ((e (f)) d (b c) a)

+

+ +

library procedure:  (list-tail list k) 
+

+ +Returns the sublist of list obtained by omitting the first k +elements. It is an error if list has fewer than k elements. +List-tail could be defined by

+ +

(define list-tail
+  (lambda (x k)
+    (if (zero? k)
+        x
+        (list-tail (cdr x) (- k 1)))))

+

+ +

library procedure:  (list-ref list k) 
+

+ +Returns the kth element of list. (This is the same +as the car of (list-tail list k).) +It is an error if list has fewer than k elements.

+ +

(list-ref '(a b c d) 2)                         ===>  c
+(list-ref '(a b c d)
+          (inexact->exact (round 1.8))) 
                ===>  c

+

+ +

+ +

library procedure:  (memq obj list) 
+ +
library procedure:  (memv obj list) 
+ +
library procedure:  (member obj list) 
+

+ +These procedures return the first sublist of list whose car is +obj, where the sublists of list are the non-empty lists +returned by (list-tail list k) for k less +than the length of list. If +obj does not occur in list, then #f (not the empty list) is +returned. Memq uses eq? to compare obj with the elements of +list, while memv uses eqv? and member uses equal?.

+ +

(memq 'a '(a b c))                      ===>  (a b c)
+(memq 'b '(a b c))                      ===>  (b c)
+(memq 'a '(b c d))                      ===>  #f
+(memq (list 'a) '(b (a) c))             ===>  #f
+(member (list 'a)
+        '(b (a) c))                     ===>  ((a) c)
+(memq 101 '(100 101 102))               ===>  unspecified
+(memv 101 '(100 101 102))               ===>  (101 102)

+ +

+ +

library procedure:  (assq obj alist) 
+ +
library procedure:  (assv obj alist) 
+ +
library procedure:  (assoc obj alist) 
+

+ +Alist (for ``association list'') must be a list of +pairs. These procedures find the first pair in alist whose car field is obj, +and returns that pair. If no pair in alist has obj as its +car, then #f (not the empty list) is returned. Assq uses +eq? to compare obj with the car fields of the pairs in alist, +while assv uses eqv? and assoc uses equal?.

+ +

(define e '((a 1) (b 2) (c 3)))
+(assq 'a e)             ===>  (a 1)
+(assq 'b e)             ===>  (b 2)
+(assq 'd e)             ===>  #f
+(assq (list 'a) '(((a)) ((b)) ((c))))
+                        ===>  #f
+(assoc (list 'a) '(((a)) ((b)) ((c))))   
+                                   ===>  ((a))
+(assq 5 '((2 3) (5 7) (11 13)))    
+                                   ===>  unspecified
+(assv 5 '((2 3) (5 7) (11 13)))    
+                                   ===>  (5 7)

+ +

Rationale:   +Although they are ordinarily used as predicates, +memq, memv, member, assq, assv, and assoc do not +have question marks in their names because they return useful values rather +than just #t or #f. +
+

+ + +

6.3.3  Symbols

+ +

+ +Symbols are objects whose usefulness rests on the fact that two +symbols are identical (in the sense of eqv?) if and only if their +names are spelled the same way. This is exactly the property needed to +represent identifiers in programs, and so most +implementations of Scheme use them internally for that purpose. Symbols +are useful for many other applications; for instance, they may be used +the way enumerated values are used in Pascal.

+ +The rules for writing a symbol are exactly the same as the rules for +writing an identifier; see sections 2.1 +and 7.1.1.

+ +It is guaranteed that any symbol that has been returned as part of +a literal expression, or read using the read procedure, and +subsequently written out using the write procedure, will read back +in as the identical symbol (in the sense of eqv?). The +string->symbol procedure, however, can create symbols for +which this write/read invariance may not hold because their names +contain special characters or letters in the non-standard case.

+ +

Note:   +Some implementations of Scheme have a feature known as ``slashification'' +in order to guarantee write/read invariance for all symbols, but +historically the most important use of this feature has been to +compensate for the lack of a string data type.

+ +Some implementations also have ``uninterned symbols'', which +defeat write/read invariance even in implementations with slashification, +and also generate exceptions to the rule that two symbols are the same +if and only if their names are spelled the same. +

+ +

procedure:  (symbol? obj) 
+

+ +Returns #t if obj is a symbol, otherwise returns #f.

+ +

(symbol? 'foo)                  ===>  #t
+(symbol? (car '(a b)))          ===>  #t
+(symbol? "bar")                 ===>  #f
+(symbol? 'nil)                  ===>  #t
+(symbol? '())                   ===>  #f
+(symbol? #f)             ===>  #f

+

+ +

procedure:  (symbol->string symbol) 
+

+ +Returns the name of symbol as a string. If the symbol was part of +an object returned as the value of a literal expression +(section 4.1.2) or by a call to the read procedure, +and its name contains alphabetic characters, then the string returned +will contain characters in the implementation's preferred standard +case -- some implementations will prefer upper case, others lower case. +If the symbol was returned by string->symbol, the case of +characters in the string returned will be the same as the case in the +string that was passed to string->symbol. It is an error +to apply mutation procedures like string-set! to strings returned +by this procedure.

+ +The following examples assume that the implementation's standard case is +lower case:

+ +

(symbol->string 'flying-fish)     
+                                          ===>  "flying-fish"
+(symbol->string 'Martin)                  ===>  "martin"
+(symbol->string
+   (string->symbol "Malvina"))     
+                                          ===>  "Malvina"

+

+ +

procedure:  (string->symbol string) 
+

+ +Returns the symbol whose name is string. This procedure can +create symbols with names containing special characters or letters in +the non-standard case, but it is usually a bad idea to create such +symbols because in some implementations of Scheme they cannot be read as +themselves. See symbol->string.

+ +The following examples assume that the implementation's standard case is +lower case:

+ +

(eq? 'mISSISSIppi 'mississippi)  
                ===>  #t
+(string->symbol "mISSISSIppi")  
                ===>  the symbol with name "mISSISSIppi"
+(eq? 'bitBlt (string->symbol "bitBlt"))     
                ===>  #f
+(eq? 'JollyWog
+     (string->symbol
+       (symbol->string 'JollyWog)))  
                ===>  #t
+(string=? "K. Harper, M.D."
+          (symbol->string
+            (string->symbol "K. Harper, M.D.")))  
                ===>  #t

+ +

+ + +

6.3.4  Characters

+ +

+ +Characters are objects that represent printed characters such as +letters and digits. +Characters are written using the notation #\<character> +or #\<character name>. +For example:

+ +

+ + + + + + + + +
#\a; lower case letter
#\A; upper case letter
#\(; left parenthesis
#\ ; the space character
#\space; the preferred way to write a space
#\newline; the newline character
+

+ +Case is significant in #\<character>, but not in +#\<character name>. If <character> in +#\<character> is alphabetic, then the character +following <character> must be a delimiter character such as a +space or parenthesis. This rule resolves the ambiguous case where, for +example, the sequence of characters ``#\space'' +could be taken to be either a representation of the space character or a +representation of the character ``#\s'' followed +by a representation of the symbol ``pace.''

+ + +Characters written in the #\ notation are self-evaluating. +That is, they do not have to be quoted in programs. + +Some of the procedures that operate on characters ignore the +difference between upper case and lower case. The procedures that +ignore case have ``-ci'' (for ``case +insensitive'') embedded in their names.

+ +

procedure:  (char? obj) 
+

+ +Returns #t if obj is a character, otherwise returns #f.

+ +

+ +

procedure:  (char=? char1 char2) 
+ +
procedure:  (char<? char1 char2) 
+ +
procedure:  (char>? char1 char2) 
+ +
procedure:  (char<=? char1 char2) 
+ +
procedure:  (char>=? char1 char2) 
+

+ + + +These procedures impose a total ordering on the set of characters. It +is guaranteed that under this ordering:

+ +

+ +Some implementations may generalize these procedures to take more than +two arguments, as with the corresponding numerical predicates.

+ +

+ +

library procedure:  (char-ci=? char1 char2) 
+ +
library procedure:  (char-ci<? char1 char2) 
+ +
library procedure:  (char-ci>? char1 char2) 
+ +
library procedure:  (char-ci<=? char1 char2) 
+ +
library procedure:  (char-ci>=? char1 char2) 
+

+ + +These procedures are similar to char=? et cetera, but they treat +upper case and lower case letters as the same. For example, (char-ci=? #\A #\a) returns #t. Some +implementations may generalize these procedures to take more than two +arguments, as with the corresponding numerical predicates.

+ +

+ +

library procedure:  (char-alphabetic? char) 
+ +
library procedure:  (char-numeric? char) 
+ +
library procedure:  (char-whitespace? char) 
+ +
library procedure:  (char-upper-case? letter) 
+ +
library procedure:  (char-lower-case? letter) 
+

+ +These procedures return #t if their arguments are alphabetic, +numeric, whitespace, upper case, or lower case characters, respectively, +otherwise they return #f. The following remarks, which are specific to +the ASCII character set, are intended only as a guide: The alphabetic characters +are the 52 upper and lower case letters. The numeric characters are the +ten decimal digits. The whitespace characters are space, tab, line +feed, form feed, and carriage return. +

+ +

+ +

procedure:  (char->integer char) 
+ +
procedure:  (integer->char n) 
+

+ +Given a character, char->integer returns an exact integer +representation of the character. Given an exact integer that is the image of +a character under char->integer, integer->char +returns that character. These procedures implement order-preserving isomorphisms +between the set of characters under the char<=? ordering and some +subset of the integers under the <= ordering. That is, if

+ +

(char<=? a b) ===> #t  and  (<= x y) ===> #t

+ +and x and y are in the domain of +integer->char, then

+ +

(<= (char->integer a)
+    (char->integer b))                 ===>  #t
+
+(char<=? (integer->char x)
+         (integer->char y))             ===>  #t

+ +

+ +

library procedure:  (char-upcase char) 
+ +
library procedure:  (char-downcase char) 
+

+ + +These procedures return a character char2 such that (char-ci=? char char2). In addition, if char is +alphabetic, then the result of char-upcase is upper case and the +result of char-downcase is lower case.

+ +

+ + +

6.3.5  Strings

+ +

+ +Strings are sequences of characters. +Strings are written as sequences of characters enclosed within doublequotes +("). A doublequote can be written inside a string only by escaping +it with a backslash (\), as in

+ +

"The word \"recursion\" has many meanings."

+ +A backslash can be written inside a string only by escaping it with another +backslash. Scheme does not specify the effect of a backslash within a +string that is not followed by a doublequote or backslash.

+ +A string constant may continue from one line to the next, but +the exact contents of such a string are unspecified. + +The length of a string is the number of characters that it +contains. This number is an exact, non-negative integer that is fixed when the +string is created. The valid indexes of a string are the +exact non-negative integers less than the length of the string. The first +character of a string has index 0, the second has index 1, and so on.

+ +In phrases such as ``the characters of string beginning with +index start and ending with index end,'' it is understood +that the index start is inclusive and the index end is +exclusive. Thus if start and end are the same index, a null +substring is referred to, and if start is zero and end is +the length of string, then the entire string is referred to.

+ +Some of the procedures that operate on strings ignore the +difference between upper and lower case. The versions that ignore case +have ``-ci'' (for ``case insensitive'') embedded in their +names.

+ +

procedure:  (string? obj) 
+

+ +Returns #t if obj is a string, otherwise returns #f. +

+ +

procedure:  (make-string k) 
+ +
procedure:  (make-string k char) 
+

+ +Make-string returns a newly allocated string of +length k. If char is given, then all elements of the string +are initialized to char, otherwise the contents of the +string are unspecified.

+ +

+ +

library procedure:  (string char ...) 
+

+ +Returns a newly allocated string composed of the arguments.

+ +

+ +

procedure:  (string-length string) 
+

+ +Returns the number of characters in the given string. +

+ +

procedure:  (string-ref string k) 
+

+ +k must be a valid index of string. +String-ref returns character k of string using zero-origin indexing. +

+ +

procedure:  (string-set! string k char) 
+

+ +k must be a valid index of string. +String-set! stores char in element k of string +and returns an unspecified value. +

(define (f) (make-string 3 #\*))
+(define (g) "***")
+(string-set! (f) 0 #\?)          ===>  unspecified
+(string-set! (g) 0 #\?)          ===>  error
+(string-set! (symbol->string 'immutable)
+             0
+             #\?)          ===>  error

+ +

+ +

library procedure:  (string=? string1 string2) 
+ +
library procedure:  (string-ci=? string1 string2) 
+

+ +Returns #t if the two strings are the same length and contain the same +characters in the same positions, otherwise returns #f. +String-ci=? treats +upper and lower case letters as though they were the same character, but +string=? treats upper and lower case as distinct characters.

+ +

+ +

library procedure:  (string<? string1 string2) 
+ +
library procedure:  (string>? string1 string2) 
+ +
library procedure:  (string<=? string1 string2) 
+ +
library procedure:  (string>=? string1 string2) 
+ +
library procedure:  (string-ci<? string1 string2) 
+ +
library procedure:  (string-ci>? string1 string2) 
+ +
library procedure:  (string-ci<=? string1 string2) 
+ +
library procedure:  (string-ci>=? string1 string2) 
+

+ +These procedures are the lexicographic extensions to strings of the +corresponding orderings on characters. For example, string<? is +the lexicographic ordering on strings induced by the ordering +char<? on characters. If two strings differ in length but +are the same up to the length of the shorter string, the shorter string +is considered to be lexicographically less than the longer string.

+ +Implementations may generalize these and the string=? and +string-ci=? procedures to take more than two arguments, as with +the corresponding numerical predicates.

+ +

+ +

library procedure:  (substring string start end) 
+

+ +String must be a string, and start and end +must be exact integers satisfying +

0 < start < end < (string-length string).

+Substring returns a newly allocated string formed from the characters of +string beginning with index start (inclusive) and ending with index +end (exclusive). +

+ +

library procedure:  (string-append string ...) 
+

+ +Returns a newly allocated string whose characters form the concatenation of the +given strings.

+ +

+ +

library procedure:  (string->list string) 
+ +
library procedure:  (list->string list) 
+

+ +String->list returns a newly allocated list of the +characters that make up the given string. List->string +returns a newly allocated string formed from the characters in the list +list, which must be a list of characters. String->list +and list->string are +inverses so far as equal? is concerned. + +

+ +

library procedure:  (string-copy string) 
+

+ +Returns a newly allocated copy of the given string.

+ +

+ +

library procedure:  (string-fill! string char) 
+

+ +Stores char in every element of the given string and returns an +unspecified value. +

+ + +

6.3.6  Vectors

+ +

+ +Vectors are heterogenous structures whose elements are indexed +by integers. A vector typically occupies less space than a list +of the same length, and the average time required to access a randomly +chosen element is typically less for the vector than for the list.

+ +The length of a vector is the number of elements that it +contains. This number is a non-negative integer that is fixed when the +vector is created. The valid indexes of a +vector are the exact non-negative integers less than the length of the +vector. The first element in a vector is indexed by zero, and the last +element is indexed by one less than the length of the vector.

+ +Vectors are written using the notation #(obj ...). +For example, a vector of length 3 containing the number zero in element +0, the list (2 2 2 2) in element 1, and the string "Anna" in +element 2 can be written as following:

+ +

#(0 (2 2 2 2) "Anna")

+ +Note that this is the external representation of a vector, not an +expression evaluating to a vector. Like list constants, vector +constants must be quoted:

+ +

'#(0 (2 2 2 2) "Anna")  
                ===>  #(0 (2 2 2 2) "Anna")

+ +

+ +

procedure:  (vector? obj) 
+

+ +Returns #t if obj is a vector, otherwise returns #f. +

+ +

procedure:  (make-vector k) 
+ +
procedure:  (make-vector k fill) 
+

+ +Returns a newly allocated vector of k elements. If a second +argument is given, then each element is initialized to fill. +Otherwise the initial contents of each element is unspecified.

+ +

+ +

library procedure:  (vector obj ...) 
+

+ +Returns a newly allocated vector whose elements contain the given +arguments. Analogous to list.

+ +

(vector 'a 'b 'c)                       ===>  #(a b c)

+

+ +

procedure:  (vector-length vector) 
+

+ +Returns the number of elements in vector as an exact integer. +

+ +

procedure:  (vector-ref vector k) 
+

+ +k must be a valid index of vector. +Vector-ref returns the contents of element k of +vector.

+ +

(vector-ref '#(1 1 2 3 5 8 13 21)
+            5)  
                ===>  8
+(vector-ref '#(1 1 2 3 5 8 13 21)
+            (let ((i (round (* 2 (acos -1)))))
+              (if (inexact? i)
+                  (inexact->exact i)
+                  i))) 
                ===> 13

+

+ +

procedure:  (vector-set! vector k obj) 
+

+ +k must be a valid index of vector. +Vector-set! stores obj in element k of vector. +The value returned by vector-set! is unspecified. +

(let ((vec (vector 0 '(2 2 2 2) "Anna")))
+  (vector-set! vec 1 '("Sue" "Sue"))
+  vec)      
                ===>  #(0 ("Sue" "Sue") "Anna")
+
+(vector-set! '#(0 1 2) 1 "doe")  
                ===>  error  ; constant vector

+

+ +

library procedure:  (vector->list vector) 
+ +
library procedure:  (list->vector list) 
+

+ +Vector->list returns a newly allocated list of the objects contained +in the elements of vector. List->vector returns a newly +created vector initialized to the elements of the list list.

+ +

(vector->list '#(dah dah didah))  
                ===>  (dah dah didah)
+(list->vector '(dididit dah))   
                ===>  #(dididit dah)

+

+ +

library procedure:  (vector-fill! vector fill) 
+

+ +Stores fill in every element of vector. +The value returned by vector-fill! is unspecified. +

+ + +

6.4  Control features

+ +

+ + +This chapter describes various primitive procedures which control the +flow of program execution in special ways. +The procedure? predicate is also described here.

+ +

+ +

procedure:  (procedure? obj) 
+

+ +Returns #t if obj is a procedure, otherwise returns #f.

+ +

(procedure? car)                    ===>  #t
+(procedure? 'car)                   ===>  #f
+(procedure? (lambda (x) (* x x)))   
+                                    ===>  #t
+(procedure? '(lambda (x) (* x x)))  
+                                    ===>  #f
+(call-with-current-continuation procedure?)
+                                    ===>  #t

+ +

+ +

procedure:  (apply proc arg1 ... args) 
+

+ +Proc must be a procedure and args must be a list. +Calls proc with the elements of the list +(append (list arg1 ...) args) as the actual +arguments.

+ +

(apply + (list 3 4))                      ===>  7
+
+(define compose
+  (lambda (f g)
+    (lambda args
+      (f (apply g args)))))
+
+((compose sqrt *) 12 75)                      ===>  30

+

+ +

library procedure:  (map proc list1 list2 ...) 
+

+ +The lists must be lists, and proc must be a +procedure taking as many arguments as there are lists +and returning a single value. If more +than one list is given, then they must all be the same length. +Map applies proc element-wise to the elements of the +lists and returns a list of the results, in order. +The dynamic order in which proc is applied to the elements of the +lists is unspecified.

+ +

(map cadr '((a b) (d e) (g h)))   
                ===>  (b e h)
+
+(map (lambda (n) (expt n n))
+     '(1 2 3 4 5))                
                ===>  (1 4 27 256 3125)
+
+(map + '(1 2 3) '(4 5 6))                 ===>  (5 7 9)
+
+(let ((count 0))
+  (map (lambda (ignored)
+         (set! count (+ count 1))
+         count)
+       '(a b)))                         ===>  (1 2) or (2 1)
+

+ +

+ +

library procedure:  (for-each proc list1 list2 ...) 
+

+ +The arguments to for-each are like the arguments to map, but +for-each calls proc for its side effects rather than for its +values. Unlike map, for-each is guaranteed to call proc on +the elements of the lists in order from the first element(s) to the +last, and the value returned by for-each is unspecified.

+ +

(let ((v (make-vector 5)))
+  (for-each (lambda (i)
+              (vector-set! v i (* i i)))
+            '(0 1 2 3 4))
+  v)                                        ===>  #(0 1 4 9 16)

+ +

+ +

library procedure:  (force promise) 
+

+ +Forces the value of promise (see delay, +section 4.2.5). If no value has been computed for +the promise, then a value is computed and returned. The value of the +promise is cached (or ``memoized'') so that if it is forced a second +time, the previously computed value is returned. + +

(force (delay (+ 1 2)))           ===>  3
+(let ((p (delay (+ 1 2))))
+  (list (force p) (force p)))  
+                                       ===>  (3 3)
+
+(define a-stream
+  (letrec ((next
+            (lambda (n)
+              (cons n (delay (next (+ n 1)))))))
+    (next 0)))
+(define head car)
+(define tail
+  (lambda (stream) (force (cdr stream))))
+
+(head (tail (tail a-stream)))  
+                                       ===>  2

+ +Force and delay are mainly intended for programs written in +functional style. The following examples should not be considered to +illustrate good programming style, but they illustrate the property that +only one value is computed for a promise, no matter how many times it is +forced. + +

(define count 0)
+(define p
+  (delay (begin (set! count (+ count 1))
+                (if (> count x)
+                    count
+                    (force p)))))
+(define x 5)
+p                             ===>  a promise
+(force p)                     ===>  6
+p                             ===>  a promise, still
+(begin (set! x 10)
+       (force p))             ===>  6

+ +Here is a possible implementation of delay and force. +Promises are implemented here as procedures of no arguments, +and force simply calls its argument:

+ +

(define force
+  (lambda (object)
+    (object)))

+ +We define the expression

+ +

(delay <expression>)

+ +to have the same meaning as the procedure call

+ +

(make-promise (lambda () <expression>))
+

+ +as follows

+ +

(define-syntax delay
+  (syntax-rules ()
+    ((delay expression)
+     (make-promise (lambda () expression))))),

+ +where make-promise is defined as follows:

+ + +

(define make-promise
+  (lambda (proc)
+    (let ((result-ready? #f)
+          (result #f))
+      (lambda ()
+        (if result-ready?
+            result
+            (let ((x (proc)))
+              (if result-ready?
+                  result
+                  (begin (set! result-ready? #t)
+                         (set! result x)
+                         result))))))))

+ +

Rationale:   +A promise may refer to its own value, as in the last example above. +Forcing such a promise may cause the promise to be forced a second time +before the value of the first force has been computed. +This complicates the definition of make-promise. +

+ +Various extensions to this semantics of delay and force +are supported in some implementations:

+ +

+

+ +

procedure:  (call-with-current-continuation proc) 
+

+ + Proc must be a procedure of one +argument. The procedure call-with-current-continuation packages +up the current continuation (see the rationale below) as an ``escape +procedure'' and passes it as an argument to +proc. The escape procedure is a Scheme procedure that, if it is +later called, will abandon whatever continuation is in effect at that later +time and will instead use the continuation that was in effect +when the escape procedure was created. Calling the escape procedure +may cause the invocation of before and after thunks installed using +dynamic-wind.

+ +The escape procedure accepts the same number of arguments as the continuation to +the original call to call-with-current-continuation. +Except for continuations created by the call-with-values +procedure, all continuations take exactly one value. The +effect of passing no value or more than one value to continuations +that were not created by call-with-values is unspecified.

+ +The escape procedure that is passed to proc has +unlimited extent just like any other procedure in Scheme. It may be stored +in variables or data structures and may be called as many times as desired.

+ +The following examples show only the most common ways in which +call-with-current-continuation is used. If all real uses were as +simple as these examples, there would be no need for a procedure with +the power of call-with-current-continuation.

+ +

(call-with-current-continuation
+  (lambda (exit)
+    (for-each (lambda (x)
+                (if (negative? x)
+                    (exit x)))
+              '(54 0 37 -3 245 19))
+    #t))                                ===>  -3
+
+(define list-length
+  (lambda (obj)
+    (call-with-current-continuation
+      (lambda (return)
+        (letrec ((r
+                  (lambda (obj)
+                    (cond ((null? obj) 0)
+                          ((pair? obj)
+                           (+ (r (cdr obj)) 1))
+                          (else (return #f))))))
+          (r obj))))))
+
+(list-length '(1 2 3 4))                    ===>  4
+
+(list-length '(a b . c))                    ===>  #f

+ +

Rationale:  

+ +A common use of call-with-current-continuation is for +structured, non-local exits from loops or procedure bodies, but in fact +call-with-current-continuation is extremely useful for implementing a +wide variety of advanced control structures.

+ +Whenever a Scheme expression is evaluated there is a +continuation wanting the result of the expression. The continuation +represents an entire (default) future for the computation. If the expression is +evaluated at top level, for example, then the continuation might take the +result, print it on the screen, prompt for the next input, evaluate it, and +so on forever. Most of the time the continuation includes actions +specified by user code, as in a continuation that will take the result, +multiply it by the value stored in a local variable, add seven, and give +the answer to the top level continuation to be printed. Normally these +ubiquitous continuations are hidden behind the scenes and programmers do not +think much about them. On rare occasions, however, a programmer may +need to deal with continuations explicitly. +Call-with-current-continuation allows Scheme programmers to do +that by creating a procedure that acts just like the current +continuation.

+ +Most programming languages incorporate one or more special-purpose +escape constructs with names like exit, return, or +even goto. In 1965, however, Peter Landin [16] +invented a general purpose escape operator called the J-operator. John +Reynolds [24] described a simpler but equally powerful +construct in 1972. The catch special form described by Sussman +and Steele in the 1975 report on Scheme is exactly the same as +Reynolds's construct, though its name came from a less general construct +in MacLisp. Several Scheme implementors noticed that the full power of the +catch construct could be provided by a procedure instead of by a +special syntactic construct, and the name +call-with-current-continuation was coined in 1982. This name is +descriptive, but opinions differ on the merits of such a long name, and +some people use the name call/cc instead. +

+ +

+ +

procedure:  (values obj ...) 
+

+ +Delivers all of its arguments to its continuation. +Except for continuations created by the call-with-values +procedure, all continuations take exactly one value. +Values might be defined as follows: +

(define (values . things)
+  (call-with-current-continuation 
+    (lambda (cont) (apply cont things))))
+

+ +

+ +

procedure:  (call-with-values producer consumer) 
+

+ +Calls its producer argument with no values and +a continuation that, when passed some values, calls the +consumer procedure with those values as arguments. +The continuation for the call to consumer is the +continuation of the call to call-with-values.

+ +

(call-with-values (lambda () (values 4 5))
+                  (lambda (a b) b))
+                                                           ===>  5
+
+(call-with-values * -)                                     ===>  -1
+

+ +

+ +

procedure:  (dynamic-wind before thunk after) 
+

+ +Calls thunk without arguments, returning the result(s) of this call. +Before and after are called, also without arguments, as required +by the following rules (note that in the absence of calls to continuations +captured using call-with-current-continuation the three arguments are +called once each, in order). Before is called whenever execution +enters the dynamic extent of the call to thunk and after is called +whenever it exits that dynamic extent. The dynamic extent of a procedure +call is the period between when the call is initiated and when it +returns. In Scheme, because of call-with-current-continuation, the +dynamic extent of a call may not be a single, connected time period. +It is defined as follows: +

+ +If a second call to dynamic-wind occurs within the dynamic extent of the +call to thunk and then a continuation is invoked in such a way that the +afters from these two invocations of dynamic-wind are both to be +called, then the after associated with the second (inner) call to +dynamic-wind is called first.

+ +If a second call to dynamic-wind occurs within the dynamic extent of the +call to thunk and then a continuation is invoked in such a way that the +befores from these two invocations of dynamic-wind are both to be +called, then the before associated with the first (outer) call to +dynamic-wind is called first.

+ +If invoking a continuation requires calling the before from one call +to dynamic-wind and the after from another, then the after +is called first.

+ +The effect of using a captured continuation to enter or exit the dynamic +extent of a call to before or after is undefined.

+ +

(let ((path '())
+      (c #f))
+  (let ((add (lambda (s)
+               (set! path (cons s path)))))
+    (dynamic-wind
+      (lambda () (add 'connect))
+      (lambda ()
+        (add (call-with-current-continuation
+               (lambda (c0)
+                 (set! c c0)
+                 'talk1))))
+      (lambda () (add 'disconnect)))
+    (if (< (length path) 4)
+        (c 'talk2)
+        (reverse path))))
+    
                ===> (connect talk1 disconnect
+               connect talk2 disconnect)
+

+

+ + +

6.5  Eval

+ +

procedure:  (eval expression environment-specifier) 
+

+ +Evaluates expression in the specified environment and returns its value. +Expression must be a valid Scheme expression represented as data, +and environment-specifier must be a value returned by one of the +three procedures described below. +Implementations may extend eval to allow non-expression programs +(definitions) as the first argument and to allow other +values as environments, with the restriction that eval is not +allowed to create new bindings in the environments associated with +null-environment or scheme-report-environment.

+ +

(eval '(* 7 3) (scheme-report-environment 5))
+                                                           ===>  21
+
+(let ((f (eval '(lambda (f x) (f x x))
+               (null-environment 5))))
+  (f + 10))
+                                                           ===>  20
+

+ +

+ +

procedure:  (scheme-report-environment version) 
+ +
procedure:  (null-environment version) 
+

+ +Version must be the exact integer 5, +corresponding to this revision of the Scheme report (the +Revised5 Report on Scheme). +Scheme-report-environment returns a specifier for an +environment that is empty except for all bindings defined in +this report that are either required or both optional and +supported by the implementation. Null-environment returns +a specifier for an environment that is empty except for the +(syntactic) bindings for all syntactic keywords defined in +this report that are either required or both optional and +supported by the implementation.

+ +Other values of version can be used to specify environments +matching past revisions of this report, but their support is not +required. An implementation will signal an error if version +is neither 5 nor another value supported by +the implementation.

+ +The effect of assigning (through the use of eval) a variable +bound in a scheme-report-environment +(for example car) is unspecified. Thus the environments specified +by scheme-report-environment may be immutable.

+ +

+ +

optional procedure:  (interaction-environment) 
+

+ +This procedure returns a specifier for the environment that +contains implementation-defined bindings, typically a superset of +those listed in the report. The intent is that this procedure +will return the environment in which the implementation would evaluate +expressions dynamically typed by the user.

+ +

+ + +

6.6  Input and output

+ + +

6.6.1  Ports

+ +

+ +Ports represent input and output devices. To Scheme, an input port is a +Scheme object that can deliver characters upon command, while an output port +is a Scheme object that can accept characters.

+ +

+ +

library procedure:  (call-with-input-file string proc) 
+ +
library procedure:  (call-with-output-file string proc) 
+

+ +String should be a string naming a file, and +proc should be a procedure that accepts one argument. +For call-with-input-file, +the file should already exist; for +call-with-output-file, +the effect is unspecified if the file +already exists. These procedures call proc with one argument: the +port obtained by opening the named file for input or output. If the +file cannot be opened, an error is signalled. If proc returns, +then the port is closed automatically and the value(s) yielded by the +proc is(are) returned. If proc does not return, then +the port will not be closed automatically unless it is possible to +prove that the port will never again be used for a read or write +operation. + +

Rationale:   +Because Scheme's escape procedures have unlimited extent, it is +possible to escape from the current continuation but later to escape back in. +If implementations were permitted to close the port on any escape from the +current continuation, then it would be impossible to write portable code using +both call-with-current-continuation and call-with-input-file or +call-with-output-file. + +
+

+ +

procedure:  (input-port? obj) 
+ +
procedure:  (output-port? obj) 
+

+ +Returns #t if obj is an input port or output port +respectively, otherwise returns #f.

+ +

+ +

+ +

procedure:  (current-input-port) 
+ +
procedure:  (current-output-port) 
+

+ +Returns the current default input or output port.

+ +

+ +

optional procedure:  (with-input-from-file string thunk) 
+ +
optional procedure:  (with-output-to-file string thunk) 
+

+ +String should be a string naming a file, and +proc should be a procedure of no arguments. +For with-input-from-file, +the file should already exist; for +with-output-to-file, +the effect is unspecified if the file +already exists. +The file is opened for input or output, an input or output port +connected to it is made the default value returned by +current-input-port or current-output-port +(and is used by (read), (write obj), and so forth), +and the +thunk is called with no arguments. When the thunk returns, +the port is closed and the previous default is restored. +With-input-from-file and with-output-to-file return(s) the +value(s) yielded by thunk. +If an escape procedure +is used to escape from the continuation of these procedures, their +behavior is implementation dependent.

+ + + +

+ +

+ +

procedure:  (open-input-file filename) 
+

+ +Takes a string naming an existing file and returns an input port capable of +delivering characters from the file. If the file cannot be opened, an error is +signalled.

+ +

+ +

procedure:  (open-output-file filename) 
+

+ +Takes a string naming an output file to be created and returns an output +port capable of writing characters to a new file by that name. If the file +cannot be opened, an error is signalled. If a file with the given name +already exists, the effect is unspecified.

+ +

+ +

procedure:  (close-input-port port) 
+ +
procedure:  (close-output-port port) 
+

+ +Closes the file associated with port, rendering the port +incapable of delivering or accepting characters. +These routines have no effect if the file has already been closed. +The value returned is unspecified.

+ +

+ +

+ +

+ + +

6.6.2  Input

+ +

+ +

+

+ +

library procedure:  (read) 
+ +
library procedure:  (read port) 
+

+ +Read converts external representations of Scheme objects into the +objects themselves. That is, it is a parser for the nonterminal +<datum> (see sections 7.1.2 and +6.3.2). Read returns the next +object parsable from the given input port, updating port to point to +the first character past the end of the external representation of the object.

+ +If an end of file is encountered in the input before any +characters are found that can begin an object, then an end of file +object is returned. The port remains open, and further attempts +to read will also return an end of file object. If an end of file is +encountered after the beginning of an object's external representation, +but the external representation is incomplete and therefore not parsable, +an error is signalled.

+ +The port argument may be omitted, in which case it defaults to the +value returned by current-input-port. It is an error to read from +a closed port. +

+ +

procedure:  (read-char) 
+ +
procedure:  (read-char port) 
+

+ +Returns the next character available from the input port, updating +the port to point to the following character. If no more characters +are available, an end of file object is returned. Port may be +omitted, in which case it defaults to the value returned by current-input-port.

+ +

+ +

procedure:  (peek-char) 
+ +
procedure:  (peek-char port) 
+

+ +Returns the next character available from the input port, +without updating +the port to point to the following character. If no more characters +are available, an end of file object is returned. Port may be +omitted, in which case it defaults to the value returned by current-input-port.

+ +

Note:   +The value returned by a call to peek-char is the same as the +value that would have been returned by a call to read-char with the +same port. The only difference is that the very next call to +read-char or peek-char on that port will return the +value returned by the preceding call to peek-char. In particular, a call +to peek-char on an interactive port will hang waiting for input +whenever a call to read-char would have hung. +

+ +

+ +

procedure:  (eof-object? obj) 
+

+ +Returns #t if obj is an end of file object, otherwise returns +#f. The precise set of end of file objects will vary among +implementations, but in any case no end of file object will ever be an object +that can be read in using read.

+ +

+ +

procedure:  (char-ready?) 
+ +
procedure:  (char-ready? port) 
+

+ +Returns #t if a character is ready on the input port and +returns #f otherwise. If char-ready returns #t then +the next read-char operation on the given port is guaranteed +not to hang. If the port is at end of file then char-ready? +returns #t. Port may be omitted, in which case it defaults to +the value returned by current-input-port.

+ +

Rationale:   +Char-ready? exists to make it possible for a program to +accept characters from interactive ports without getting stuck waiting for +input. Any input editors associated with such ports must ensure that +characters whose existence has been asserted by char-ready? cannot +be rubbed out. If char-ready? were to return #f at end of +file, a port at end of file would be indistinguishable from an interactive +port that has no ready characters. +
+

+ + +

6.6.3  Output

+ +

+ + +

+ +

library procedure:  (write obj) 
+ +
library procedure:  (write obj port) 
+

+ +Writes a written representation of obj to the given port. Strings +that appear in the written representation are enclosed in doublequotes, and +within those strings backslash and doublequote characters are +escaped by backslashes. +Character objects are written using the #\ notation. +Write returns an unspecified value. The +port argument may be omitted, in which case it defaults to the value +returned by current-output-port.

+ +

+ +

library procedure:  (display obj) 
+ +
library procedure:  (display obj port) 
+

+ +Writes a representation of obj to the given port. Strings +that appear in the written representation are not enclosed in +doublequotes, and no characters are escaped within those strings. Character +objects appear in the representation as if written by write-char +instead of by write. Display returns an unspecified value. +The port argument may be omitted, in which case it defaults to the +value returned by current-output-port.

+ +

Rationale:   +Write is intended +for producing machine-readable output and display is for producing +human-readable output. Implementations that allow ``slashification'' +within symbols will probably want write but not display to +slashify funny characters in symbols. +
+

+ +

library procedure:  (newline) 
+ +
library procedure:  (newline port) 
+

+ +Writes an end of line to port. Exactly how this is done differs +from one operating system to another. Returns an unspecified value. +The port argument may be omitted, in which case it defaults to the +value returned by current-output-port.

+ +

+ +

procedure:  (write-char char) 
+ +
procedure:  (write-char char port) 
+

+ +Writes the character char (not an external representation of the +character) to the given port and returns an unspecified value. The +port argument may be omitted, in which case it defaults to the value +returned by current-output-port.

+ +

+ + +

6.6.4  System interface

+ +Questions of system interface generally fall outside of the domain of this +report. However, the following operations are important enough to +deserve description here.

+ +

optional procedure:  (load filename) 
+

+ +

+ +Filename should be a string naming an existing file +containing Scheme source code. The load procedure reads +expressions and definitions from the file and evaluates them +sequentially. It is unspecified whether the results of the expressions +are printed. The load procedure does not affect the values +returned by current-input-port and current-output-port. +Load returns an unspecified value.

+ +

Rationale:   +For portability, load must operate on source files. +Its operation on other kinds of files necessarily varies among +implementations. +
+

+ +

optional procedure:  (transcript-on filename) 
+ +
optional procedure:  (transcript-off) 
+

+ +Filename must be a string naming an output file to be +created. The effect of transcript-on is to open the named file +for output, and to cause a transcript of subsequent interaction between +the user and the Scheme system to be written to the file. The +transcript is ended by a call to transcript-off, which closes the +transcript file. Only one transcript may be in progress at any time, +though some implementations may relax this restriction. The values +returned by these procedures are unspecified.

+ +

+        

+

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/r5rs.html b/www/Documents/Standards/R5RS/HTML/r5rs.html new file mode 100644 index 0000000..ec29f48 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/r5rs.html @@ -0,0 +1,341 @@ + + + + + +Revised^5 Report on the Algorithmic Language Scheme + + + + + + + + +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ + +

+ + + + + + + + + +

+ +

+ + + + + + + +

+ + +

+ + +

+ +

+ +

+ + +

+ + + +

+ + + + + + +

+ +

+ +

+ + + + + + + + + + + +

+ + + + + + + +

+ + +

+ + +

+ +

+ + +

+ + + + + +

+ + + +

+ + + +

+ +

+ +

+ +

+ +

+ +

+ +

+ + +

+ +

+ +

+ + +

+ + +

+ + +

+ +

+ +

+ +

+ +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ +

+ +

+ +

+ +

+ +

+ + +

+ + + + + + + + +

+ +

+ +

+ +

+ +

+ +

+ + +

+ +

+



Revised5 Report on the Algorithmic Language Scheme

+ +20 February 1998
+
+Richard Kelsey, William Clinger, and Jonathan Rees (Editors)

+ + + + + +
H. Abelson R. K. Dybvig C. T. Haynes G. J. Rozas
N. I. Adams IV D. P. Friedman E. Kohlbecker G. L. Steele Jr.
D. H. Bartley R. Halstead D. Oxley G. J. Sussman
G. Brooks C. Hanson K. M. Pitman M. Wand

+Dedicated to the Memory of Robert Hieb +

+

+

+ + +

+ + +

+ + + +

+ +

+ +

+ +

+ +

+ +

+ +

+ + + + +

+ + +

+ + + +

+ + +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ + +

+ +

+ + + + + +

+ + +

+ + +

+ + + diff --git a/www/Documents/Standards/R5RS/HTML/real-index.html b/www/Documents/Standards/R5RS/HTML/real-index.html new file mode 120000 index 0000000..f8442d6 --- /dev/null +++ b/www/Documents/Standards/R5RS/HTML/real-index.html @@ -0,0 +1 @@ +r5rs.html \ No newline at end of file diff --git a/www/Documents/Standards/R5RS/index.shtml b/www/Documents/Standards/R5RS/index.shtml new file mode 100644 index 0000000..24b6ac1 --- /dev/null +++ b/www/Documents/Standards/R5RS/index.shtml @@ -0,0 +1,59 @@ + + + + + + +schemers.org: Documents: Standards: R5RS + + + +

R5RS

+ +

+R5RS is the Revised5 Report on the +Algorithmic Language Scheme. Thanks to the efforts of +several volunteers, we provide it in numerous formats. +

+ +

+The master copies are +available in DVI and +PostScript. +You can also get it in +PDF (thanks to Brad Lucier), +HTML (thanks to Dorai Sitaram, and Bill Robinson + for the frames), and +CHM (thanks to Jonas Lund) +formats. +We also offer a +tar.gz bundle of the HTML files. +

+ +

+The older report, R4RS, is also available in + +Windows HLP format (thanks to Sergei Egorov). +

+ +

+The journal +Higher-Order and Symbolic +Computation (formerly Lisp and Symbolic +Computation, which published archival versions of so many +excellent papers on or using Scheme) has the document in its +archive. The formal +citations are +

+R. Kelsey, W. Clinger, J. Rees (eds.), +Revised5 Report on the Algorithmic Language Scheme, +Higher-Order and Symbolic Computation, Vol. 11, No. 1, + August, 1998
+and
+ACM SIGPLAN Notices, Vol. 33, No. 9, September, 1998 +
+

+ + + + diff --git a/www/Documents/Standards/R5RS/r5rs-html.tar.gz b/www/Documents/Standards/R5RS/r5rs-html.tar.gz new file mode 100644 index 0000000..ede42f6 Binary files /dev/null and b/www/Documents/Standards/R5RS/r5rs-html.tar.gz differ diff --git a/www/Documents/Standards/R5RS/r5rs.chm b/www/Documents/Standards/R5RS/r5rs.chm new file mode 100644 index 0000000..327d526 Binary files /dev/null and b/www/Documents/Standards/R5RS/r5rs.chm differ diff --git a/www/Documents/Standards/R5RS/r5rs.dvi b/www/Documents/Standards/R5RS/r5rs.dvi new file mode 100644 index 0000000..36f1d1d Binary files /dev/null and b/www/Documents/Standards/R5RS/r5rs.dvi differ diff --git a/www/Documents/Standards/R5RS/r5rs.pdf b/www/Documents/Standards/R5RS/r5rs.pdf new file mode 100644 index 0000000..ae7a394 Binary files /dev/null and b/www/Documents/Standards/R5RS/r5rs.pdf differ diff --git a/www/Documents/Standards/R5RS/r5rs.ps b/www/Documents/Standards/R5RS/r5rs.ps new file mode 100644 index 0000000..0545d01 --- /dev/null +++ b/www/Documents/Standards/R5RS/r5rs.ps @@ -0,0 +1,13022 @@ +%!PS-Adobe-2.0 +%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software +%%Title: r5rs.dvi +%%Pages: 50 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentPaperSizes: Letter +%%EndComments +%DVIPSCommandLine: /usr/bin/dvips -D 600 -f r5rs.dvi +%DVIPSParameters: dpi=600, comments removed +%DVIPSSource: TeX output 1998.02.20:1212 +%%BeginProcSet: tex.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N +/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 +mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} +ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale +isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div +hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul +TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} +forall round exch round exch]setmatrix}N /@landscape{/isls true N}B +/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B +/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ +/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N +string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N +end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ +/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] +N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup +length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ +128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub +get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data +dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N +/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup +/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx +0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff +setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff +.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} +if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup +length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ +cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul +add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict +/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook +known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X +/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for +65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 +0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V +{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 +getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} +ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false +RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 +false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform +round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg +rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail +{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} +B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ +4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ +p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p +a}B /bos{/SS save N}B /eos{SS restore}B end +%%EndProcSet +TeXDict begin 40258431 52099146 1000 600 600 (r5rs.dvi) +@start /Fa 1 47 df<0F003FC07FE0FFF0FFF0FFF0FFF0FFF0FFF07FE03FC00F000C0C +7A8B19>46 D E /Fb 2 51 df<01E003F003F003F003F007E007E007C00FC00FC00F800F +801F001F001E001E003E003C003C007800780078007000F000E00060000C1A7E9B12>48 +D<0007FFF0003FFFF0007FFFF001FC000003E0000007C000000F0000001E0000001C0000 +003C000000780000007000000070000000F0000000E0000000E0000000FFFFFFF0FFFFFF +F0FFFFFFF0E0000000E0000000F00000007000000070000000780000003C0000001C0000 +001E0000000F0000000780000003E0000001FC000000FFFFF0003FFFF00007FFF01C237A +9D2A>50 D E /Fc 4 119 df<3FFFFFFFFFE07FFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFF +F07FFFFFFFFFF03FFFFFFFFFF001FC000007F001FC000007F001FC000007F001FC000007 +F001FC000007F001FC000007F001FC000007F001FC000007F001FC000003E001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC001F00 +0001FC003F800001FC003F800001FC003F800001FC003F800001FFFFFF800001FFFFFF80 +0001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FC003F800001FC003F80 +0001FC003F800001FC003F800001FC001F000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +F801FC000001FC01FC000001FC01FC000001FC01FC000001FC01FC000001FC01FC000001 +FC01FC000001FC01FC000001FC01FC000001FC3FFFFFFFFFFC7FFFFFFFFFFCFFFFFFFFFF +FCFFFFFFFFFFFC7FFFFFFFFFFC3FFFFFFFFFF82E3D7EBC33>69 D<001FFC00000000FFFF +80000003FFFFE0000007FFFFF000000FFFFFFC00001FFFFFFE00001FF007FF00001FE001 +FF00001FE000FF80001FE0003F80000FC0003FC0000780001FC0000000001FE000000000 +0FE0000000000FE0000000000FE0000000000FE0000000000FE00000000FFFE0000001FF +FFE000001FFFFFE000007FFFFFE00001FFFFFFE00007FFFF0FE0000FFFC00FE0001FFC00 +0FE0003FF0000FE0007FC0000FE0007F80000FE000FF00000FE000FE00000FE000FE0000 +0FE000FE00000FE000FE00000FE000FE00000FE000FF00001FE0007F00001FE0007F8000 +7FE0003FE000FFF0003FF807FFFFF01FFFFFFFFFF80FFFFFFFFFF807FFFFF3FFF803FFFF +C1FFF800FFFF003FF0001FF00000002D2E7BAC33>97 D<3FFFFC00007FFFFE0000FFFFFE +0000FFFFFE00007FFFFE00003FFFFE00000000FE00000000FE00000000FE00000000FE00 +000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 +0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000 +00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 +FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE +00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 +000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 +0000FE00000000FE00003FFFFFFFF87FFFFFFFFCFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC3F +FFFFFFF8273D7ABC33>108 D<3FFFC00FFFF07FFFE01FFFF8FFFFF03FFFFCFFFFF03FFF +FC7FFFE01FFFF83FFFC00FFFF001F800007E0001FC0000FE0000FC0000FC0000FC0000FC +0000FE0001FC00007E0001F800007E0001F800007F0003F800003F0003F000003F0003F0 +00003F8007F000001F8007E000001F8007E000001FC00FE000000FC00FC000000FC00FC0 +00000FC00FC0000007E01F80000007E01F80000007E01F80000007F03F80000003F03F00 +000003F03F00000003F87F00000001F87E00000001F87E00000001FCFE00000000FCFC00 +000000FCFC00000000FFFC000000007FF8000000007FF8000000007FF8000000003FF000 +0000003FF0000000001FE0000000000FC000002E2B7EAA33>118 +D E /Fd 2 51 df<00600001E0000FE000FFE000F1E00001E00001E00001E00001E00001 +E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001 +E00001E00001E00001E00001E0007FFF807FFF80111C7B9B1C>49 +D<03FC000FFF003C0FC07003E07801F0FC00F0FC00F8FC00F8FC00787800780000F80000 +F00000F00001E00003C0000780000F00001C0000380000E00001C0180380180600180C00 +383FFFF07FFFF0FFFFF0FFFFF0151C7D9B1C>I E /Fe 1 113 df<000000000000000000 +3000000000000000000078000000000000000000F8000000000000000000F80000000000 +00000001F0000000000000000001F0000000000000000003E0000000000000000003E000 +0000000000000007C0000000000000000007C000000000000000000F8000000000000000 +000F8000000000000000001F0000000000000000001F0000000000000000003E00000000 +00000000003E0000000000000000007C0000000000000000007C000000000000000000F8 +000000000000000000F8000000000000000001F0000000000000000001F0000000000000 +000003E0000000000000000003E0000000000000000007C0000000000000000007C00000 +000000000000078000000000000000000F8000000000000000000F800000000000000000 +1F0000000000000000001F0000000000000000003E0000000000000000003E0000000000 +000000007C0000000000000000007C000000000000000000F8000000000000000000F800 +0000000000000001F0000000000000000001F0000000000000000003E000000000000000 +0003E0000000000000000007C0000000000000000007C000000000000000000F80000000 +00000000000F8000000000000000001F0000000000000000001F0000000000000000003E +0000000000000000003E0000000000000000007C0000000010000000007C000000003000 +000000F800000000F800000000F800000001F800000001F000000003F800000001F00000 +000FFC00000003E00000001DFC00000003E000000038FE00000007C0000000F0FE000000 +07C0000000407F0000000F80000000007F0000000F80000000007F0000001F0000000000 +3F8000001F00000000003F8000003E00000000001FC000003E00000000001FC000007C00 +000000000FE000007C00000000000FE00000F800000000000FE00000F8000000000007F0 +0001F0000000000007F00001F0000000000003F80003E0000000000003F80003E0000000 +000001FC0003C0000000000001FC0007C0000000000001FC0007C0000000000000FE000F +80000000000000FE000F800000000000007F001F000000000000007F001F000000000000 +003F803E000000000000003F803E000000000000003F807C000000000000001FC07C0000 +00000000001FC0F8000000000000000FE0F8000000000000000FE1F00000000000000007 +F1F00000000000000007F3E00000000000000007F3E00000000000000003FFC000000000 +00000003FFC00000000000000001FF800000000000000001FF800000000000000000FF00 +0000000000000000FF000000000000000000FE0000000000000000007E00000000000000 +00007C000000000000000000380000000000004D64788353>112 +D E /Ff 3 51 df0 +D<00E001F003F803F803F807F007F007F007E007E00FE00FC00FC00FC01F801F801F001F +003F003E003E003E007C007C007C007800F800F800F00010000D1E7D9F13>48 +D<0001FFFF000FFFFF003FFFFF00FF000001F8000003E00000078000000F0000001E0000 +001C0000003C00000038000000780000007000000070000000F0000000E0000000E00000 +00FFFFFFFFFFFFFFFFFFFFFFFFE0000000E0000000F00000007000000070000000780000 +00380000003C0000001C0000001E0000000F0000000780000003E0000001F8000000FF00 +00003FFFFF000FFFFF0001FFFF20277AA12D>50 D E /Fg 8 115 +df<001F000000FF8C0001E0DE0003807E0007007C000F003C001E003C003E003C003C00 +78007C0078007C0078007C007800F800F000F800F000F800F040F800F060F801E0C07801 +E0C07803E0C03807E1801C1CF3000FF87F0007E03C001B177E9522>97 +D<001F8000FFE003E0700780301F00303E00303C00307C00607807C0FFFF80FFF800F800 +00F00000F00000F00000F00000F00008F000187800703800E01E07C00FFF0003F8001517 +7D951D>101 D<0007C000003FE3000078378001E01F8003C01F0003C00F0007800F000F +800F000F001E001F001E001F001E001F001E003E003C003E003C003E003C001E003C001E +0078001E00F8000F01F8000787780003FEF00000F8F0000000F0000000F0000001E00000 +01E0003801E0007803C000F8078000F80F8000703E00007FFC00001FE0000019217E951E +>103 D<01F01FE01FE001E001E003C003C003C003C007800780078007800F000F000F00 +0F001E001E001E001E003C003C003C003C007800780078407860F0C0F0C0F0C0F1807180 +3F001E000C247DA214>108 D<0F007E00FC001F81FF83FF0031C383C7078061EE03CC03 +8061EC01F803C0C1F801F003C0C1F001F003C0C1E001E003C003E003C0078003C003C007 +8003C003C0078003C003C00F00078007800F00078007800F00078007801E04078007801E +060F000F001E0C0F000F003C0C0F000F003C180F000F003C181E001E001C701E001E001F +E00C000C0007802F177D9536>I<0F00FC001FC3FF0031C7078061EC038061F803C0C1F0 +03C0C1F003C0C1E003C003C0078003C0078003C0078003C00F0007800F0007800F000780 +1E0407801E060F001E0C0F003C0C0F003C180F003C381E001C701E001FE00C0007801F17 +7D9526>I<001F0200FF8601E0CE03807E07007C0F003C1E003C3E003C3C00787C00787C +00787C0078F800F0F800F0F800F0F800F0F801E07801E07803E03807E01C1FC00FFBC007 +E3C00003C0000780000780000780000780000F00000F0000FFF001FFF017207E951C> +113 D<0F01F01FC7F831CE1C61F81C61F03CC1F07CC1E07CC1E03803C00003C00003C000 +03C0000780000780000780000780000F00000F00000F00000F00001E00001E00000C0000 +16177D951D>I E /Fh 31 123 df<00007F0000000003FFE00000000FC0F80000003F00 +7C0000007C007E006000F8003F006001F0003F00E003E0001F80C007E0001F80C00FC000 +1F81C00FC0001FC1801F80000FC1803F80000FC3803F00000FC3003F00000FC7007F0000 +0FC6007E00000FCE007E00000FDC007E00000FD8007E00000FF800FC00000FF000FC0000 +0FE000FC00000FC0007C00000FC0007C00000FC0007C00000FC0007C00001FC0003E0000 +3FC0003E000077C0C01F0001E7E0C00F800783E1C007C07E03E38001FFF801FF00007F80 +007C002B227EA031>11 D<0001FF80000FFF80003FFF0000FF000001F8000003F0000007 +E000000FC000001F8000003F0000003F0000007E0000007FFFF8007FFFFC00FFFFFC00FC +000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000007C +0000007C0000003E0000003E0000001F0007000F800E0003E07C0001FFF000003F800019 +217D9F1F>15 D<00001800000018000000380000003000000030000000380000001BFC00 +001FFF00003C030000FFFF0001E3FC0003C00000070000000E0000001C0000003C000000 +78000000F0000001E0000001E0000003C0000007800000078000000F0000000F0000001E +0000001E0000003C0000003C0000003C0000007C000000780000007800000078000000F8 +000000F8000000F0000000F0000000F0000000F8000000F8000000F8000000F8000000FC +000000FE0000007E0000007F8000007FC000003FF800001FFF00000FFFE00007FFF80001 +FFFE00007FFF00000FFF800001FF8000003FC000001FC000000FC0000007C0000007C000 +0007800000078000200F0000300F00003C1E00000FF8000003E00020447DB322>I<0000 +1F8000007FC00001F0F00003E0F00007C078000F8078001F003C003E003C003E003C007C +003E00F8003E00F8003E01F0003E03F0003E03F0003E07E0003E07E0003E07C0007E0FC0 +007E0FC0007E1F80007E1F80007E1F8000FE3F8000FC3F0000FC3FFFFFFC3FFFFFFC7FFF +FFFC7FFFFFF87E0001F87E0003F8FE0003F0FC0003F0FC0003F0FC0007E0FC0007E0FC00 +07C0F8000FC0F8000FC0F8001F80F8001F80F8001F00F8003E00F8003E00F8007C007800 +F8007800F8007801F0003C03E0003C07C0001E0F80001E1F000007FC000003F000001F36 +7DB424>18 D<007000000000FC0007C001FC001FE001FC007FE001F801EFE001F8038FE0 +03F8070FC003F81E078003F038000003F070000007F0E0000007F3C0000007E700000007 +FE0000000FFFE000000FFFFE00000FC1FF80000FC01FE0001FC007F0001FC007F0001F80 +03F0001F8003F8083F8003F81C3F8003F0183F0003F0183F0003F0187F0003F0387F0003 +F0307E0003E0707E0003E060FE0001F0E0FE0001F1C0FC00007F803800001E0026227DA0 +2C>20 D<007C000000007F800000001FE00000000FE000000007F000000007F000000003 +F800000003F800000003F800000001FC00000001FC00000001FC00000000FE00000000FE +00000000FF000000007F000000007F000000003F800000003F800000003F800000001FC0 +0000001FC00000001FE00000000FE00000000FE000000007F000000007F000000007F000 +000007F80000000FF80000001FF80000003DFC00000079FC000000F8FE000001F0FE0000 +03E0FE000007C07F00000F807F00001F007F00003E003F80007E003F8000FC003FC001F8 +001FC003F0001FC007E0000FE01FC0000FE03FC0000FE07F800007F0FF000007F0FE0000 +07F8FC000003F8F8000001FCF0000000FC26357CB32D>I<00FC0000E03FFC0001F87FFC +0003F87FFC0003F801F80003F001F80003F003F80007F003F80007E003F0000FE003F000 +0FC007F0000FC007F0001F8007E0001F8007E0003F000FE0007E000FE0007E000FC000FC +000FC001F8001FC003F0001FC003E0001F8007C0001F800F80003F801F00003F803E0000 +3F007C00003F01F000007F03E000007F0F8000007E1E0000007EF8000000FFE0000000FF +80000000F80000000025217DA026>23 D<000001F80000000FFE0000003E0F8000007C07 +C00001F803E00003F003E00007E001F0000FC001F0000F8001F0001F8001F0003F0001F8 +003F0001F8007E0001F8007E0001F8007E0003F800FE0003F000FC0003F000FC0003F001 +FC0007F001FC0007E001F80007E001F80007E003F8000FC003F8000FC003F0001F8003F0 +001F0007F0003F0007F0007E0007F800FC0007F801F8000FFC03E0000FEE07C0000FC7FF +00000FC1F800001FC00000001FC00000001F800000001F800000003F800000003F800000 +003F000000003F000000007F000000007F000000007E000000007E00000000FE00000000 +FE00000000FC00000000380000000025327FA028>26 D<0000FFFFFF000003FFFFFF8000 +0FFFFFFF80003FFFFFFF00007FFFFFFE0001FF03FC000003F800FC000007F000FE000007 +E0007E00000FC0007E00001FC0007E00001F80003E00003F00007E00003F00007E00007F +00007E00007E00007E00007E00007E00007E0000FE0000FE0000FC0000FC0000FC0000FC +0000FC0000FC0001F80000FC0001F80000FC0003F000007C0003E000007C0007E000007C +000FC000003E001F8000003E003F0000001F007C0000000F81F800000003FFE000000000 +7F0000000029217E9F2C>I<00000000600000000000600000000000E00000000000C000 +00000000C00000000000C00000000001C000000000018000000000018000000000018000 +000000038000000000030000000000030000000000030000000000070000000000060000 +0000000600000000000600000000000E000000F0000C007003FC000C00F8071E000C01FC +0E1F001C01FC1C1F001801FC381F801800FC301F8018007C303F8038003C703F0030003C +603F0030001C607F0030001CE07E00700018407E0060001800FE0060001800FC00600038 +01FC00E0003001F800C0003001F800C0007001F800C0006003F801C0006003F0018000E0 +03F0018001C003F00180018003F00380038003F00300070003F003000E0003F003001C00 +01F80700380001F80600700000FC0601E000007E06038000001FCE1F00000007FFFC0000 +00007FE0000000000C00000000001C000000000018000000000018000000000018000000 +000038000000000030000000000030000000000030000000000070000000000060000000 +0000600000000000600000000000E00000000000C00000002E447EB332>32 +D<3C7EFFFFFFFF7E3C08087A8715>58 D<3C007E00FF00FF00FF80FF807F803D80018001 +8001800180038003000300070006000E000C001C0038007000600009177A8715>I<0000 +0000001C00000000007E0000000001FE0000000007FC000000001FF0000000007FC00000 +0001FF0000000007FC000000001FF0000000007FC000000001FF0000000007FC00000000 +1FF0000000007FC000000001FF0000000007FC000000001FF0000000007FC000000001FF +0000000007FC000000001FF0000000007FC000000000FF0000000000FF00000000007FC0 +000000001FF00000000007FC0000000001FF00000000007FC0000000001FF00000000007 +FC0000000001FF00000000007FC0000000001FF00000000007FC0000000001FF00000000 +007FC0000000001FF00000000007FC0000000001FF00000000007FC0000000001FF00000 +000007FC0000000001FE00000000007E00000000001C2F2E7AA93C>I<00000030000000 +78000000F8000000F8000000F0000001F0000001F0000001E0000003E0000003E0000003 +C0000007C0000007C00000078000000F8000000F8000000F0000001F0000001F0000003E +0000003E0000003C0000007C0000007C00000078000000F8000000F8000000F0000001F0 +000001F0000001E0000003E0000003E0000003C0000007C0000007C000000F8000000F80 +00000F0000001F0000001F0000001E0000003E0000003E0000003C0000007C0000007C00 +000078000000F8000000F8000000F0000001F0000001F0000001E0000003E0000003E000 +0007C0000007C00000078000000F8000000F8000000F0000001F0000001F0000001E0000 +003E0000003E0000003C0000007C0000007C00000078000000F8000000F8000000F00000 +00600000001D4B7CB726>I<0001F800000007FE0000001F071C00007C03FE0000F801FE +0001F001FE0003F000FE0007E000FC0007C000FC000FC000FC001F8001FC001F8001F800 +3F0001F8003F0001F8003F0003F8007F0003F0007E0003F0007E0003F0007E0007F000FE +0007E000FC0007E000FC0007E040FC000FE060FC000FC0E0FC000FC0C07C000FC0C07C00 +1FC1C07C003FC1803C007F81803E00EF83801E01C7C3000F0787C70007FE03FE0000F800 +F80023227EA029>97 D<003F00001FFF00001FFF00001FFE000000FE000000FE000000FE +000000FC000000FC000001FC000001FC000001F8000001F8000003F8000003F8000003F0 +000003F0000007F0000007F0000007E0F80007E3FF000FEF07800FFC03C00FF803E00FF0 +01E01FE001F01FC001F01F8001F01F8001F83F8001F83F8001F83F0001F83F0001F87F00 +03F87F0003F07E0003F07E0003F07E0007F0FE0007E0FC0007E0FC0007E0FC000FC0FC00 +0FC0FC001F807C001F007C003F007C007E003C007C003E00F8001E01F0000F07C00007FF +000000FC00001D357EB321>I<00000001F8000000FFF8000000FFF8000000FFF0000000 +07F000000007F000000007F000000007E000000007E00000000FE00000000FE00000000F +C00000000FC00000001FC00000001FC00000001F800000001F800000003F800000003F80 +0001F83F000007FE3F00001F077F00007C03FF0000F801FE0001F001FE0003F000FE0007 +E000FE0007C000FC000FC000FC001F8001FC001F8001FC003F0001F8003F0001F8003F00 +03F8007F0003F8007E0003F0007E0003F0007E0007F000FE0007F000FC0007E000FC0007 +E040FC000FE060FC000FE0E0FC000FC0C07C000FC0C07C001FC1C07C003FC1803C007F81 +803E00EF83801E01C7C3000F0787C70007FE03FE0000F800F80025357EB328>100 +D<0000FE000007FF80001F03C0007C01E001F800E003F000E007E000E00FC000E01F8000 +E01F8001E03F0001C03F0003C07E000F807E00FE007FFFF800FFFF8000FC000000FC0000 +00FC000000FC000000F8000000F8000000F8000000F8000000F8000018FC0000387C0000 +707C0000E03C0001C03E0007801F001E000F80FC0003FFE00000FF00001D227DA024>I< +00001F800000007FE0000001F071C00007C03FE0000F801FE0001F000FE0003F000FE000 +7E000FE0007C000FC000FC000FC001F8001FC001F8001FC003F0001F8003F0001F8003F0 +003F8007F0003F8007E0003F0007E0003F0007E0007F0007E0007F0007C0007E0007C000 +7E0007C000FE0007C000FE0007C000FC0007C000FC0007C001FC0003E003FC0003E007F8 +0001F01FF80000F83BF800003FF3F800000FC3F000000003F000000007F000000007F000 +000007E000000007E00000000FE0001C000FC0007F000FC0007F001F80007F003F8000FE +003F0000FE007E00007801FC00003C03F000001FFFC0000003FE00000023317FA025> +103 D<0001C00007E00007F0000FF0000FE00007E0000380000000000000000000000000 +00000000000000000000000000000000000000F00003FC00071E000E1F001C1F00381F00 +301F80303F00703F00603F00607F00E07E0040FE0000FE0000FC0001FC0001F80001F800 +03F80003F00007F00007F02007E0700FE0600FC0600FC0E00FC0C01F80C00F81C00F8380 +0F8700078E0003FC0000F00014337EB11A>105 D<001F8007FF800FFF800FFF00007F00 +007F00007F00007E00007E0000FE0000FE0000FC0000FC0001FC0001FC0001F80001F800 +03F80003F80003F00003F00007F00007F00007E00007E0000FE0000FE0000FC0000FC000 +1FC0001FC0001F80001F80003F80003F80003F00003F00007F00007F00007E00007E0400 +FE0E00FE0C00FC0C00FC0C00FC1C00FC1800F81800F838007C70007C60003FE0000F8000 +11357DB317>108 D<01E000FE0007F00007F803FF801FFC000E3E0F07E0783F001C3E3C +03F1E01F80181F7001F3800F80381FE001F7000F80303FC001FE000FC0703FC001FE000F +C0603F8001FC000FC0603F0001F8000FC0603F0003F8001FC0E07F0003F0001F80407E00 +03F0001F80007E0003F0001F80007E0007F0003F8000FE0007F0003F0000FC0007E0003F +0000FC0007E0007F0000FC000FE0007E0001FC000FE0007E0001F8000FC000FE0001F800 +0FC000FC0401F8001FC000FC0E03F8001FC001FC0C03F0001F8001F80C03F0001F8001F8 +1C03F0003F8003F81807F0003F8003F01807E0003F0003F03807E0003F0001F07007E000 +7F0001F0E00FE0007F0000F1C00FC0007E00007F800380001C00001E003F227EA044>I< +01E000FE000007F803FF80000E3E0F07E0001C3E3C03F000181F7001F000381FE001F000 +303FC001F800703FC001F800603F8001F800603F0001F800603F0003F800E07F0003F000 +407E0003F000007E0003F000007E0007F00000FE0007E00000FC0007E00000FC000FE000 +00FC000FC00001FC000FC00001F8001FC00001F8001F808001F8001F81C003F8003F8180 +03F0003F018003F0003F038003F0007F030007F0007E030007E0007E070007E0003E0E00 +07E0003E1C000FE0001E38000FC0000FF00003800003C0002A227EA02E>I<001F001F00 +007FC07FE000E3E1E0F000C3E3807801C1F7007C0181FE003C0183FC003E0383F8003E03 +03F0003E0303F0003F0707F0003F0607F0003F0207E0003F0007E0003F000FE0007F000F +E0007E000FC0007E000FC0007E001FC000FE001FC000FC001F8000FC001F8000FC003F80 +01F8003F8001F8003F0003F0003F0003E0007F0007E0007F000FC0007F800F80007F801F +0000FFC03E0000FEE0F80000FC7FE00000FC1F800001FC00000001FC00000001F8000000 +01F800000003F800000003F800000003F000000003F000000007F000000007F000000007 +E0000000FFFF800000FFFF800000FFFF800000283083A027>112 +D<03E003E00FF81FF81C7C3C1C187C703E383EE0FE303FC0FE307F80FE707F00FC607E00 +FC607E0070E07E0000C0FE000040FC000000FC000000FC000001FC000001F8000001F800 +0001F8000003F8000003F0000003F0000003F0000007F0000007E0000007E0000007E000 +000FE000000FC000000FC000000FC000001FC000001F800000070000001F227EA023> +114 D<0001FC00000FFF00003E03C0007800E000F0006001E001E001E003E003E007E003 +C007E003E007E003E0038003F0000003FF000003FFF00003FFFC0001FFFE0000FFFF0000 +7FFF80000FFF8000007FC000001FC000000FC07E0007C0FE000780FE000780FE000780FE +000F00FC000F00C0001E00E0003C00700078003C01F0000FFFC00003FE00001B227CA024 +>I<000380000FC0000FC0000FC0001FC0001FC0001F80001F80003F80003F80003F0000 +3F00007F00007F00007E007FFFFE7FFFFEFFFFFE00FC0000FC0001FC0001FC0001F80001 +F80003F80003F80003F00003F00007F00007F00007E00007E0000FE0000FE0000FC0000F +C0081FC01C1FC0181F80181F80381F80701F80601F00E01F01C00F83800F870007FE0001 +F80017307FAE1C>I<00F800000003FE0001C0070F0003E00E0F8007E01C0F8007E0180F +C007E0380FC00FE0301FC00FE0701F800FC0601F800FC0603F801FC0E03F001FC0403F00 +1F80007F001F80007E003F8000FE003F8000FC003F0000FC003F0000FC007F0001FC007F +0001F8007E0001F8007E0201F800FE0701F800FE0601F000FC0601F000FC0601F000FC0E +01F001FC0C01F803F81C01F803F81800F80F7C38007C1C7C70003FF81FE00007E0078028 +227EA02C>I<001F801F80007FE07FE000E0F0E07001C0F9C0F803807D83F807007F83F8 +0E007F03F80C007F03F01C007E03F018007E01C01800FE00003800FC00001000FC000000 +00FC00000001FC00000001F800000001F800000001F800000003F800000003F800000003 +F000000003F000400007F000E00007F000C01C07E000C07E07E001C07E0FE00180FE0FE0 +0380FE1FE00700FE1BE00E00F839F01C007070F878003FE07FE0000F801F800025227EA0 +2C>120 D<00F000000003FC0001C0071E0003E00E1F0007E01C1F0007E0381F8007E030 +1F800FE0303F800FC0703F000FC0603F000FC0607F001FC0E07E001F80407E001F8000FE +001F8000FC003F8001FC003F0001F8003F0001F8003F0001F8007F0003F8007E0003F000 +7E0003F0007E0003F000FE0003F000FC0003E000FC0003E000FC0003E001FC0003E001F8 +0003F003F80003F007F80001F00FF80000F83FF000003FFBF000000FC3F000000007F000 +000007E000000007E00007000FE0001F800FC0003F801F80003F801F80003F803F00003F +007E00003E007C00003800F800001803F000001E07C0000007FF00000001F80000002331 +7EA026>I<00078003001FE007003FF006007FF80E00FFFC1C01FFFE7801E03FF0038001 +F0030000E0030001C0000003800000070000000E0000003C00000070000000E0000001C0 +000003800000070000000E0000003C00000070000C00E0001C01C0001803800038070000 +780EC000F00FFE03F01F3FFFE0381FFFC0700FFF806007FF00E003FE00C000F00020227D +A024>I E /Fi 8 119 df<00FF0003FFC00781E00F00F01E00783C003C3C003C78001E78 +001E78001E78001EF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8 +001FF8001FF8001FF8001F78001E78001E7C003E3C003C3C003C1E00780F00F00781E003 +FFC000FF0018227DA01E>48 D<00E00001E00007E000FFE000F9E00001E00001E00001E0 +0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0 +0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00003F000FFFF +C0FFFFC012217AA01E>I<01FC0007FF801C0FC03003E06001F06000F8F800F8FC00FCFC +00FCFC007C78007C3000FC0000FC0000F80000F80001F00003E00003C0000780000F0000 +1E0000380000700000E00001C00C03800C0600180C00181800183FFFF87FFFF8FFFFF0FF +FFF016217CA01E>I<00FF0003FFC00F03E01C00F01C00F83E00FC3E007C3E007C1E00FC +0C00FC0000F80000F80001F00003E0000FC001FF0001FF000003E00000F000007800007C +00003E00003F30003F78003FFC003FFC003FFC003EF8007E60007C3800F81E03F00FFFC0 +01FF0018227DA01E>I<0000E00001E00001E00003E00007E00007E0000DE0001DE00039 +E00031E00061E000E1E000C1E00181E00381E00701E00601E00C01E01C01E01801E03001 +E07001E0E001E0FFFFFFFFFFFF0001E00001E00001E00001E00001E00001E00003F0003F +FF003FFF18227DA11E>I<0F07F000FF3FFC00FF703F000FC00F800F8007C00F0007C00F +0003E00F0003E00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F00F +0003E00F0003E00F0007C00F8007800FC01F000F703E000F3FFC000F07E0000F0000000F +0000000F0000000F0000000F0000000F0000000F000000FFF00000FFF000001C207D9522 +>112 D<07F0801FFF80380F80700380E00380E00180E00180F00180F800007FC0003FF8 +001FFE0007FF00001F800007C0C003C0C001C0E001C0E001C0F00180F00380FC0F00CFFE +0083F80012187D9618>115 D +118 D E /Fj 32 122 df<00000003FF800000001FFFF00000003F00F8000000F8003C00 +0001F0003E000003E0007E000003E000FE000007C000FE000007C000FC000007C0003800 +000F80000000000F80000000000F80000000001F80000000001F00000000001F00000000 +001F00000000001F00000000001F00000000003F00000000003E000000001FFFFFFFE000 +1FFFFFFFE0001FFFFFFFC000007E0007C000007C0007C000007C000FC000007C000F8000 +007C000F800000FC000F800000F8001F800000F8001F000000F8001F000000F8001F0000 +01F8003F000001F0003E000001F0003E000001F0003E000001F0007E000003F0007C0000 +03E0007C000003E0007C180003E000FC1C0003E000F83C0007E000F8380007C000F83800 +07C000F8780007C000F8700007C000F070000FC000F0F0000F8000F8E0000F800079E000 +0F80003FC0001F80000F00001F80000000001F00000000001F00000000001F0000000000 +3E00000000003E00000000383E000000007E3C000000007E7C00000000FE7800000000FC +7800000000F8F00000000079E0000000003FC0000000000F00000000002F4582B42B>12 +D<03800FE01FE01FE01FE01FE01FE00760006000E000C000C001C001800380070006000E +001C0038007000E000C0000B177A8718>44 DI<1C7FFFFFFFFFFE380808778718>I<007001FC03FC03FC03FC03FC03F800E000 +000000000000000000000000000000000000000000000000000000000000001C007F00FF +00FF00FF00FF00FE0038000E20779F18>58 D<0007FF80003FFFC0000FFFC0007FFFC000 +0FFFC0007FFFC000001FC00003F80000003FE00001F00000003FE00001E00000003FE000 +01C00000003BF00001C00000007BF00003C00000007BF000038000000071F80003800000 +0071F8000380000000F1F8000780000000F0FC000700000000E0FC000700000000E0FC00 +0700000001E07E000F00000001E07E000E00000001C07E000E00000001C03F000E000000 +03C03F001E00000003C03F801C00000003801F801C00000003801F801C00000007801FC0 +3C00000007800FC03800000007000FC03800000007000FE0380000000F0007E078000000 +0F0007E0700000000E0007F0700000000E0003F0700000001E0003F0F00000001E0003F8 +E00000001C0001F8E00000001C0001F8E00000003C0001FDE00000003C0000FDC0000000 +380000FDC0000000380000FFC00000007800007FC00000007800007F800000007000003F +800000007000003F80000000F000003F80000000F000001F00000001F000001F00000007 +F800001F0000007FFF80000F000000FFFF80000E000000FFFF80000E0000003A337BB239 +>78 D<0007FFFFFE0000000FFFFFFFC000000FFFFFFFF00000003F8007F80000003F8001 +FC0000003F80007E0000003F00007F0000003F00003F0000007F00003F0000007F00003F +8000007E00003F8000007E00003F800000FE00003F800000FE00007F000000FC00007F00 +0000FC00007F000001FC0000FE000001FC0000FC000001F80001FC000001F80001F80000 +03F80003F0000003F8000FC0000003F0001F80000003F000FE00000007FFFFF000000007 +FFFFC000000007E003E000000007E001F80000000FE000FC0000000FE0007C0000000FC0 +007E0000000FC0007E0000001FC0007E0000001FC0007E0000001F80007E0000001F8000 +7E0000003F8000FE0000003F8000FE0000003F0000FE0000003F0000FE0000007F0001FE +0000007F0001FC0000007E0001FC0000007E0001FC01C000FE0001FC03C000FE0001FC03 +8000FC0001FC038001FC0001FC07807FFFF000FC0700FFFFF000FE0E00FFFFF0007E1C00 +000000001FF8000000000007E00032357BB238>82 D<0003F000000FF800003E1C60007C +0FF000F807F001F007F003E007F007E003E00FC003E00FC003E01F8007E01F8007C03F00 +07C03F0007C03F000FC07F000F807E000F807E000F807E001F80FE001F00FC001F00FC00 +1F06FC003F07FC003E0FFC003E0EFC007E0E7C007E1E7C00FE1C7C01FC1C3C03FC3C3E07 +BE381F0E1E7807FC0FF001F003C0202278A027>97 D<007E00000FFE00001FFE00001FFC +000000FC000000FC000000FC000000F8000000F8000001F8000001F8000001F0000001F0 +000003F0000003F0000003E0000003E0000007E0000007E0000007C3E00007CFF8000FDC +3E000FF81F000FF00F000FE00F801FC00F801F800F801F800FC01F000FC03F000FC03F00 +0FC03E000FC03E000FC07E001FC07E001F807C001F807C001F807C003F80FC003F00F800 +3F00F8003F00F8007E00F8007E00F800FC00F800FC007801F8007801F0007803E0003C07 +C0003C0F80001E1F00000FFC000003F000001A3578B323>I<0000FC000007FF00001F07 +80003E03C000FC01C001F803C003F007C007E00FC007C00FC00FC00FC01F8007001F8000 +003F0000003F0000003F0000007F0000007E0000007E0000007E000000FE000000FC0000 +00FC000000FC000000FC0000007C0000C07C0001E07C0001E07C0003C03E000F803E001F +001F007C000F81F00003FFC00000FE00001B2278A023>I<0000000FC0000003FFC00000 +03FFC0000003FF800000001F800000001F800000001F800000001F000000001F00000000 +3F000000003F000000003E000000003E000000007E000000007E000000007C000000007C +00000000FC00000000FC000003F0F800000FF8F800003E1DF800007C0FF80000F807F000 +01F007F00003E007F00007E003F0000FC003E0000FC003E0001F8007E0001F8007E0003F +0007C0003F0007C0003F000FC0007F000FC0007E000F80007E000F80007E001F8000FE00 +1F8000FC001F0000FC001F0600FC003F0700FC003F0F00FC003E0E00FC007E0E007C007E +1E007C00FE1C007C01FC1C003C03FC3C003E07BE38001F0E1E780007FC0FF00001F003C0 +00223578B327>I<0003F800000FFE00003E0F0000F8078001F0038003E0038007C00380 +0FC003801F8003801F8007803F0007003F000F007E003E007E03F8007FFFE000FFFE0000 +FC000000FC000000FC000000FC000000F8000000F8000000F8000000F8000000F8000180 +F80003C0F80003C07C0007807C001F003C003E001E00F8000F03E00007FF800001FC0000 +1A2277A023>I<0000001F000000007FC0000000F0E0000001F0F0000003E3F0000003E3 +F0000007C3F0000007C3E0000007C1C000000FC00000000F800000000F800000000F8000 +00000F800000001F800000001F000000001F000000001F000000001F000000003F000000 +003E0000001FFFFE00001FFFFE00001FFFFE0000007E000000007C000000007C00000000 +7C000000007C00000000FC00000000F800000000F800000000F800000000F800000000F8 +00000001F800000001F000000001F000000001F000000001F000000003F000000003E000 +000003E000000003E000000003E000000007E000000007C000000007C000000007C00000 +000FC00000000FC00000000F800000000F800000000F800000001F800000001F00000000 +1F000000001F000000003F000000003E000000383E0000007E3C0000007E3C000000FE78 +000000FC78000000F8F000000078E00000003FC00000000F00000000244582B418>I<00 +003F000000FF800003E1E60007C0FF000F807F001F007F003E007F007E003F00FC003E00 +FC003E01F8007E01F8007E03F0007C03F0007C03F000FC07F000FC07E000F807E000F807 +E001F807E001F80FC001F00FC001F00FC003F007C003F007C003E007C007E007C00FE007 +C01FE003E03FC001E07FC001F0FFC0007FCFC0001F0F8000000F8000001F8000001F8000 +001F0000001F0000003F0000003E0038003E007E007E007E00FC00FE00F800FC01F00078 +03E0007C0F80001FFF000007F8000020317CA023>I<000FC0000003FFC0000003FFC000 +0003FF800000001F800000001F800000001F800000001F000000001F000000003F000000 +003F000000003E000000003E000000007E000000007E000000007C000000007C00000000 +FC00000000FC00000000F83F800000F8FFE00001FBE0F00001FF80F80001FF00780001FE +007C0003FC007C0003F8007C0003F0007C0003F0007C0007E000FC0007E000F80007C000 +F80007C000F8000FC001F8000FC001F0000F8001F0000F8001F0001F8003F0001F8003E0 +001F0007E0001F0007C0C03F0007C1E03F000FC1C03E000F81C03E000F81C07E000F83C0 +7E000F03807C000F07807C000F0700FC000F0E00FC000F1E00F80007F800700001F00023 +357BB327>I<0001800007E00007E0000FE00007C0000380000000000000000000000000 +00000000000000000000000000000000000000000001F00003FC000F1E000E1E001C1E00 +3C1E00381E00783E00703E00703E00707E00F07C0060FC0000F80000F80001F80001F000 +01F00003F00003E00003E00007E0C007C1E00FC1C00F81C00F81C00F83C00F03800F0780 +0F07000F0E000F1E0007F80001F00013337AB118>I<000000380000007C000000FC0000 +00FC000000FC000000700000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000003E000000FF800001E3C0000383E00007 +01E0000F01E0000E03E0001C03E0003C03E0003803E0003807E0007807E0003007C00000 +07C000000FC000000FC000000F8000000F8000001F8000001F8000001F0000001F000000 +3F0000003F0000003E0000003E0000007E0000007E0000007C0000007C000000FC000000 +FC000000F8000000F8000001F8000001F8000001F0000001F0000003F0000003E0003803 +E0007E07C0007E07C000FE0F8000FC1F0000F83E0000787C00003FF000000F8000001E42 +83B118>I<000FC00001FFC00003FFC00003FF8000001F8000001F8000001F8000001F00 +00001F0000003F0000003F0000003E0000003E0000007E0000007E0000007C0000007C00 +0000FC000000FC000000F8007800F801FE01F8078F01F80E0F01F01C3F01F0383F03F070 +3F03F0E03E03E1C01C03E3800007E7000007EE000007DC000007F800000FF800000FFF00 +000F9FC0000F83F0001F81F0001F80F8001F00F8001F00F80C3F00F81E3F00F81C3E00F8 +1C3E00F81C7E00F83C7E00F8387C00F8387C00F878FC007870FC0078E0F8003FC070000F +8020357BB323>I<003F07FF0FFF0FFE007E007E007E007C007C00FC00FC00F800F801F8 +01F801F001F003F003F003E003E007E007E007C007C00FC00FC00F800F801F801F801F00 +1F003F003F003E003E007E007E007C007C18FC1CFC3CF838F838F878F870F070F0F0F8E0 +79E03FC00F00103579B314>I<03C003F8007F00000FF00FFE01FFC0001E783C1F07C1E0 +001C7CF00F8F01F0003C3DE0079E00F000383FC007FC00F800387F8007F800F800707F00 +07F000F800707F0007E000F800707E0007E000F800F0FC000FC001F800E0FC000FC001F0 +0060F8000F8001F00000F8000F8001F00001F8001F8003F00001F8001F8003E00001F000 +1F0003E00001F0001F0003E00003F0003F0007E00003F0003F0007C00003E0003E000FC0 +0003E0003E000F818007E0007E000F83C007E0007E001F838007C0007C001F038007C000 +7C001F03800FC000FC001F07800FC000FC003E07000F8000F8003E0F000F8000F8001E0E +001F8001F8001E1C001F8001F8001E3C001F0001F0000FF0000E0000E00003E0003A227A +A03F>I<03C007F0000FF01FFC001E787C1E001C7CF01F003C3DE00F00383FC00F80387F +800F80787F000F80707E000F80707E000F80F0FC001F80E0FC001F0060F8001F0000F800 +1F0001F8003F0001F8003E0001F0003E0001F0003E0003F0007E0003F0007C0003E000FC +0003E000F81807E000F83C07E001F83807C001F03807C001F0380FC001F0780FC001E070 +0F8001E0F00F8001E0E01F8001E1C01F8001E3C01F0000FF000E00003E0026227AA02B> +I<0000FC000007FF00001F07C0003E03E000FC01F001F801F003F000F807E000F807C000 +F80FC000F81F8000FC1F8000FC3F0000FC3F0000FC3F0001FC7F0001F87E0001F87E0001 +F87E0003F8FE0003F0FC0003F0FC0003F0FC0007E0FC0007E07C000FC07C000F807C001F +807C003F003E007E003E00FC001F01F0000F83E00003FF800000FC00001E2278A027>I< +001E007C00007F81FF0000F3C387C000E3EF03E001E1FE01E001C1FC01F001C3F801F003 +C3F001F00383F001F80383E001F80787E001F80707E001F80307C001F80007C001F8000F +C003F8000FC003F0000F8003F0000F8003F0001F8007F0001F8007E0001F0007E0001F00 +07E0003F000FC0003F000FC0003E001F80003E001F80007E003F00007F003E00007F007C +00007F00F80000FF81F00000FDC3E00000F8FF800000F87E000001F800000001F8000000 +01F000000001F000000003F000000003F000000003E000000003E000000007E000000007 +E000000007C0000000FFFF000000FFFF000000FFFF00000025307FA027>I<0003F01800 +0FF838003E1C78007C0EF800F807F001F007F003E007F007E003F00FC003E00FC003E01F +8003E01F8007E03F0007C03F0007C03F0007C07F000FC07E000F807E000F807E000F80FE +001F80FC001F00FC001F00FC001F00FC003F00FC003E00FC007E007C007E007C00FE007C +01FC003C03FC003E07FC001F0EFC0007FCF80001F0F8000000F8000001F8000001F00000 +01F0000001F0000003F0000003E0000003E0000007E0000007E0000007C00001FFFF0001 +FFFF0001FFFE001D3078A023>I<03C00FC00FF03FF01E78F0781C7DE03C3C3FC0FC383F +80FC387F00FC787F00F8707E0070707E0000F0FC0000E0FC000060F8000000F8000001F8 +000001F8000001F0000001F0000003F0000003F0000003E0000003E0000007E0000007E0 +000007C0000007C000000FC000000FC000000F8000000F8000001F8000001F8000001F00 +00000E0000001E227AA020>I<0003F0001FFC003C1E00780F00F00701E00701E00F03E0 +1F03C01F03C01F03E00403E00003F00003FF8003FFE001FFF000FFF8007FFC0007FC0000 +FE00007E00003E38003EFC003CFC003CFC003CFC007CF00078E000F0F001F07803E03C0F +801FFE0003F80018227AA01F>I<000300000F80000F80000F80001F80001F80001F0000 +1F00003F00003F00003E00003E00007E00007E00007C007FFFF87FFFF8FFFFF800F80000 +F80001F80001F80001F00001F00003F00003F00003E00003E00007E00007E00007C00007 +C0000FC0000FC0000F80000F80601F80F01F80E01F00E01F01E01F01C01F03C01E03801E +07001E0F000F1E0007F80001E00015307AAE19>I<01F000000003FC0007000F1E000F00 +0E1E001F001C1E001F003C1E001F00381E003F00783E003E00703E003E00703E003E0070 +7E007E00F07C007C0060FC007C0000F8007C0000F800FC0001F800F80001F000F80001F0 +00F80001F001F80003F001F00003E001F00003E001F06003E003F07003E003E0F007C003 +E0E007C003E0E003C007E1E003C007E1C003E00FC1C003E01FC3C001E03FE38001F071E7 +80007FE0FF00001F803C0024227AA029>I<00F0003803FC00FC0F1E00FC0E1E00FC1C1E +00FC3C1E00FC381E007C783E007C703E003C703E003C707E003CF07C003860FC003800F8 +003800F8007801F8007001F0007001F0007001F000F003F000E003E000E003E000E003E0 +01C003E001C003C003C003C0038003C0078003C0070003E00E0003E00E0001F01C0000F8 +7800007FE000001F80001E227AA023>I<01F00000003803FC000E00FC0F1E001E00FC0E +1E003E00FC1C1E003E00FC3C1E003E00FC381E007E007C783E007C007C703E007C003C70 +3E007C003C707E00FC003CF07C00F8003860FC00F8003800F800F8003800F801F8007801 +F801F0007001F001F0007001F001F0007001F003F000F003F003F000E003E003E000E003 +E003E000E003E003E001E003E003E001C003C003C001C003C007C0038003C007C0038003 +E00FE0078003E00FE0070003E01FE00E0001F03DF01E0000F878F83C00003FF03FF00000 +0FC00FC0002E227AA033>I<001F007C00007FC1FF0001E1E7878003C0F703C00380FE0F +C00700FE0FC00F00FC0FC00E00FC0F801E00F807001C00F800001C01F800003C01F00000 +1801F000000001F000000003F000000003E000000003E000000003E000000007E0000000 +07E000000007C000000007C00600000FC00F00000FC00E00000F800E00380F801E007C1F +801C00FC1F803C00FC1F803800FC3F807000F07FC0E00070F3C3C0003FE1FF80000F807E +000022227CA023>I<00F0000003FC00070F1E000F0E1E001F1C1E001F3C1E001F381E00 +3F783E003E703E003E703E003E707E007EF07C007C60FC007C00F8007C00F800FC01F800 +F801F000F801F000F801F001F803F001F003E001F003E001F003E003F003E003E007C003 +E007C003E003C007E003C007C003E00FC003E01FC001E03FC001F07F80007FEF80001F8F +8000001F8000001F0000001F0000003F003E003E007E007E007E007C007E00F8007C00F0 +007001F0007003E000380780003C1F00000FFC000007F0000020317AA025>I +E /Fk 16 122 df<7FFFFFFFFFFCFFFFFFFFFFFEFFFFFFFFFFFE7FFFFFFFFFFC2F047A94 +3C>0 D<700000000000FC0000000000FF00000000007FC0000000001FF00000000007FC +0000000001FF00000000007FC0000000001FF00000000007FC0000000001FF0000000000 +7FC0000000001FF00000000007FC0000000001FF00000000007FC0000000001FF0000000 +0007FC0000000001FF00000000007FC0000000001FF00000000007FC0000000001FE0000 +000001FE0000000007FC000000001FF0000000007FC000000001FF0000000007FC000000 +001FF0000000007FC000000001FF0000000007FC000000001FF0000000007FC000000001 +FF0000000007FC000000001FF0000000007FC000000001FF0000000007FC000000001FF0 +000000007FC000000000FF0000000000FC00000000007000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000007FFFFFFFFFFCFFFF +FFFFFFFEFFFFFFFFFFFE7FFFFFFFFFFC2F3E7AB03C>21 D<000000000000700000000000 +000000F00000000000000000F00000000000000000F80000000000000000780000000000 +0000007800000000000000007C00000000000000003C00000000000000003E0000000000 +0000001F00000000000000001F00000000000000000F800000000000000007C000000000 +00000007E00000000000000003F00000000000000001F80000000000000000FC00000000 +000000007F007FFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFF07FFFFF +FFFFFFFFFFC0000000000000007F0000000000000000FC0000000000000001F800000000 +00000003F00000000000000007E00000000000000007C0000000000000000F8000000000 +0000001F00000000000000001F00000000000000003E00000000000000003C0000000000 +0000007C0000000000000000780000000000000000780000000000000000F80000000000 +000000F00000000000000000F0000000000000000070000044287CA64D>33 +D<0000C000000001E000000001E000000001E000000001E000000001E000000001E00000 +0001E000000001E000000001E000000001E000000001E000000001E000000001E0000000 +01E000000001E000000001E000000001E000000001E000000001E000000001E000000001 +E000000001E000000001E000000001E000000001E000000001E000000001E000000001E0 +00000001E000000001E000000001E000000001E000000001E000000001E000000001E000 +000001E000000001E000000001E000000001E000000001E000000001E000000001E00000 +0001E000000001E000008001E00040F001E003C0FC01E00FC0FF01E03FC07FC1E0FF800F +E1E1FC0003F1E3F00000F9E7C000007DEF8000003FFF0000001FFE0000000FFC0000000F +FC00000007F800000003F000000003F000000001E000000001E000000001E000000000C0 +00000000C000000000C0000022437EB326>35 D<0000000000F00000000000000000F000 +00000000000000F800000000000000007C00000000000000003C00000000000000003E00 +000000000000001F00000000000000001F00000000000000000F800000000000000007C0 +0000000000000003E000007FFFFFFFFFFFF00000FFFFFFFFFFFFF80000FFFFFFFFFFFFFC +00007FFFFFFFFFFFFF00000000000000001F80000000000000000FE00000000000000003 +F00000000000000001FE00000000000000007F80000000000000001FF000000000000000 +1FF0000000000000007F8000000000000001FE0000000000000003F0000000000000000F +E0000000000000001F80007FFFFFFFFFFFFF0000FFFFFFFFFFFFFC0000FFFFFFFFFFFFF8 +00007FFFFFFFFFFFF00000000000000003E00000000000000007C0000000000000000F80 +000000000000001F00000000000000001F00000000000000003E00000000000000003C00 +000000000000007C0000000000000000F80000000000000000F00000000000000000F000 +0000442A7CA74D>41 D<0000000FF80000007FFC000003FFFE00000FFFFE00003F03FE00 +007801FE0000E000FE0003C000FE00078000FC000F0000FC001E0000FC003E0001F8007C +0001F800F80001F000F80003F001F00003E003F00007E003E000078007E0000F0007C000 +00000FC00000000FC00000001F800000001F800000001F800000003F000000003F000000 +003F000000007F000000007E000000007E000000007E00000000FE00000000FE00000000 +FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FF00000000FF +00000070FF000000F0FF000003E07F800007C07F800007807FC0000F007FE0001E003FF0 +003C003FFC00F0001FFF03E0000FFFFF800007FFFF000001FFF80000007FC0000027377F +B429>67 D<0000003FF8000001FFFE000007FFFF00001FFFFF00007C03FF0000F000FF00 +03C0007F000780007E000F80007C001F000078003F0000F0003E0001E0007E000000007E +00000000FE00000000FE00000000FE00000000FF00000000FF00000000FF80000000FFC0 +0000007FF00000007FFE0000003FFFF000001FFFE0000007FFC0000001FF00000007E000 +00000F000000003C000000007800000000F000000001E000000003E000000007C0000000 +0F800000000F800000001F000000003F000000003F000000007E000000007E000001C07E +000003C0FE00000F80FE00001F00FF00001E00FF00003C00FF80007800FFC000F0007FF0 +01C0007FFC0F80003FFFFF00001FFFFC000007FFE0000001FF00000028377DB429>69 +D<000070000003F00001F000001FF80007F000007FF8001FF00001F1F8007FF00007C0F8 +00F7E0001F00F801C7E0003C00F80007E000F000F0000FE001E000C0000FE00380000000 +0FE00F000000000FE01E000000000FE038000000000FC0F0000000000FC1E0000000000F +C3C0000000001FC780000000001FCF00000000001F9E00000000001FBE00000000001FBC +00000000003FFC00000000003F7C00000000003F7C00000000003F7E00000000007F7E00 +000000007E7E00000000007E3E00000000007E3F0000000000FC3F0000000000FC3F0000 +000000FC1F8000000001FC1F8000000001F81FC000000001F80FC000000001F80FC00000 +0003F007E000000003F007E000000003F007F000000007E003F000000007E003F8000000 +07E001F80000000FC001FC0000000FC000FC0000180FC000FE0000781F80007F0000F01F +80007F0001F01F80003F8001E03F00001FC003C03F00001FE007803E00000FF00F007E00 +0007FC3C007C000003FFF800F8000001FFE000E00000007F000035377EB43A>75 +D<00000C00000000001E00000000003F00000000003F00000000007F80000000007F8000 +0000007F8000000000FFC000000000FFC000000001F3E000000001F3E000000003E1F000 +000003E1F000000003C0F000000007C0F800000007C0F80000000F807C0000000F807C00 +00001F003E0000001F003E0000001E001E0000003E001F0000003E001F0000007C000F80 +00007C000F800000F80007C00000F80007C00000F00003C00001F00003E00001F00003E0 +0003E00001F00003E00001F00007C00000F80007C00000F8000780000078000F8000007C +000F8000007C001F0000003E001F0000003E003E0000001F003E0000001F003C0000000F +007C0000000F807C0000000F80F800000007C0F800000007C0F000000003C06000000001 +802A307CAD33>94 D<000007E000003FE00000FE000003F8000007F000000FE000000FC0 +00001FC000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 +00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 +00001F8000001F8000001F8000001F8000001F8000001F8000003F8000003F0000007E00 +0000FC000003F800007FE00000FF0000007FE0000003F8000000FC0000007E0000003F00 +00003F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 +00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 +00001F8000001F8000001F8000001F8000001F8000001F8000001FC000000FC000000FE0 +000007F0000003F8000000FE0000003FE0000007E01B4B7BB726>102 +DI<0001800003C00007C00007C000078000 +0F80000F80001F00001F00001E00003E00003E00007C00007C0000780000F80000F80001 +F00001F00001E00003E00003E00007C00007C0000780000F80000F80001F00001F00001E +00003E00003E00007C00007C0000780000F80000F80000F80000F800007800007C00007C +00003E00003E00001E00001F00001F00000F80000F800007800007C00007C00003E00003 +E00001E00001F00001F00000F80000F800007800007C00007C00003E00003E00001E0000 +1F00001F00000F80000F800007800007C00007C00003C0000180124A79B71E>I<600000 +F00000F80000F800007800007C00007C00003E00003E00001E00001F00001F00000F8000 +0F800007800007C00007C00003E00003E00001E00001F00001F00000F80000F800007800 +007C00007C00003E00003E00001E00001F00001F00000F80000F800007800007C00007C0 +0007C00007C0000780000F80000F80001F00001F00001E00003E00003E00007C00007C00 +00780000F80000F80001F00001F00001E00003E00003E00007C00007C0000780000F8000 +0F80001F00001F00001E00003E00003E00007C00007C0000780000F80000F80000F00000 +600000124A7CB71E>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F060044B78B715>I<00FE0003FF800F81E01F00703E00383E +00187C003C7C00FCF800FCF800FCF800FCF80078F80000F80000F800007C00007C00003E +00001E00001F000007800003C00000F00001FC0007CF000F07801E03E03E01F07C00F87C +0078FC007CF8007CF8003EF8003EF8003EF8003EF8003E7C003E7C007E3C007C3E007C1F +00F80F80F003C1E001E7C0007F00001E000007800003C00001F00000F00000F800007C00 +007C00003E00003E00003E3C003E7E003E7E003E7E003E7E007C78007C3000F83800F81C +01F00F03E003FF8000FE0017457BB422>120 D<001E0000003F0000003F0000003F0000 +003F0000003F0000003F0000003F0000003F0000001E0000001E0000001E0000001E0000 +001E0000001E0000001E0000000C0000000C00007C0C0F80FFCCFFC0FFFFFFC0FFFFFFC0 +FFCCFFC07C0C0F80000C0000001E0000001E0000001E0000001E0000001E0000003F0000 +003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000 +003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000 +003F0000003F0000003F0000001E0000001E0000001E0000001E0000001E0000001E0000 +001E0000001E0000001E0000001E0000001E0000001E0000001E0000000C0000000C0000 +000C0000000C0000000C00001A467CB423>I E /Fl 78 125 df0 D<00003FE00FE00001FFF83FF80007E01EF83C00 +1F800FF07E003F001FE0FE007E003FE0FE00FC003FC0FE01F8003FC0FE01F8003FC03803 +F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003 +F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F8000FF +FFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC003F0001F800003F0001F800003F0001F800003 +F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003 +F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003 +F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003 +F0001F800003F0001F800003F0001F800003F0001F800007F8003FC000FFFF83FFFF00FF +FF83FFFF00FFFF83FFFF002F357FB42D>11 D<00001FE0000000FFFC000003F01E00000F +C00780001F800780003F000FC0007E001FC000FC001FC000FC001FC001F8001FC001F800 +0F8001F800000001F800000001F800000001F800000001F800000001F800000001F80000 +0001F800000001F800000001F8000FC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC001F8001FC0 +01F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001 +F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8 +000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F800 +0FC001F8000FC001F8000FC003FC001FE07FFFC1FFFF7FFFC1FFFF7FFFC1FFFF28357FB4 +2B>I<00001FF8000000FFFFC00003F00FC0000FC01FC0001F801FC0003F001FC0007E00 +1FC000FC001FC000FC000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000F +C001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC0 +FFFFFFFFC0FFFFFFFFC0FFFFFFFFC001F8000FC001F8000FC001F8000FC001F8000FC001 +F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8 +000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F800 +0FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC003FC001F +E07FFFE3FFFF7FFFE3FFFF7FFFE3FFFF28357FB42B>I<00001FE000FF00000000FFFC07 +FFE0000003F01E1F80F000000FC0077E003C00001F8007FC003C00003F001FF8007E0000 +7E001FF000FE0000FC001FE000FE0000FC001FE000FE0001F8001FC000FE0001F8000FC0 +007C0001F8000FC000000001F8000FC000000001F8000FC000000001F8000FC000000001 +F8000FC000000001F8000FC000000001F8000FC000000001F8000FC000000001F8000FC0 +00000001F8000FC0007E00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE0001 +F8000FC000FE0001F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0 +007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001 +F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0 +007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001 +F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0007E0001F8000FC0 +007E0001F8000FC0007E0001F8000FC0007E0003FC001FE000FF007FFFC1FFFE0FFFF87F +FFC1FFFE0FFFF87FFFC1FFFE0FFFF83D357FB440>I<3C00F07E01F8FF03FCFF03FCFF83 +FEFF83FE7F81FE3D80F601800601800601800601800603800E03000C03000C07001C0600 +180E00380C00301C00703800E07001C060018017177EB326>34 D<000000300018000000 +0078003C0000000078003C00000000F8007C00000000F8007C00000000F0007800000000 +F0007800000000F0007800000001F000F800000001F000F800000001E000F000000001E0 +00F000000003E001F000000003E001F000000003C001E000000003C001E000000003C001 +E000000007C003E000000007C003E0000000078003C0000000078003C0000000078003C0 +0000000F8007C0007FFFFFFFFFFFFCFFFFFFFFFFFFFEFFFFFFFFFFFFFE7FFFFFFFFFFFFC +00003E001F000000003E001F000000003C001E000000003C001E000000003C001E000000 +007C003E000000007C003E0000000078003C0000000078003C0000000078003C00000000 +F8007C00000000F8007C00007FFFFFFFFFFFFCFFFFFFFFFFFFFEFFFFFFFFFFFFFE7FFFFF +FFFFFFFC0003E001F000000003C001E000000003C001E000000007C003E000000007C003 +E0000000078003C0000000078003C00000000F8007C00000000F8007C00000000F000780 +0000000F0007800000001F000F800000001F000F800000001E000F000000001E000F0000 +00003E001F000000003E001F000000003C001E000000003C001E000000007C003E000000 +007C003E0000000078003C0000000078003C0000000030001800000037437CB340>I<3C +007E00FF00FF00FF80FF807F803D800180018001800180038003000300070006000E000C +001C0038007000600009177AB315>39 D<0000C00001C0000380000F00000E00001C0000 +3C0000780000F00000F00001E00003C00003C00007C0000780000F80000F00001F00001F +00001E00003E00003E00003E00003C00007C00007C00007C00007C00007C0000F80000F8 +0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8 +0000F80000F800007C00007C00007C00007C00007C00003C00003E00003E00003E00001E +00001F00001F00000F00000F800007800007C00003C00003C00001E00000F00000F00000 +7800003C00001C00000E00000F000003800001C00000C0124A79B71E>II<000E0000001F0000001F0000001F0000001F0000001F0000001F000070 +0E01C0F80E03E0FE0E0FE0FF0E1FE07F8E3FC01FEEFF0003FFF80000FFE000003F800000 +3F800000FFE00003FFF8001FEEFF007F8E3FC0FF0E1FE0FE0E0FE0F80E03E0700E01C000 +1F0000001F0000001F0000001F0000001F0000001F0000000E00001B207BB726>I<0000 +0060000000000000F0000000000000F0000000000000F0000000000000F0000000000000 +F0000000000000F0000000000000F0000000000000F0000000000000F0000000000000F0 +000000000000F0000000000000F0000000000000F0000000000000F0000000000000F000 +0000000000F0000000000000F0000000000000F0000000000000F0000000000000F00000 +00000000F0000000000000F00000007FFFFFFFFFFFC0FFFFFFFFFFFFE0FFFFFFFFFFFFE0 +7FFFFFFFFFFFC0000000F0000000000000F0000000000000F0000000000000F000000000 +0000F0000000000000F0000000000000F0000000000000F0000000000000F00000000000 +00F0000000000000F0000000000000F0000000000000F0000000000000F0000000000000 +F0000000000000F0000000000000F0000000000000F0000000000000F0000000000000F0 +000000000000F0000000000000F00000000000006000000033327CAB3C>I<3C007E00FF +00FF00FF80FF807F803D800180018001800180038003000300070006000E000C001C0038 +007000600009177A8715>II<3C7EFF +FFFFFF7E3C08087A8715>I<0000003000000078000000F8000000F8000000F0000001F0 +000001F0000001E0000003E0000003E0000003C0000007C0000007C00000078000000F80 +00000F8000000F0000001F0000001F0000003E0000003E0000003C0000007C0000007C00 +000078000000F8000000F8000000F0000001F0000001F0000001E0000003E0000003E000 +0003C0000007C0000007C000000F8000000F8000000F0000001F0000001F0000001E0000 +003E0000003E0000003C0000007C0000007C00000078000000F8000000F8000000F00000 +01F0000001F0000001E0000003E0000003E0000007C0000007C00000078000000F800000 +0F8000000F0000001F0000001F0000001E0000003E0000003E0000003C0000007C000000 +7C00000078000000F8000000F8000000F0000000600000001D4B7CB726>I<000FE00000 +7FFC0000F83E0003E00F8007C007C0078003C00F8003E01F0001F01F0001F03F0001F83F +0001F83E0000F87E0000FC7E0000FC7E0000FC7E0000FC7E0000FCFE0000FEFE0000FEFE +0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE +0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FE7E0000FC7E0000FC7E +0000FC7E0000FC7E0000FC3F0001F83F0001F83F0001F81F0001F01F0001F00F8003E007 +C007C007C007C003E00F8000F83E00007FFC00000FE0001F347DB126>I<00070000000F +0000001F0000007F000007FF0000FFFF0000FFBF0000F83F0000003F0000003F0000003F +0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F +0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F +0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F +0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000007F +80007FFFFF807FFFFF807FFFFF8019327AB126>I<003FC00000FFF00003FFFC000F80FF +001E007F801C003FC038001FE070000FE070000FF0600007F0FC0007F0FE0007F8FF0007 +F8FF0003F8FF0003F8FF0003F87E0007F83C0007F8000007F8000007F0000007F000000F +F000000FE000001FC000001FC000003F8000003F0000007E000000FC000001F8000001F0 +000003E0000007C000000F8000001F0000003E0000003C00000078001800F0001801E000 +1803C00030078000300F0000301C0000701FFFFFF03FFFFFF07FFFFFF0FFFFFFE0FFFFFF +E0FFFFFFE01D327CB126>I<001FE00000FFFC0001FFFF0007E03F800F001FC01E000FE0 +1C0007F03F0007F03F8007F83F8003F83FC003F83F8003F83F8003F81F0007F8000007F8 +000007F0000007F000000FE000000FC000001FC000003F8000007E000001F800007FE000 +007FFC0000003F0000001FC000000FE0000007F0000007F8000003F8000003FC000001FC +000001FE000001FE000001FE7E0001FEFF0001FEFF0001FEFF0001FEFF0001FEFF0001FC +FE0003FC780003FC700007F8380007F03C000FF01F001FE00FE03F8003FFFF0000FFFC00 +001FE0001F347DB126>I<000001C000000001C000000003C000000007C000000007C000 +00000FC00000001FC00000001FC00000003FC00000007FC00000006FC0000000CFC00000 +01CFC00000038FC00000030FC00000070FC000000E0FC000000C0FC000001C0FC0000038 +0FC00000300FC00000700FC00000E00FC00000C00FC00001800FC00003800FC00003000F +C00006000FC0000E000FC0000C000FC00018000FC00038000FC00030000FC00060000FC0 +00E0000FC000FFFFFFFF80FFFFFFFF80FFFFFFFF8000000FC00000000FC00000000FC000 +00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000001FE00000 +07FFFF800007FFFF800007FFFF8021337EB226>I<0C0000C00FC00FC00FFFFF800FFFFF +000FFFFE000FFFFC000FFFF0000FFFC0000C1800000C0000000C0000000C0000000C0000 +000C0000000C0000000C0000000C0000000C0000000C0FC0000C7FF8000CF07C000FC03F +000F001F800F000FC00E000FC00C0007E00C0007E0000007F0000003F0000003F0000003 +F8000003F8000003F8000003F8180003F87E0003F8FE0003F8FE0003F8FE0003F8FE0003 +F0FE0007F0F80007F0600007E0700007E070000FC038001FC03C001F801E007F000F80FE +0007FFF80001FFE000003F80001D347CB126>I<0000FE000007FF80001FFFE0003F00F0 +007C007001F801F801F003F803E003F807E003F80FC003F80FC001F01F8000001F800000 +3F0000003F0000003F0000007F0000007E0000007E07F0007E1FFC00FE381F00FE700F80 +FEE007C0FFC003E0FF8003F0FF8001F8FF0001F8FF0001FCFF0000FCFF0000FCFE0000FE +FE0000FEFE0000FEFE0000FEFE0000FE7E0000FE7E0000FE7E0000FE7E0000FE7F0000FE +3F0000FC3F0000FC1F0001FC1F8001F80F8001F00FC003F007C007E003E00FC001F81F80 +00FFFF00003FFC00000FE0001F347DB126>I<300000003C0000003FFFFFFF3FFFFFFF3F +FFFFFF7FFFFFFE7FFFFFFE7FFFFFFC700000386000003060000070600000E0C00000C0C0 +0001C0C0000380000007000000060000000E0000001C0000001800000038000000700000 +0070000000E0000000E0000001C0000003C0000003C0000003C000000780000007800000 +0F8000000F8000000F8000001F8000001F0000001F0000003F0000003F0000003F000000 +3F0000003F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000000 +7F0000007F0000001C000020347CB126>I<000FE000007FFC0000FFFF0003F01F8007C0 +07C00F0003E00E0001F01E0000F01C0000F83C0000783C0000783C0000783E0000783E00 +00783F0000F83F8000F03FC001F01FF001E01FF803C00FFE078007FF0F0003FFDE0001FF +F80000FFF800003FFE00003FFF0000F7FFC003E3FFE00780FFF00F007FF81E001FF83E00 +07FC3C0003FC780001FC7800007EF800007EF000003EF000003EF000001EF000001EF000 +001EF800001EF800003C7800003C7C0000783E0000781F0000F00F8003E007F01FC001FF +FF00007FFC00001FE0001F347DB126>I<000FE000007FF80000FFFE0003F83F0007E00F +800FC007C01F8007E01F8003F03F0003F07F0001F87E0001F87E0001F8FE0001FCFE0000 +FCFE0000FCFE0000FCFE0000FCFE0000FEFE0000FEFE0000FEFE0000FEFE0000FE7E0001 +FE7E0001FE7F0001FE3F0001FE3F0003FE1F8003FE0F8007FE07C00EFE03E01CFE01F038 +FE007FF0FE001FC0FC000000FC000001FC000001FC000001F8000001F8000001F0000003 +F01F0003E03F8007E03F8007C03F800FC03F801F803F003F001C007E001F01FC000FFFF0 +0003FFC00000FF00001F347DB126>I<3C7EFFFFFFFF7E3C000000000000000000000000 +000000003C7EFFFFFFFF7E3C08207A9F15>I<3C7EFFFFFFFF7E3C000000000000000000 +000000000000003C7EFEFFFFFF7F3F03030303070606060E0C1C38307060082F7A9F15> +I<7FFFFFFFFFFFC0FFFFFFFFFFFFE0FFFFFFFFFFFFE07FFFFFFFFFFFC000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +00000000007FFFFFFFFFFFC0FFFFFFFFFFFFE0FFFFFFFFFFFFE07FFFFFFFFFFFC033147C +9C3C>61 D<000000E0000000000000E0000000000000E0000000000001F0000000000001 +F0000000000003F8000000000003F8000000000003F8000000000007FC000000000007FC +000000000007FC00000000000DFE00000000000CFE00000000000CFE0000000000187F00 +00000000187F0000000000187F0000000000303F8000000000303F8000000000703FC000 +000000601FC000000000601FC000000000E01FE000000000C00FE000000000C00FE00000 +0001800FF0000000018007F0000000018007F0000000030003F8000000030003F8000000 +030003F8000000060001FC000000060001FC0000000E0001FE0000000FFFFFFE0000000F +FFFFFE0000001FFFFFFF0000001800007F0000001800007F0000003000007F8000003000 +003F8000003000003F8000006000001FC000006000001FC000006000001FC00000C00000 +0FE00000C000000FE00001C000000FF00001C0000007F00003E0000007F0001FF000000F +F800FFFE0001FFFFE0FFFE0001FFFFE0FFFE0001FFFFE033367DB53A>65 +DI<000003FE000C00003FFF +801C0000FFFFE01C0003FE01F83C000FF0003C7C001FC0000EFC007F800007FC00FE0000 +03FC01FC000001FC03FC000000FC03F8000000FC07F00000007C0FE00000007C0FE00000 +003C1FC00000003C1FC00000001C3FC00000001C3F800000001C7F800000000C7F800000 +000C7F800000000C7F000000000CFF0000000000FF0000000000FF0000000000FF000000 +0000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF000000 +0000FF00000000007F00000000007F800000000C7F800000000C7F800000000C3F800000 +000C3FC00000000C1FC00000001C1FC0000000180FE0000000180FE00000003807F00000 +003003F80000007003FC000000E001FC000000E000FE000001C0007F80000380001FC000 +0F00000FF0001E000003FE00FC000000FFFFF00000003FFFC000000003FE00002E377CB4 +37>IIII72 DI<007FFFFF007FFFFF007FFFFF00003FE000001FC000001FC000001FC00000 +1FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00000 +1FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00000 +1FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00000 +1FC000001FC000001FC000001FC000001FC07E001FC0FF001FC0FF001FC0FF001FC0FF00 +1FC0FF003F80FE003F8060003F0070007F003800FE001C01FC000F03F00003FFC00000FF +000020357DB227>IIIII<000007FC00000000007FFF +C000000001FC07F000000007E000FC0000000F80003E0000003F00001F8000007E00000F +C00000FC000007E00001F8000003F00003F0000001F80003F0000001F80007E0000000FC +000FE0000000FE000FC00000007E001FC00000007F001FC00000007F003F800000003F80 +3F800000003F807F800000003FC07F800000003FC07F000000001FC07F000000001FC0FF +000000001FE0FF000000001FE0FF000000001FE0FF000000001FE0FF000000001FE0FF00 +0000001FE0FF000000001FE0FF000000001FE0FF000000001FE0FF000000001FE0FF0000 +00001FE07F000000001FC07F800000003FC07F800000003FC07F800000003FC03F800000 +003F803FC00000007F803FC00000007F801FC00000007F001FE0000000FF000FE0000000 +FE0007F0000001FC0007F0000001FC0003F8000003F80001F8000003F00000FC000007E0 +00007E00000FC000003F00001F8000001FC0007F00000007E000FC00000001FC07F00000 +00007FFFC00000000007FC00000033377CB43C>II82 +D<001FE00300007FFC070001FFFF070007F01FCF000F8003FF001F0000FF003E00007F00 +3E00003F007C00001F007C00001F007800000F00F800000700F800000700F800000700F8 +00000700FC00000300FC00000300FE00000300FE000000007F000000007FC00000003FF0 +0000003FFF0000001FFFF000000FFFFF000007FFFFC00003FFFFF00000FFFFF800003FFF +FC000003FFFE0000003FFF00000003FF00000000FF800000007F800000003F800000001F +C00000000FC0C000000FC0C000000FC0C0000007C0C0000007C0C0000007C0E0000007C0 +E0000007C0F000000F80F000000F80F800000F00FC00001F00FE00003E00FF00007E00FF +C000FC00F1FC03F800E0FFFFE000E01FFF8000C003FE000022377CB42B>I<7FFFFFFFFF +FE7FFFFFFFFFFE7FFFFFFFFFFE7F8007F001FE7C0007F0003E780007F0001E700007F000 +0E700007F0000E600007F00006E00007F00007E00007F00007E00007F00007C00007F000 +03C00007F00003C00007F00003C00007F00003C00007F00003C00007F00003000007F000 +00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F0000000000FF80000001FFFFFFC +00001FFFFFFC00001FFFFFFC0030337DB237>I87 D91 +D<03000C07001C0E00381C00701800603800E03000C07001C0600180600180E00380C003 +00C00300C00300C00300DE0378FF03FCFF83FEFF83FE7F81FE7F81FE3F00FC1E00781717 +74B326>II<007F80000003FFF000000F80FC00001C003E +00003F003F00003F801F80003F800FC0003F800FC0003F8007E0001F0007E000000007E0 +00000007E000000007E000000007E0000001FFE000001FFFE00000FF87E00003FC07E000 +0FF007E0001FC007E0003F8007E0007F8007E0007F0007E000FF0007E0C0FE0007E0C0FE +0007E0C0FE0007E0C0FE000FE0C0FE000FE0C0FF001FE0C07F003BE0C03F8071F1801FC1 +E1FF8007FFC0FF0000FE003C0022237DA126>97 D<03F0000000FFF0000000FFF0000000 +FFF000000007F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F03F800003F0FFE00003F3C0F80003F7007E0003FE003F0003FC00 +1F8003F8000FC003F0000FC003F00007E003F00007F003F00007F003F00003F003F00003 +F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003F8 +03F00003F803F00003F803F00003F003F00007F003F00007E003F00007E003F0000FC003 +F8000FC003FC001F8003EC003F0003CF007C00038381F8000301FFE00000007F00002535 +7EB32B>I<0007F800003FFF0000FC07C001F000E003E003F007C007F00FC007F01F8007 +F03F8007F03F0003E07F0000007F0000007E000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE0000007F0000007F0000003F0000 +183F8000181F8000381FC000300FC0007007E000E003F001C000FC0F80003FFE000007F0 +001D237EA122>I<0000003F0000000FFF0000000FFF0000000FFF000000007F00000000 +3F000000003F000000003F000000003F000000003F000000003F000000003F000000003F +000000003F000000003F000000003F000000003F000000003F000000003F000007F03F00 +003FFC3F0000FC0F3F0001F003BF0007E001FF000FC000FF001F80007F001F80003F003F +00003F003F00003F007F00003F007E00003F00FE00003F00FE00003F00FE00003F00FE00 +003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F007E0000 +3F007F00003F007F00003F003F00003F001F80007F001F80007F000FC000FF0007E001FF +8003F007BFFC00F81E3FFC003FFC3FFC000FE03F0026357DB32B>I<000FE000007FFC00 +00F83F0003F00F8007E00FC00FC007E01F8003E01F8003F03F0003F03F0001F07F0001F8 +7E0001F87E0001F8FE0001F8FE0001F8FFFFFFF8FFFFFFF8FE000000FE000000FE000000 +FE000000FE0000007E0000007F0000007F0000003F0000183F0000181F8000380F800030 +0FC0007007E000E001F003C000FC0F00003FFE000007F0001D237EA122>I<0001FC0000 +07FF00001F0780003E0FC0007C1FC000FC1FC001F81FC001F81FC003F8070003F0000003 +F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 +F0000003F00000FFFFF000FFFFF000FFFFF00003F0000003F0000003F0000003F0000003 +F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 +F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 +F0000003F0000003F0000007F800007FFFE0007FFFE0007FFFE0001A357FB417>I<0000 +001F00001FC07F8000FFF8E3C001F07FC7C007E03F03C00FC01F83800F800F80001F800F +C0001F0007C0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0 +001F0007C0001F800FC0000F800F80000FC01F800007E03F000007F07C00000EFFF80000 +0C1FC000001C000000001C000000001C000000001E000000001E000000001F000000000F +FFFE00000FFFFFC00007FFFFF00003FFFFFC0007FFFFFE001F0001FE003E00007F007C00 +003F007C00001F80F800000F80F800000F80F800000F80F800000F80F800000F80FC0000 +1F807C00001F003E00003E001F00007C000FC001F80003F007E00000FFFF8000001FFC00 +0022337EA126>I<03F0000000FFF0000000FFF0000000FFF000000007F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F01FC000 +03F07FF00003F1E0FC0003F3807C0003F7007E0003FE007E0003FC003F0003FC003F0003 +F8003F0003F8003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0 +003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000 +3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0007F8007F +80FFFFC7FFFCFFFFC7FFFCFFFFC7FFFC26347EB32B>I<07800FC01FE01FE01FE01FE00F +C00780000000000000000000000000000000000000000007E0FFE0FFE0FFE00FE007E007 +E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007 +E007E007E007E007E00FF0FFFFFFFFFFFF10337EB215>I<0003C00007E0000FF0000FF0 +000FF0000FF00007E00003C0000000000000000000000000000000000000000000000000 +0000000000000003F000FFF000FFF000FFF00007F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F03803F07C03F0FE03E0FE07E0FE07C0FE0FC07C0F80 +381F001FFC0007F000144384B217>I<03F0000000FFF0000000FFF0000000FFF0000000 +07F000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F003FFE003F003FFE003F003FFE003F001FF0003F000F80003F001 +E00003F001C00003F003800003F00F000003F01C000003F038000003F070000003F0F000 +0003F3F8000003F7FC000003FEFC000003FC7E000003F87F000003F03F800003F01F8000 +03F00FC00003F00FE00003F007E00003F003F00003F003F80003F001F80003F000FC0003 +F000FE0007F800FF80FFFFC3FFF0FFFFC3FFF0FFFFC3FFF024347EB329>I<07E0FFE0FF +E0FFE00FE007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007 +E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007 +E007E007E007E007E007E007E007E007E007E00FF0FFFFFFFFFFFF10347EB315>I<03F0 +1FE000FF0000FFF07FF803FFC000FFF1E07C0F03E000FFF3803E1C01F00007F7003F3801 +F80003FE003F7001F80003FC001FE000FC0003FC001FE000FC0003F8001FC000FC0003F8 +001FC000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000 +FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0 +001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000 +FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0 +001F8000FC0003F0001F8000FC0007F8003FC001FE00FFFFC7FFFE3FFFF0FFFFC7FFFE3F +FFF0FFFFC7FFFE3FFFF03C217EA041>I<03F01FC000FFF07FF000FFF1E0FC00FFF3807C +0007F7007E0003FE007E0003FC003F0003FC003F0003F8003F0003F8003F0003F0003F00 +03F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003 +F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0 +003F0003F0003F0003F0003F0003F0003F0007F8007F80FFFFC7FFFCFFFFC7FFFCFFFFC7 +FFFC26217EA02B>I<0007F00000003FFE000000FC1F800001F007C00003C001E00007C0 +01F0000F8000F8001F00007C001F00007C003F00007E003E00003E007E00003F007E0000 +3F007E00003F00FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F +80FE00003F80FE00003F807E00003F007E00003F007E00003F003F00007E003F00007E00 +1F00007C001F8000FC000FC001F80007C001F00003F007E00000FC1F8000003FFE000000 +07F0000021237EA126>I<03F03F8000FFF0FFE000FFF3C0F800FFF7007E0007FE003F00 +03FC001F8003F8001FC003F0000FC003F0000FE003F00007F003F00007F003F00007F003 +F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F0 +0003F803F00003F803F00007F803F00007F003F00007F003F00007E003F0000FE003F000 +0FC003F8001FC003FC003F8003FC003F0003FF00FC0003F381F80003F1FFE00003F07F00 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC0000025 +307EA02B>I<0007F00300003FFC070000FC0F070001F8038F0007E0018F000FE001DF00 +1FC000FF001F80007F003F80007F003F00003F007F00003F007F00003F00FF00003F00FE +00003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00 +003F00FE00003F007F00003F007F00003F007F00003F003F80007F001F80007F001FC000 +FF000FC001FF0007E003BF0003F0073F0000F81E3F00003FF83F00000FE03F000000003F +000000003F000000003F000000003F000000003F000000003F000000003F000000003F00 +0000003F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC26307DA029> +I<03E07C00FFE1FF00FFE38F80FFE71FC007EE1FC003EC1FC003EC1FC003FC0F8003F800 +0003F8000003F8000003F0000003F0000003F0000003F0000003F0000003F0000003F000 +0003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000 +0003F0000003F0000007F80000FFFFE000FFFFE000FFFFE0001A217FA01E>I<00FF0600 +07FFCE001F00FE003C003E0078001E0078000E00F0000E00F0000600F0000600F8000600 +F8000600FE000000FF8000007FFC00003FFFC0003FFFF0000FFFF80007FFFC0000FFFE00 +000FFF000000FF0000003F80C0001F80C0000F80E0000780E0000780E0000780F0000780 +F0000700F8000F00FC000E00FE001C00F7807800E1FFE000C07F800019237EA11E>I<00 +300000300000300000300000300000700000700000700000F00000F00001F00001F00003 +F00007F0001FFFFEFFFFFEFFFFFE03F00003F00003F00003F00003F00003F00003F00003 +F00003F00003F00003F00003F00003F00003F00003F00003F00303F00303F00303F00303 +F00303F00303F00303F00303F00701F80601F80600FC0E007E1C001FF80007E0182F7FAD +1E>I<03F0003F00FFF00FFF00FFF00FFF00FFF00FFF0007F0007F0003F0003F0003F000 +3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F +0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F00 +03F0003F0003F0003F0003F0003F0003F0007F0003F0007F0003F0007F0003F000FF0001 +F000FF0001F801FF8000F803BFFC007E073FFC001FFE3FFC0007F83F0026227EA02B>I< +FFFF00FFF0FFFF00FFF0FFFF00FFF00FF0003F8007F0001F0003F0000E0003F0000C0003 +F8001C0001F800180001F800180000FC00300000FC00300000FE007000007E006000007F +006000003F00C000003F00C000001F818000001F818000001FC38000000FC30000000FC3 +00000007E600000007E600000007FE00000003FC00000003FC00000001F800000001F800 +000001F800000000F000000000F00000000060000024217E9F29>II +I<7FFF807FF87FFF807FF87FFF807FF807F8001FC003F8000F8001F800070001F8000600 +00FC000C0000FC000C0000FE001C00007E001800007E001800003F003000003F00300000 +3F807000001F806000001FC0E000000FC0C000000FC0C0000007E180000007E180000007 +F380000003F300000003FB00000001FE00000001FE00000000FC00000000FC00000000FC +00000000780000000078000000003000000000300000000060000000006000000000E000 +000000C000000000C0000000018000007801800000FC03000000FC03000000FC06000000 +FC0E000000701C00000078380000001FF00000000FC000000025307F9F29>I<3FFFFFF0 +3FFFFFF03F000FF03C000FE038001FC030003F8070007F8070007F006000FE006001FC00 +6003FC006003F8000007F000000FE000000FE000001FC000003F8000007F0000007F0030 +00FE003001FC003003FC003003F8003007F000700FE000701FE000601FC000E03F8000E0 +7F0003E0FF000FE0FFFFFFE0FFFFFFE01C207E9F22>I124 D E /Fm 84 127 df<7800FF00FFC0FFF8FFFE7FFF +0FFF03FF007F000E100A78AD27>18 D<3C7EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E7E7E +7E7E7E7E7E7E7E7E7E7E7E3C000000000000003C7EFFFFFFFF7E3C082F71AE27>33 +D<1000207C00F8FE01FCFE01FCFE01FCFE01FCFE01FCFE01FCFE01FCFE01FCFE01FCFE01 +FCFC00FC7C00F87C00F87C00F87C00F87C00F87C00F87C00F87C00F87C00F83800701617 +78AE27>I<003C03C0007E07E0007E07E0007E07E0007E07E0007E07E0007E07E0007E07 +E000FE0FE000FC0FC000FC0FC07FFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFF +FE01F81F8001F81F8001F81F8001F81F8001F81F8001F81F8001F81F8001F81F8001F81F +8001F81F8001F81F8001F81F803FFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFF +FE03F03F0003F03F0007F07F0007E07E0007E07E0007E07E0007E07E0007E07E0007E07E +0007E07E0003C03C00202E7DAD27>I<000380000007C0000007C0000007C0000007C000 +0007C000001FF00000FFFE0003FFFF8007FFFFC01FFFFFE01FE7DFF03F87C7F87E07C3F8 +7C07C1F8FC07C0FCF807C0FCF807C1FCF807C1FCF807C1FCFC07C0F8FE07C0707F07C000 +7F87C0003FFFC0001FFFC0000FFFF80007FFFE0003FFFF8000FFFFC0000FFFE00007FFF0 +0007CFF00007C3F80007C1F83807C0FC7C07C0FCFE07C07CFE07C07CFE07C07CFE07C07C +FC07C07CFE07C0F87E07C1F87F07C3F03F87C7F03FF7FFE01FFFFFC00FFFFF8003FFFF00 +01FFFC00003FE0000007C0000007C0000007C0000007C0000007C000000380001E3A7CB3 +27>I<0F0000701F8000F83FC001F87FE001F87FE003F87FE003F0FFF007F0F9F007E0F9 +F007E0F9F00FE0F9F00FC0F9F00FC0F9F01FC0FFF01F807FE03F807FE03F007FE03F003F +C07F001F807E000F00FE000000FC000000FC000001FC000001F8000001F8000003F80000 +03F0000007F0000007E0000007E000000FE000000FC000001FC000001F8000001F800000 +3F8000003F0000003F0000007F00F0007E01F800FE03FC00FC07FE00FC07FE01FC07FE01 +F80FFF03F80F9F03F00F9F03F00F9F07F00F9F07E00F9F07E00F9F0FE00FFF0FC007FE1F +C007FE1F8007FE1F8003FC0F8001F8070000F0203A7DB327>I<001F000000007FC00000 +00FFE0000001FFE0000001FFF0000003F1F0000003E1F8000007E0F8000007C0F8000007 +C0F8000007C0F8000007C0F8000007C0F8000007C1F8000007C1F0000007C3F1FF8007E3 +E1FFC003E7E3FFC003EFC1FFC003FFC1FF8003FF81F80003FF01F00001FE01F00001FC03 +F00001F803E00003F807E00007FC07C0000FFC07C0001FFE0FC0003FBE0F80003F3F1F80 +007E1F1F00007E1F9F0000FC0FBF0000FC0FFE0000FC07FE0000FC07FC0200FC03FC0F80 +FC01F80F80FC01F80F80FE03FC0F807E07FE0F807F1FFF9F803FFFFFFF003FFF9FFF001F +FF0FFE000FFC03FC0003F000F80022307EAE27>I<0F001FC03FC03FE03FE03FF01FF00F +F001F001F001F001F003F003E007E00FC00FC03F807F00FF00FE00F80070000C1773AD27 +>I<0001C00003E0000FE0001FE0003FC0007F8000FE0001FC0001F80003F80007F00007 +E0000FC0000FC0001F80001F80003F00003F00003F00007E00007E00007E00007E0000FC +0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00007E +00007E00007E00007E00003F00003F00003F00001F80001F80000FC0000FC00007E00007 +F00003F80001F80001FC0000FE00007F80003FC0001FE0000FE00003E00001C0133A73B3 +27>I<700000F80000FE0000FF00007F80003FC0000FE00007F00003F00003F80001FC00 +00FC00007E00007E00003F00003F00001F80001F80001F80000FC0000FC0000FC0000FC0 +0007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E0 +000FC0000FC0000FC0000FC0001F80001F80001F80003F00003F00007E00007E0000FC00 +01FC0003F80003F00007F0000FE0003FC0007F8000FF0000FE0000F80000700000133A7A +B327>I<000F0000001F8000001F8000001F8000001F8000001F8000001F8000781F81E0 +FE1F87F0FF1F8FF0FFDFBFF07FFFFFE03FFFFFC00FFFFF0003FFFC0000FFF00000FFF000 +03FFFC000FFFFF003FFFFFC07FFFFFE0FFDFBFF0FF1F8FF0FE1F87F0781F81E0001F8000 +001F8000001F8000001F8000001F8000001F8000000F00001C207BA627>I<0003C00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0007FFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +FFFFFE0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000003C00020227DA727>I<0F003FC03FE0 +7FF07FF07FF87FF83FF83FF80FF801F801F003F007E01FE07FC0FF80FF00FE0070000D14 +738927>I<7FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E067C9927>I<1E +007F807F80FFC0FFC0FFC0FFC07F807F801E000A0A728927>I<000000380000007C0000 +00FC000000FC000001FC000001F8000003F8000003F0000007F0000007E000000FE00000 +0FC000001FC000001F8000003F8000003F0000003F0000007F0000007E000000FE000000 +FC000001FC000001F8000003F8000003F0000007F0000007E000000FE000000FC000000F +C000001FC000001F8000003F8000003F0000007F0000007E000000FE000000FC000001FC +000001F8000003F8000003F0000003F0000007F0000007E000000FE000000FC000001FC0 +00001F8000003F8000003F0000007F0000007E000000FE000000FC000000FC000000F800 +0000780000001E3A7CB327>I<0007E000003FFC00007FFE0000FFFF0001FFFF8003FC3F +C007F00FE00FE007F00FC003F01F8001F81F8001F83F0000FC3F0000FC3E00007C7E0000 +7E7E00007E7E00007E7C00003EFC00003FFC00003FFC00003FFC00003FFC00003FFC0000 +3FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003F7E00007E7E00007E7E0000 +7E7E00007E3F0000FC3F0000FC3F8001FC1F8001F81FC003F80FC003F00FE007F007F00F +E003FC3FC001FFFF8000FFFF00007FFE00003FFC000007E00020307DAE27>I<000E0000 +001F0000001F0000003F0000007F0000007F000000FF000001FF000003FF00007FFF0000 +FFFF0000FFFF0000FFBF00007E3F0000003F0000003F0000003F0000003F0000003F0000 +003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000 +003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000 +003F0000003F0000003F0000003F0000003F00003FFFFF807FFFFF807FFFFFC07FFFFF80 +7FFFFF801A2F79AE27>I<003FE00001FFF80003FFFE000FFFFF801FFFFFC03FE07FE03F +800FE07F0007F07E0003F8FE0001F8FC0001F8FE0001FCFE0000FCFE0000FCFE0000FC7C +0000FC000000FC000000FC000001FC000001F8000001F8000003F8000003F0000007F000 +000FE000001FC000003FC000007F800000FF000001FE000003FC000007F800000FF00000 +1FE000003FC000007F800000FE000001FC000007F800780FF000FC1FE000FC3FC000FC7F +FFFFFCFFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E2F7CAE27>I<001FF80000FFFE0003FF +FF800FFFFFC00FFFFFE01FF01FF03FC007F83F8001F83F8001FC3F8000FC3F8000FC1F00 +00FC040000FC000000FC000001FC000001F8000003F8000007F000000FF000003FE0001F +FFC0003FFF80003FFF80003FFFE0001FFFF000001FF8000003FC000001FC000000FE0000 +007E0000007F0000003F0000003F3800003F7C00003FFE00003FFE00003FFE00007FFC00 +007EFE0000FE7F0001FC7F8003FC3FF01FF81FFFFFF00FFFFFE003FFFF8000FFFE00001F +F80020307DAE27>I<00003F800000007FC00000007FC0000000FFC0000001FFC0000001 +FFC0000003F7C0000007E7C0000007E7C000000FC7C000000F87C000001F87C000003F07 +C000003F07C000007E07C00000FC07C00000FC07C00001F807C00001F007C00003F007C0 +0007E007C00007E007C0000FC007C0001F8007C0001F8007C0003F0007C0003E0007C000 +7E0007C000FC0007C000FFFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC07FFFFFFF8000 +0007C000000007C000000007C000000007C000000007C000000007C000000007C0000000 +07C0000001FFFF000003FFFF800003FFFF800003FFFF800001FFFF00222F7EAE27>I<1F +FFFFE03FFFFFF03FFFFFF03FFFFFF03FFFFFE03F0000003F0000003F0000003F0000003F +0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F1FF0003F +FFFC003FFFFF003FFFFF803FFFFFC03FF03FE03FC00FF03F0007F03E0003F81C0001F800 +0001F8000001FC000000FC000000FC000000FC7C0000FCFE0000FCFE0000FCFE0001FCFE +0001F8FC0003F8FE0003F07F000FF07F801FE03FE07FC01FFFFF800FFFFF0007FFFE0001 +FFF800007FC0001E2F7CAD27>I<0000FF000007FFC0001FFFF0003FFFF800FFFFF801FF +81FC03FE01FC03F801FC07F001FC0FE001FC0FC000F81FC000003F8000003F0000003F00 +00007F0000007E0000007E0FF800FE3FFE00FCFFFF80FFFFFFC0FFFFFFE0FFF80FF0FFE0 +07F8FF8001FCFF0000FCFF0000FEFE00007EFE00007FFE00003FFE00003FFE00003F7E00 +003F7E00003F7E00003F7F00003F3F00007F3F00007E1F8000FE1FC001FC0FC001FC0FF0 +07F807F81FF003FFFFE001FFFFC000FFFF80003FFE00000FF80020307DAE27>I<780000 +00FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFC0001FCFC0003F8FC0007F0780007 +E000000FE000001FC000001F8000003F8000007F0000007E000000FE000000FC000001FC +000001F8000003F8000003F0000007F0000007E0000007E000000FC000000FC000000FC0 +00001F8000001F8000001F8000003F8000003F0000003F0000003F0000003F0000003F00 +00007F0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00 +00007E0000003C000020307DAE27>I<000FF000007FFE0001FFFF8003FFFFC00FFFFFF0 +0FF81FF01FE007F83F8001FC3F0000FC7F0000FE7E00007E7E00007E7E00007E7E00007E +7E00007E3F0000FC3F8001FC1FC003F80FE007F007FC3FE001FFFF80007FFE00003FFC00 +00FFFF0003FFFFC00FF00FF01FC003F83F8001FC3F0000FC7E00007E7E00007EFC00003F +FC00003FFC00003FFC00003FFC00003FFC00003F7E00007E7E00007E7F0000FE3F8001FC +1FE007F81FF81FF80FFFFFF007FFFFE001FFFF80007FFE00000FF00020307DAE27>I<00 +0FF000007FFC0001FFFF0003FFFF8007FFFFC00FF81FE01FE007F03FC003F83F8001F87F +0001FC7E0000FCFE0000FCFC00007EFC00007EFC00007EFC00007EFC00007FFC00007FFC +00007FFE00007F7E00007F7F0000FF3F0000FF3F8001FF1FE007FF0FF01FFF07FFFFFF03 +FFFFFF01FFFF3F007FFC7F001FF07E0000007E0000007E000000FC000000FC000001FC00 +0001F81F0003F83F8007F03F800FE03F801FE03F803FC03FC0FF801FFFFF001FFFFE000F +FFF80003FFE00000FF800020307DAE27>I<1E007F807F80FFC0FFC0FFC0FFC07F807F80 +1E000000000000000000000000000000000000000000000000001E007F807F80FFC0FFC0 +FFC0FFC07F807F801E000A20729F27>I<0F003FC03FC07FE07FE07FE07FE03FC03FC00F +000000000000000000000000000000000000000000000000000F003F803FC07FC07FE07F +E07FE03FE03FE00FE007E007C00FC00FC03F807F00FF00FE00F80070000B2A739F27>I< +00000038000000FC000001FC000007FC00000FFC00003FF800007FE00000FFC00003FF00 +0007FE00001FF800003FF000007FE00001FF800003FF00000FFC00001FF800007FF00000 +FFC00000FF800000FF800000FFC000007FF000001FF800000FFC000003FF000001FF8000 +007FE000003FF000001FF8000007FE000003FF000000FFC000007FE000003FF800000FFC +000007FC000001FC000000FC000000381E287CAA27>I<7FFFFFFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF3FFFFFFE0000000000000000000000000000000000000000000000003F +FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFE20127D9F27>I<70000000FC00 +0000FE000000FF800000FFC000007FF000001FF800000FFC000003FF000001FF8000007F +E000003FF000001FF8000007FE000003FF000000FFC000007FE000003FF800000FFC0000 +07FC000007FC00000FFC00003FF800007FE00000FFC00003FF000007FE00001FF800003F +F000007FE00001FF800003FF00000FFC00001FF800007FF00000FFC00000FF800000FE00 +0000FC000000700000001E287CAA27>I<00FFF80003FFFF000FFFFFC03FFFFFE07FFFFF +F07FC01FF8FF0003FCFE0001FCFE0000FCFE0000FCFE0001FC7C0003FC00000FF800001F +F000007FE00000FFC00001FF000003FC000007F8000007F000000FE000000FC000001FC0 +00001F8000001F8000001F8000001F8000001F8000001F8000001F8000000F0000000000 +00000000000000000000000000000000000000000000000000000F0000001F8000003FC0 +00003FC000003FC000003FC000001F8000000F00001E2E7CAD27>I<0001FE000007FF80 +001FFFC0007FFFE000FFFFF001FF03F803FC01F807F000FC0FE01F7C0FC07FFE1F80FFFE +1F01FFFE3F03FFFE3E07F1FF7E07E0FF7C0FC07F7C0F803F7C0F803FFC1F803FF81F001F +F81F001FF81F001FF81F001FF81F001FF81F001FF81F001FF81F001FFC1F803F7C0F803E +7C0F803E7C0FC07E7E07E0FC3E07F1FC3F03FFF81F01FFF01F80FFE00FC07FC00FE01F1E +07F0003F03FC007F01FF03FF00FFFFFE007FFFFC001FFFF00007FFC00001FF00202E7DAD +27>I<0003F000000007F800000007F80000000FFC0000000FFC0000000FFC0000000FFC +0000000F3C0000001F3E0000001F3E0000001F3E0000001F3E0000001F3E0000003F3F00 +00003F3F0000003F3F0000003E1F0000003E1F0000007E1F8000007E1F8000007E1F8000 +007E1F800000FC0FC00000FC0FC00000FC0FC00000FC0FC00000FC0FC00001F807E00001 +F807E00001F807E00001FFFFE00001FFFFE00003FFFFF00003FFFFF00003FFFFF00003F0 +03F00003F003F00007E001F80007E001F80007E001F80007E001F8000FE001FC007FFC0F +FF80FFFC0FFFC0FFFE1FFFC0FFFC0FFFC07FFC0FFF80222F7EAE27>I<7FFFFF0000FFFF +FFC000FFFFFFE000FFFFFFF8007FFFFFF80007E003FC0007E000FE0007E0007E0007E000 +7F0007E0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0007E +0007E0007E0007E000FC0007E003FC0007E00FF80007FFFFF00007FFFFC00007FFFFF000 +07FFFFF80007FFFFFC0007E000FE0007E0007F0007E0003F8007E0001F8007E0001F8007 +E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0001FC007E0 +001F8007E0003F8007E0007F0007E001FF007FFFFFFE00FFFFFFFC00FFFFFFF800FFFFFF +E0007FFFFF8000222E7FAD27>I<0003F80E001FFE1F003FFFBF00FFFFFF01FFFFFF03FE +0FFF07F803FF07F001FF0FE000FF1FC000FF1F80007F1F80007F3F00003F3F00003F7F00 +003F7E00003F7E00001E7E000000FE000000FC000000FC000000FC000000FC000000FC00 +0000FC000000FC000000FC000000FC000000FC000000FE0000007E0000007E0000007E00 +001E7F00003F3F00003F3F00003F1F80003F1F80007F1FC0007E0FE000FE07F001FC07F8 +03FC03FE0FF801FFFFF000FFFFE0003FFFC0001FFF000003F80020307DAE27>I<7FFFFC +00007FFFFF0000FFFFFFC0007FFFFFE0007FFFFFF00007E00FF80007E007F80007E001FC +0007E000FE0007E000FE0007E0007E0007E0007F0007E0003F0007E0003F8007E0001F80 +07E0001F8007E0001F8007E0001FC007E0000FC007E0000FC007E0000FC007E0000FC007 +E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0 +001F8007E0001F8007E0001F8007E0003F8007E0003F0007E0003F0007E0007F0007E000 +FE0007E000FE0007E001FC0007E003F80007E00FF8007FFFFFF0007FFFFFE000FFFFFFC0 +007FFFFF00007FFFFC0000222E7FAD27>I<7FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFF +FFC07FFFFFFFC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000F +C007E000078007E000000007E000000007E000000007E000000007E007800007E00FC000 +07E00FC00007E00FC00007FFFFC00007FFFFC00007FFFFC00007FFFFC00007FFFFC00007 +E00FC00007E00FC00007E00FC00007E007800007E000000007E000000007E000000007E0 +00000007E00003C007E00007E007E00007E007E00007E007E00007E007E00007E007E000 +07E007E00007E07FFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC0232E7FAD +27>I<7FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC07FFFFFFFC007E0000FC007E000 +0FC007E0000FC007E0000FC007E0000FC007E0000FC007E000078007E000000007E00000 +0007E000000007E000000007E007800007E00FC00007E00FC00007E00FC00007FFFFC000 +07FFFFC00007FFFFC00007FFFFC00007FFFFC00007E00FC00007E00FC00007E00FC00007 +E007800007E000000007E000000007E000000007E000000007E000000007E000000007E0 +00000007E000000007E000000007E000000007E000000007E00000007FFF800000FFFFC0 +0000FFFFC00000FFFFC000007FFF800000222E7EAD27>I<7FFE07FFE0FFFF0FFFF0FFFF +0FFFF0FFFF0FFFF07FFE07FFE007E0007E0007E0007E0007E0007E0007E0007E0007E000 +7E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E +0007E0007E0007E0007E0007E0007E0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00 +07FFFFFE0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007 +E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0 +007E0007E0007E0007E0007E007FFE07FFE0FFFF0FFFF0FFFF0FFFF0FFFF0FFFF07FFE07 +FFE0242E7FAD27>72 D<7FFFFFE0FFFFFFF0FFFFFFF0FFFFFFF07FFFFFE0001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F80007FFFFFE0FFFF +FFF0FFFFFFF0FFFFFFF07FFFFFE01C2E7BAD27>I<001FFFF8003FFFFC003FFFFC003FFF +FC001FFFF800001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F807C001F807C001F80FE001F80FE001F80FE003F +00FE007F007F81FE007FFFFE003FFFFC001FFFF80007FFE00000FF00001E2F7BAD27>I< +7FFC07FF807FFC07FFC0FFFE0FFFC07FFC07FFC07FFC07FF8007C001F80007C003F80007 +C003F00007C007E00007C00FC00007C01FC00007C01F800007C03F000007C07E000007C0 +FE000007C0FC000007C1F8000007C3F0000007C7F0000007C7E0000007CFF0000007DFF8 +000007FFF8000007FFFC000007FEFC000007FC7E000007FC3E000007F83F000007F01F00 +0007E01F800007E00F800007C00FC00007C007C00007C007E00007C003E00007C003F000 +07C001F80007C001F80007C000FC0007C0007C0007C0007E007FFC01FFC07FFC01FFE0FF +FE03FFE07FFC01FFE07FFC01FFC0232E7FAD27>I<7FFFC000007FFFE00000FFFFE00000 +7FFFE000007FFFC0000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000078003F0000FC003F0000FC003F0000FC003F0000FC003F0000FC0 +03F0000FC003F0000FC07FFFFFFFC07FFFFFFFC0FFFFFFFFC07FFFFFFFC07FFFFFFF8022 +2E7FAD27>I<7FE0007FE0FFF000FFF0FFF000FFF0FFF801FFF07FF801FFE00FF801FF00 +0FB801DF000FBC03DF000FBC03DF000FBC03DF000FBE07DF000F9E079F000F9E079F000F +9E079F000F9F0F9F000F9F0F9F000F8F0F1F000F8F0F1F000F8F9F1F000F8F9F1F000F87 +9E1F000F879E1F000F879E1F000F879E1F000F839C1F000F83FC1F000F83FC1F000F83FC +1F000F81F81F000F81F81F000F80F01F000F80001F000F80001F000F80001F000F80001F +000F80001F000F80001F000F80001F000F80001F000F80001F000F80001F007FF000FFE0 +FFF801FFF0FFF801FFF0FFF801FFF07FF000FFE0242E7FAD27>I<7FF003FFE0FFF807FF +F0FFF807FFF0FFFC07FFF07FFC03FFE007FC003E0007DE003E0007DE003E0007DE003E00 +07CF003E0007CF003E0007CF003E0007CF803E0007C7803E0007C7C03E0007C7C03E0007 +C3C03E0007C3E03E0007C3E03E0007C1E03E0007C1F03E0007C1F03E0007C1F03E0007C0 +F83E0007C0F83E0007C0F83E0007C0783E0007C07C3E0007C07C3E0007C03C3E0007C03E +3E0007C03E3E0007C01E3E0007C01F3E0007C00F3E0007C00F3E0007C00F3E0007C007BE +0007C007BE0007C007BE0007C003FE007FFC03FE00FFFE03FE00FFFE01FE00FFFE01FE00 +7FFC00FC00242E7FAD27>I<00FFFC0007FFFF801FFFFFE01FFFFFE03FFFFFF03FE01FF0 +7F8007F87F0003F87E0001F87E0001F87E0001F8FE0001FCFC0000FCFC0000FCFC0000FC +FC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FC +FC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FC +FC0000FCFC07E0FCFC07E0FCFE07F1FC7E07F1F87E03F9F87E03F9F87F01FFF87F81FFF8 +3FE0FFF03FFFFFF01FFFFFE01FFFFFE007FFFF8000FFFF8000001FC000001FC000000FE0 +00000FE0000007F0000007F0000003F8000003F8000001F01E397CAE27>81 +D<7FFFF00000FFFFFE0000FFFFFF8000FFFFFFC0007FFFFFE00007E01FF00007E007F000 +07E003F80007E001F80007E001FC0007E000FC0007E000FC0007E000FC0007E000FC0007 +E000FC0007E001FC0007E001F80007E003F80007E007F00007E01FF00007FFFFE00007FF +FFC00007FFFF800007FFFF800007FFFFC00007E01FC00007E00FE00007E007E00007E003 +F00007E003F00007E003F00007E003F00007E003F00007E003F00007E003F00007E003F0 +0007E003F0F007E003F1F807E003F1F807E003F1F807E003F1F87FFE01FBF8FFFF01FFF0 +FFFF00FFF0FFFF00FFE07FFE007FC00000001F00252F7FAD27>I<007FC0E001FFF1F007 +FFFFF00FFFFFF01FFFFFF03FE0FFF03F801FF07F000FF07E0007F0FE0007F0FC0007F0FC +0003F0FC0003F0FC0003F0FC0001E0FE0000007E0000007F0000003FC000003FF800001F +FF80000FFFF80007FFFE0003FFFF8000FFFFC0000FFFE00000FFF000000FF0000007F800 +0003F8000001F8000001FC000000FC780000FCFC0000FCFC0000FCFC0000FCFC0000FCFE +0001F8FE0001F8FF0003F8FF8007F0FFF01FE0FFFFFFE0FFFFFFC0FFFFFF00F8FFFE0070 +1FF8001E307CAE27>I<7FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FC +03F00FC0FC03F00FC0FC03F00FC0FC03F00FC0FC03F00FC0FC03F00FC07803F007800003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +FFFFC00001FFFFE00001FFFFE00001FFFFE00000FFFFC000222E7EAD27>I<7FFE01FFF8 +FFFF03FFFCFFFF03FFFCFFFF03FFFC7FFE01FFF807E0001F8007E0001F8007E0001F8007 +E0001F8007E0001F8007E0001F8007E0001F8007E0001F8007E0001F8007E0001F8007E0 +001F8007E0001F8007E0001F8007E0001F8007E0001F8007E0001F8007E0001F8007E000 +1F8007E0001F8007E0001F8007E0001F8007E0001F8007E0001F8007E0001F8007E0001F +8007E0001F8007E0001F8007E0001F8007E0001F8007F0003F8003F0003F0003F0003F00 +03F8007F0001F8007E0001FC00FE0000FE01FC00007F87F800007FFFF800003FFFF00000 +0FFFC0000007FF80000001FE0000262F80AD27>I<7FFC03FFE07FFE07FFE0FFFE07FFF0 +7FFE07FFE07FFC03FFE007E0007E0007E0007E0007E0007E0007E0007E0003F000FC0003 +F000FC0003F000FC0003F000FC0003F801FC0001F801F80001F801F80001F801F80001F8 +01F80000FC03F00000FC03F00000FC03F00000FC03F000007E07E000007E07E000007E07 +E000007E07E000007E07E000003F0FC000003F0FC000003F0FC000003F0FC000001F0F80 +00001F9F8000001F9F8000001F9F8000000F9F0000000F9F0000000F9F0000000F9F0000 +000F9F00000007FE00000007FE00000007FE00000007FE00000003FC00000003FC000000 +01F80000242F7FAD27>I<7FE0007FE0FFF000FFF0FFF000FFF0FFF000FFF07FE0007FE0 +1F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F800F +80001F000F80001F000F80001F000F80001F000F80001F000F80001F000F80F01F000F81 +F81F0007C3FC3E0007C3FC3E0007C3FC3E0007C3FC3E0007C39C3E0007C79E3E0007C79E +3E0007C79E3E0003C79E3C0003C79E3C0003C79E3C0003E79E7C0003EF9F7C0003EF9F7C +0003EF0F7C0003EF0F7C0001EF0F780001EF0F780001EF0F780001EF0F780001FE07F800 +01FE07F80001FE07F80000FE07F00000FE07F00000FC03F000007801E000242F7FAD27> +I<3FFC1FFE007FFE3FFE007FFE3FFF007FFE3FFE003FFC1FFE0003F00FE00003F80FC000 +01F80FC00001FC1FC00000FC1F800000FE3F8000007E3F0000007F7F0000003F7E000000 +3FFE0000001FFC0000001FFC0000000FF80000000FF800000007F000000007F000000003 +F000000007F000000007F80000000FF80000000FFC0000001FFC0000001FFE0000003F7E +0000003F7F0000007F3F0000007E3F8000007E1F800000FC1FC00000FC0FC00001F80FE0 +0001F807E00003F807E00003F003F00007F003F00007E003F8007FFC0FFF80FFFC0FFFC0 +FFFE1FFFC0FFFC0FFFC07FFC0FFF80222E7EAD27>I<78000000F8000000FC000000FC00 +0000FE0000007E0000007F0000003F0000003F8000001F8000001FC000000FC000000FE0 +000007E0000007F0000003F0000003F0000003F8000001F8000001FC000000FC000000FE +0000007E0000007F0000003F0000003F8000001F8000001FC000000FC000000FC000000F +E0000007E0000007F0000003F0000003F8000001F8000001FC000000FC000000FE000000 +7E0000007F0000003F0000003F0000003F8000001F8000001FC000000FC000000FE00000 +07E0000007F0000003F0000003F8000001F8000001FC000000FC000000FC0000007C0000 +00381E3A7CB327>92 D<001C00007E0001FF8007FFE01FFFF83FFFFCFFE7FFFFC3FFFF00 +FFFC003F78001E180B79AD27>94 D<7FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC7F +FFFFF81E067C7E27>I<03FFC000000FFFF000001FFFFC00003FFFFF00003FFFFF80003F +80FF80003F801FC0001F000FC00004000FE000000007E000000007E000000FFFE000007F +FFE00003FFFFE0000FFFFFE0001FFFFFE0003FFC07E0007FC007E0007F0007E000FE0007 +E000FC0007E000FC0007E000FC0007E000FC0007E000FE000FE0007F001FE0007FC0FFE0 +003FFFFFFF801FFFFFFFC00FFFFFFFC003FFF1FFC000FF807F8022207C9F27>97 +D<7FE0000000FFF0000000FFF0000000FFF00000007FF000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F0FF000003F3FFC00003FFFFF00003FFFFF80003FFFFFC0003FF81FE0003FE00FF0003FC +003F8003F8001F8003F8001FC003F0000FC003F0000FC003F0000FE003F00007E003F000 +07E003F00007E003F00007E003F00007E003F00007E003F0000FE003F0000FC003F8000F +C003F8001FC003FC003F8003FC007F8003FE00FF0003FF83FE0003FFFFFC0003FFFFF800 +03FFFFF00003F3FFC00001E0FE0000232E7FAD27>I<000FFF00007FFFC001FFFFE003FF +FFF007FFFFF00FF807F01FE007F03FC003E03F8000807F0000007E0000007E000000FE00 +0000FC000000FC000000FC000000FC000000FC000000FC000000FE0000007E0000007E00 +00007F0000F03F8001F83FC001F81FE003F80FF80FF007FFFFF003FFFFE001FFFFC0007F +FF00000FF8001D207B9F27>I<00003FF00000007FF80000007FF80000007FF80000003F +F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 +00000001F800000001F800000FE1F800007FFDF80001FFFFF80003FFFFF80007FFFFF800 +0FF83FF8001FE00FF8003FC007F8003F8003F8007F0003F8007E0001F8007E0001F800FE +0001F800FC0001F800FC0001F800FC0001F800FC0001F800FC0001F800FC0001F800FE00 +01F8007E0003F8007E0003F8007F0003F8003F0007F8003F800FF8001FE01FF8000FF03F +F80007FFFFFFC003FFFFFFE001FFFDFFE0007FF9FFE0001FE0FFC0232E7EAD27>I<000F +F800003FFE0000FFFF8003FFFFC007FFFFE00FFC0FF01FE003F81FC001F83F8001FC7F00 +00FC7E0000FC7E00007EFE00007EFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFCFC00 +0000FE0000007E0000007F0000003F00003C3F80007E1FC0007E1FF000FE0FFC07FC07FF +FFFC01FFFFF800FFFFF0003FFFC00007FE001F207D9F27>I<00001FF00000FFF80001FF +FC0003FFFE0007FFFE000FF0FE000FC0FE001FC07C001F8000001F8000001F8000001F80 +00001F8000001F80007FFFFFF0FFFFFFF8FFFFFFF8FFFFFFF87FFFFFF0001F8000001F80 +00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 +00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 +00001F8000001F80003FFFFFC07FFFFFE07FFFFFE07FFFFFE03FFFFFC01F2E7EAD27>I< +0000003F00001FC0FF80007FF3FFC001FFFFFFE003FFFFFFE007FFFFEFE00FF07F87E01F +C01FC3C01FC01FC0001F800FC0003F0007E0003F0007E0003F0007E0003F0007E0003F00 +07E0003F0007E0001F800FC0001FC01FC0001FC01FC0000FF07F80000FFFFF00000FFFFE +00001FFFFC00001F7FF000001F1FC000001F000000001F000000001F800000000FFFFF00 +000FFFFFE0000FFFFFF8001FFFFFFE003FFFFFFF003F8001FF007E00003F807C00000F80 +FC00000FC0F8000007C0F8000007C0F8000007C0F8000007C0FC00000FC07C00000F807F +00003F803F80007F003FF807FF001FFFFFFE0007FFFFF80003FFFFF00000FFFFC000000F +FC000023337EA027>I<7FE0000000FFF0000000FFF0000000FFF00000007FF000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F07F000003F1FFC00003F7FFF00003FFFFF00003FFFFF80003FFC1 +F80003FF01FC0003FE00FC0003FC00FC0003F800FC0003F800FC0003F000FC0003F000FC +0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC00 +03F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC007F +FF83FFE0FFFFC7FFF0FFFFC7FFF0FFFFC7FFF07FFF83FFE0242E7FAD27>I<000F000000 +1F8000003FC000003FC000003FC000003FC000001F8000000F0000000000000000000000 +000000000000000000000000000000000000003FFF80007FFFC0007FFFC0007FFFC0003F +FFC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC0007FFFFFF0FFFFFFF0FFFFFFF8FFFFFFF07F +FFFFF01D2F7BAE27>I<00003C00007E0000FF0000FF0000FF0000FF00007E00003C0000 +0000000000000000000000000000000000000001FFFE03FFFF03FFFF03FFFF01FFFF0000 +3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0000 +3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0000 +3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00007E38007E7C00 +FEFE01FCFE03FCFFFFF8FFFFF07FFFE03FFF8007FE0018407CAE27>I<7FE00000007FF0 +000000FFF00000007FF00000007FF000000001F000000001F000000001F000000001F000 +000001F000000001F000000001F000000001F000000001F000000001F03FFFC001F07FFF +E001F07FFFE001F07FFFE001F03FFFC001F003F80001F007F00001F00FE00001F01FC000 +01F03F800001F0FF000001F1FE000001F3FC000001F7F8000001FFFC000001FFFE000001 +FFFF000001FF3F000001FE1F800001FC0FC00001F80FE00001F007E00001F003F00001F0 +01F80001F001FC0001F000FE0001F0007E007FFFC1FFF07FFFC3FFF8FFFFE3FFF87FFFC3 +FFF87FFFC3FFF0252E80AD27>I<7FFF8000FFFFC000FFFFC000FFFFC0007FFFC000000F +C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F +C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F +C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F +C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0007FFF +FFF8FFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E2E7CAD27>I<7F07C01F0000FF9FF07FC0 +00FFFFF9FFE000FFFFFFFFF0007FFFFFFFF0000FFC7FF1F8000FF03FC0F8000FE03F80F8 +000FC03F00F8000FC03F00F8000FC03F00F8000F803E00F8000F803E00F8000F803E00F8 +000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8 +000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8 +000F803E00F8007FF0FFC3FF00FFF8FFE3FF80FFF9FFE7FF80FFF8FFE3FF807FF0FFC3FF +002920819F27>I<7FE07F0000FFF1FFC000FFF7FFF000FFFFFFF0007FFFFFF80003FFC1 +F80003FF01FC0003FE00FC0003FC00FC0003F800FC0003F800FC0003F000FC0003F000FC +0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC00 +03F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC007F +FF83FFE0FFFFC7FFF0FFFFC7FFF0FFFFC7FFF07FFF83FFE024207F9F27>I<001FE00000 +7FF80001FFFE0003FFFF0007FFFF800FF03FC01FC00FE03F8007F03F0003F07F0003F87E +0001F87E0001F8FC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFE +0001FC7E0001F87E0001F87F0003F83F8007F03F8007F01FE01FE00FF03FC007FFFF8003 +FFFF0001FFFE00007FF800001FE0001E207C9F27>I<7FE0FF0000FFF3FFC000FFFFFFF0 +00FFFFFFF8007FFFFFFC0003FF81FE0003FE00FF0003FC003F8003F8001F8003F8001FC0 +03F0000FC003F0000FC003F0000FE003F00007E003F00007E003F00007E003F00007E003 +F00007E003F00007E003F0000FE003F0000FC003F8000FC003F8001FC003FC003F8003FC +007F8003FE00FF0003FF83FE0003FFFFFC0003FFFFF80003FFFFF00003F3FFC00003F0FE +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F00000007FFF800000FFFFC00000 +FFFFC00000FFFFC000007FFF80000023317F9F27>I<000FF03C00003FFE7E0000FFFF7E +0003FFFFFE0007FFFFFE000FFC1FFE001FE007FE001FC003FE003F8001FE007F0000FE00 +7E0000FE007E0000FE00FE00007E00FC00007E00FC00007E00FC00007E00FC00007E00FC +00007E00FC00007E00FE00007E007E0000FE007E0000FE007F0001FE003F8001FE003FC0 +03FE001FE007FE000FF81FFE0007FFFFFE0003FFFFFE0001FFFF7E00007FFC7E00000FF0 +7E000000007E000000007E000000007E000000007E000000007E000000007E000000007E +000000007E000000007E000000007E000000007E000000007E0000001FFFF800001FFFF8 +00003FFFFC00001FFFF800001FFFF826317E9F27>I<7FFC03FC00FFFE0FFF00FFFE3FFF +80FFFE7FFFC07FFEFFFFC0007FFE1FC0007FF81FC0007FF00F80007FE00200007FC00000 +007F800000007F800000007F000000007F000000007E000000007E000000007E00000000 +7E000000007E000000007E000000007E000000007E000000007E000000007E000000007E +000000007E000000007E0000007FFFFF8000FFFFFFC000FFFFFFC000FFFFFFC0007FFFFF +800022207E9F27>I<00FFF38007FFFFC01FFFFFC03FFFFFC07FFFFFC07F803FC0FC000F +C0F8000FC0F8000FC0F8000780FC0000007F8000007FFC00003FFFF0001FFFFC0007FFFF +0001FFFF80000FFFC000003FE0000007E0780003F0FC0001F0FC0001F0FE0001F0FE0003 +F0FF0007E0FFE01FE0FFFFFFC0FFFFFF80FFFFFF00FBFFFC00707FF0001C207B9F27>I< +003C0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000 +7FFFFFF0FFFFFFF8FFFFFFF8FFFFFFF87FFFFFF0007E0000007E0000007E0000007E0000 +007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000 +007E0000007E0018007E007E007E007E007E007E007E007E007E00FE003F00FC003F83FC +003FFFF8001FFFF0000FFFE00003FFC00000FF001F297EA827>I<7FE01FF800FFF03FFC +00FFF03FFC00FFF03FFC007FF01FFC0003F000FC0003F000FC0003F000FC0003F000FC00 +03F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003 +F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F000FC0003F0 +01FC0003F001FC0003F003FC0003FC0FFC0001FFFFFFE001FFFFFFF000FFFFFFF0003FFE +FFF0000FF87FE024207F9F27>I<7FFC0FFF80FFFE1FFFC0FFFE1FFFC0FFFE1FFFC07FFC +0FFF8007C000F80007E001F80003E001F00003E001F00003F003F00001F003E00001F003 +E00001F807E00000F807C00000F807C00000F807C000007C0F8000007C0F8000007C0F80 +00003E1F0000003E1F0000003E1F0000003F3F0000001F3E0000001F3E0000001FFE0000 +000FFC0000000FFC0000000FFC00000007F800000007F800000003F0000022207E9F27> +I<7FFE07FFE0FFFE07FFF0FFFF0FFFF0FFFE07FFF07FFE07FFE00F80001F000F80001F00 +0F80001F000FC0003F0007C0003E0007C0003E0007C0003E0007C0003E0007C0F03E0007 +C1F83E0003E3FC7C0003E3FC7C0003E3FC7C0003E3FC7C0003E79E7C0003E79E7C0001E7 +9E780001E79E780001E79E780001F79EF80001F79EF80001FF0FF80000FF0FF00000FF0F +F00000FF0FF00000FE07F000007C03E00024207F9F27>I<3FFC1FFF007FFE3FFF007FFE +3FFF807FFE3FFF003FFC1FFF0001F807E00000FC0FC00000FC1F8000007E1F0000003F3F +0000001F7E0000001FFC0000000FF800000007F800000003F000000003E000000003F000 +000007F80000000FF80000001FFC0000001F3E0000003E3F0000007E1F0000007C0F8000 +00F80FC00001F807E00003F003E0007FFE1FFF807FFE1FFF80FFFF3FFFC07FFE1FFF807F +FE1FFF8022207E9F27>I<7FFC0FFF80FFFE1FFFC0FFFE1FFFC0FFFE1FFFC07FFC0FFF80 +07E000F80003E001F80003E001F00003F001F00001F003F00001F803E00000F803E00000 +F803E00000FC07C000007C07C000007C07C000007E0F8000003E0F8000003E0F8000001F +0F0000001F1F0000001F1F0000000F1F0000000F9E0000000FBE00000007BE00000007FC +00000003FC00000003FC00000003F800000001F800000001F800000001F000000001F000 +000003F000000003E000000003E000000007E000000007C000000807C000003E0FC00000 +7F0F8000007F1F8000007E7F0000007FFE0000003FFC0000003FF80000001FF000000007 +C000000022317E9F27>I<1FFFFFFE3FFFFFFF3FFFFFFF3FFFFFFF3FFFFFFF3F0001FE3F +0003FC3F0007F83F000FF01E001FE000003FC000007F800000FF000001FE000003FC0000 +07F800001FE000003FC000007F800000FF000001FE000003FC001E07F8003F0FF0003F1F +E0003F3FC0003F7F80003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFE20207E9F27 +>I<01F0038003FC07C00FFC0FC01FFE1FC03FFF7F807FBFFF00FE1FFE00FC0FFC00F80F +F0007003E0001A0A7AAD27>126 D E /Fn 13 123 df<000001FF000800000FFFE01800 +007F80F0380001F80018700003E0000CF0000F800007F0001F000003F0003E000003E000 +7C000003E000F8000001E001F0000001E003E0000001C007C0000001C00FC0000001C00F +80000001C01F80000001801F00000001803F00000000003F00000000007E00000000007E +00000000007E00000000007E00000000007C0000000000FC0000000000FC0000000000FC +00000006007C0000000C007C0000000C007C0000000C007C00000018007E00000030003E +00000030003E00000060001F000000C0000F800001800007800003000003E0000E000001 +F00038000000FE01F00000003FFFC000000007FC0000002D2A7DA830>67 +D<003FFFF800003FFFF8000001FC00000001F800000001F800000003F800000003F80000 +0003F000000003F000000007F000000007F000000007E000000007E00000000FE0000000 +0FE00000000FC00000000FC00000001FC00000001FC00000001F800000001F800000003F +800000003F800000003F000000003F000000007F00001C007F000018007E000018007E00 +003800FE00003000FE00007000FC00006000FC0000E001FC0001E001FC0003C001F80007 +C001F8000F8003F8007F80FFFFFFFF80FFFFFFFF0026287DA72E>76 +D<001F8000007FC00000F0E70003C03F0007803F000F001F000F001F001E001F003E003E +003C003E007C003E007C003E00F8007C00F8007C00F8007C00F8007C00F000F800F000F8 +30F000F830F000F830F001F060F001F0607803F060780EF0C03C1CF9801FF07F8007C01E +001C1B7C9924>97 D<000FC0007FF000F03803C01C07801C0F001C1F001C1E001C3E0038 +7C00707C07E07FFF80FFFC00F80000F80000F80000F80000F00000F00000F0000478000C +7800183800303C00E01E07C00FFF0003F800161B7C991F>101 D<0001F0000007FC0000 +1E0CE0003C07E0007807E000F003E001E003E001E003E003E007C003C007C007C007C007 +C007C00F800F800F800F800F800F800F800F800F001F000F001F000F001F000F001F000F +003E0007807E000780FE0003C3BE0001FF7C00007C7C0000007C0000007C000000F80000 +00F8003800F8007C01F000FC01F000FC03E000F807C000701F80003FFE00000FF000001B +267E9920>103 D<0000070000000F8000001F8000001F8000001F0000000E0000000000 +0000000000000000000000000000000000000000000000000003E0000007F800000C3C00 +00183C0000303E0000603E0000C03E0000C03E0001807C0001807C0000007C0000007C00 +0000F8000000F8000000F8000000F8000001F0000001F0000001F0000001F0000003E000 +0003E0000003E0000003E0000007C0000007C0000007C0000007C000000F8000000F8000 +380F80007C1F0000FC1F0000FC3E0000F87C000070F800007FE000001F800000193380A6 +1B>106 D<003E000007FE000007FE0000007C0000007C000000FC000000FC000000F800 +0000F8000001F8000001F8000001F0000001F0000003F0000003F0078003E01FC003E038 +6007E061E007E0C3E007C187E007C307E00FC607C00FCC03800FB800000FE000001FF000 +001FFE00001F3F80001F0FC0003F07E0003F03E0003E03E0603E03E0607E03E0607E03C0 +C07C03C0C07C03C180FC03C180FC01E300F800FE0070007C001B297CA723>I<007C0FFC +0FFC00F800F801F801F801F001F003F003F003E003E007E007E007C007C00FC00FC00F80 +0F801F801F801F001F003F003F003E003E007E007E007C187C187C18F830F830F8207860 +78C03F800F000E297EA715>I<07801FC007E0000FE07FF01FF80018F0E0F8783C0030F1 +807CE03E0030FB007D801E0060FE003F001E0060FC003F001E0060F8003E001E00C1F800 +7C003E00C1F0007C003E0001F0007C003E0001F0007C003E0003E000F8007C0003E000F8 +007C0003E000F8007C0003E000F800F80007C001F000F80007C001F000F83007C001F001 +F03007C001F001F0300F8003E003E0600F8003E003E0600F8003E003E0C00F8003E001E1 +801F0007C001E3801F0007C000FF000E000380007C00341B7D993B>I<07801FC0000FE0 +7FF00018F0E0F80030F1807C0030FB007C0060FE003C0060FC003C0060F8003C00C1F800 +7C00C1F0007C0001F0007C0001F0007C0003E000F80003E000F80003E000F80003E001F0 +0007C001F00007C001F06007C003E06007C003E0600F8007C0C00F8007C0C00F8007C180 +0F8003C3001F0003C7001F0001FE000E0000F800231B7D9929>I<001F03007F8701E0CF +03C07F07807F0F003E1F003E1E003E3E007E3C007C7C007C7C007CF800FCF800F8F800F8 +F800F8F001F8F001F0F001F0F001F0F003F0F003E07007E0780FE03C3FE01FF7C007C7C0 +0007C0000FC0000F80000F80000F80001F80001F00003F0003FFF003FFF018257C991E> +113 D<07803E000FE0FF8018F3C18030F703C030FE07C060FC0FC060F80FC060F80F80C1 +F00700C1F0000001F0000001F0000003E0000003E0000003E0000003E0000007C0000007 +C0000007C0000007C000000F8000000F8000000F8000000F8000001F0000001F0000000E +0000001A1B7D991F>I<003E00C0007F00C000FF818001FFC30003FFFF000701FE000600 +0C000400180000003000000060000000C0000003800000060000000C0000001800000030 +00000060000000C001800380018006000300060007000FF81E001FFFFE00383FFC00601F +F800600FF000C007C0001A1B7D9920>122 D E /Fo 38 123 df<00003FC000000000FF +F800000007E07C0000000F801F0000003F001F800C007E000F800C00FC0007C01C01F800 +07E01803F00007E01807E00003E0380FE00003F0300FC00003F0301FC00003F0703F8000 +03F0603F800003F0E07F800003F0C07F000003F1C07F000003F1807F000003F380FF0000 +03F300FE000003F700FE000003FE00FE000003FC00FE000003FC00FC000003F800FC0000 +03F000FC000003F000FC000003F000FC000003F0007E000007F0007E00000FF0003E0000 +1DF8183F000079F8181F0000E1F8380F8007C0F83007E03F007CF001FFF8003FC0003FC0 +000F802E267DA435>11 D<00003FF00001FFF0000FFFE0003FC000007F000000FC000003 +F8000007F0000007E000000FE000001FC000001FC000003F8000003F8000007FFFFE007F +FFFF007FFFFF007F000000FF000000FE000000FE000000FE000000FE000000FE0000007E +0000007E0000007E0000007E0000003E0000003F0000001F0000000F8000600FC000E003 +E003C001F01F00007FFC00000FE0001C257DA322>15 D<000003F00000000FFC0000003E +1E000000780F000000F00F000001F00F800003E007800007C007C0000F8007C0001F8007 +C0001F0007C0003F0007E0007E0007E0007E0007E000FC0007E000FC0007E001F80007E0 +03F80007E003F80007E003F0000FE007F0000FE007F0000FE00FE0000FE00FE0000FE00F +E0001FC01FE0001FC01FC0001FC01FC0001FC01FFFFFFFC03FFFFFFF803FFFFFFF803FFF +FFFF803F80007F807F80007F007F00007F007F00007F007F0000FE007F0000FE007E0000 +FE007E0001FC007E0001FC00FE0001F800FE0003F800FE0003F8007C0003F0007C0007E0 +007C0007E0007C000FC0007C000FC0007C001F80007C001F00007C003F00003E007E0000 +3E007C00001E00F800001E01F000000F03E00000078780000003FF00000000F800000023 +3C7EBA27>18 D<003800000000007E0000F00000FE0007FC0000FE001FFC0000FC003BFC +0000FC00F3FC0001FC01C3FC0001FC0383F80001F80700E00001F80E00000003F81C0000 +0003F87800000003F0E000000003F1C000000007F78000000007FE0000000007FFE00000 +0007FFFE0000000FE1FFC000000FE01FE000000FC007F000000FC003F800001FC001FC00 +001FC001FC00001F8000FC01801F8000FC01803F8000FC03803F8001FC03003F0001F803 +003F0001F803007F0001F807007F0001F806007E0000F80E007E0000F80C00FE0000F81C +00FE00007C3800FC00001FF00038000007C00029267CA430>20 D<007E0000383FFE0000 +7E3FFE0000FE3FFE0000FE01FC0000FC00FC0000FC01FC0001FC01FC0001F801F80001F8 +01F80003F003F80003F003F80007F003F00007E003F0000FE007F0000FC007F0001F8007 +E0001F8007E0003F000FE0007E000FE0007E000FC000FC000FC001F8001FC003F0001FC0 +03E0001F8007C0001F800F80003F801F00003F803E00003F00F800003F01F000007F03E0 +00007F0F8000007E3E0000007EF8000000FFE0000000FF80000000F80000000027257CA4 +29>23 D<003FFFFFFFE000FFFFFFFFF001FFFFFFFFF007FFFFFFFFF007FFFFFFFFE00F80 +700600001E00600E00003C00600C00003800E00C00007000C00C0000E000C01C0000C001 +C01C00000001C01C00000001801C00000003803800000003803800000007803800000007 +00380000000700380000000F00380000000F00780000001E007C0000001E007C0000001E +007C0000003E007C0000003C007C0000007C007C0000007C007E000000FC007E000000F8 +007E000001F8007E000001F8007F000003F8007F000003F0003F000003F0003F000003F0 +003F000001C0001C00002C257EA32F>25 D<000000FE00000003FF8000000F83E000003E +01F000007C00F80000F800F80001F000FC0003F0007C0007E0007E0007C0007E000FC000 +7E001F80007E001F80007E003F00007E003F0000FE007F0000FE007E0000FE007E0000FE +007E0001FE00FE0001FE00FC0001FC00FC0001FC01FC0003FC01FC0003F801F80003F801 +F80007F003F80007F003F8000FE003F0000FC003F0001FC007F0001F8007F8003F0007F8 +007E0007FC00FC000FEE01F0000FE707E0000FC3FF80000FC0FC00001FC00000001FC000 +00001F800000001F800000003F800000003F800000003F000000003F000000007F000000 +007F000000007E000000007E00000000FE00000000FE00000000FC00000000FC00000000 +700000000027377EA42B>I<00007FFFFFC00003FFFFFFE0000FFFFFFFE0001FFFFFFFE0 +007FFFFFFFC000FF81FE000001FC007E000003F8003F000007F0003F000007E0001F0000 +0FC0001F80001F80001F80001F80001F80003F00001F80003F00001F80007E00001F8000 +7E00001F80007E00003F8000FE00003F0000FC00003F0000FC00003F0000FC00007F0000 +FC00007E0000F800007E0000F80000FC0000F80000FC0000F80001F80000F80001F80000 +F80003F000007C0007E000007C0007C000003C000F8000003E003F0000001F007C000000 +0F81F800000003FFE0000000007F000000002B257DA32F>I<0000000300000000000300 +000000000300000000000700000000000700000000000600000000000600000000000E00 +000000000E00000000000C00000000000C00000000001C00000000001C00000000001800 +000000001800000000003800000000003800000000003000000000003000000000007000 +00000000700000000007FE000000003FFFC0000001FCE3F0000007E0E0F800001F80C03E +00003E00C01F00007C01C01F0001F801C00F8003F001800FC007E0018007C007E0038007 +C00FC0038007E01F80030007E01F80030007E03F00070007E03F00070007E07E00060007 +E07E00060007E07E000E000FE0FE000E000FE0FC000C000FC0FC000C000FC0FC001C001F +80FC001C001F80FC0018003F00FC0018003F00FC0038007E007C003800FC007C003000FC +007E003001F8003E007003F0001F007007C0001F00600F80000F80603F000003E0E0FC00 +0001F8E7F00000007FFF800000000FFC0000000001C00000000001C00000000001800000 +000001800000000003800000000003800000000003000000000003000000000007000000 +00000700000000000600000000000600000000000E00000000000E00000000000C000000 +00000C000000002B4B7CB931>30 D<1C007F00FF80FF80FF80FF80FF807F001C00090979 +8817>58 D<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C000C000C001C0018001 +8003800300070006000E001C003800700060000A19798817>I<00000000000380000000 +00000FC000000000003FC00000000000FF800000000003FE00000000000FF80000000000 +3FE00000000000FF800000000003FE00000000000FF800000000003FE00000000000FF80 +0000000003FE00000000000FF800000000003FE00000000000FF800000000003FE000000 +00000FF800000000003FE00000000000FF800000000003FE00000000000FF80000000000 +3FE000000000007F800000000000FE000000000000FE0000000000007F8000000000003F +E000000000000FF8000000000003FE000000000000FF8000000000003FE000000000000F +F8000000000003FE000000000000FF8000000000003FE000000000000FF8000000000003 +FE000000000000FF8000000000003FE000000000000FF8000000000003FE000000000000 +FF8000000000003FE000000000000FF8000000000003FE000000000000FF800000000000 +3FC000000000000FC000000000000380323279AD41>I<0000000C0000001E0000003E00 +00003E0000003C0000007C0000007C00000078000000F8000000F8000000F0000001F000 +0001F0000001E0000003E0000003E0000003C0000007C0000007C00000078000000F8000 +000F8000000F0000001F0000001F0000001E0000003E0000003E0000003C0000007C0000 +007C00000078000000F8000000F8000000F0000001F0000001F0000001E0000003E00000 +03E0000007C0000007C00000078000000F8000000F8000000F0000001F0000001F000000 +1E0000003E0000003E0000003C0000007C0000007C00000078000000F8000000F8000000 +F0000001F0000001F0000001E0000003E0000003E0000003C0000007C0000007C0000007 +8000000F8000000F8000000F0000001F0000001F0000001E0000003E0000003E0000003C +0000007C0000007C00000078000000F8000000F8000000F0000000600000001F537BBD2A +>I<00000000FF8001C00000000FFFE001C00000007FFFF80380000001FF807E07800000 +07F8000F0F8000001FE000079F8000003F800003BF000000FF000001FF000001FC000000 +FF000003F8000000FF000007F00000007E00000FE00000007E00001FC00000007E00003F +800000003E00007F800000003C0000FF000000003C0000FE000000003C0001FE00000000 +3C0003FC00000000380003F800000000380007F80000000038000FF00000000038000FF0 +0000000030001FF00000000030001FE00000000000001FE00000000000003FC000000000 +00003FC00000000000003FC00000000000007FC00000000000007F800000000000007F80 +0000000000007F80000000000000FF80000000000000FF00000000000000FF0000000000 +0000FF00000000000000FF00000000000000FF00000000030000FF00000000030000FF00 +000000070000FF00000000060000FF000000000600007F000000000E00007F000000000C +00007F000000001C00007F000000003800003F800000003800003F800000007000001F80 +000000E000001FC0000001C000000FE00000038000000FE000000780000007F000000E00 +000003F800003C00000001FC00007800000000FF0001F0000000003FE00FC0000000000F +FFFF000000000003FFFC0000000000007FC0000000003A3D7CBA3B>67 +D<0003FFFFFFFF00000007FFFFFFFFE0000007FFFFFFFFF800000007F80007FE00000007 +F00000FF00000007F000003F8000000FF000001FC000000FF000000FC000000FE000000F +E000000FE0000007F000001FE0000003F000001FE0000003F000001FC0000003F800001F +C0000001F800003FC0000001F800003FC0000001FC00003F80000001FC00003F80000001 +FC00007F80000001FC00007F80000001FC00007F00000001FC00007F00000001FC0000FF +00000001FC0000FF00000003FC0000FE00000003FC0000FE00000003FC0001FE00000003 +FC0001FE00000003F80001FC00000007F80001FC00000007F80003FC00000007F80003FC +00000007F00003F80000000FF00003F80000000FF00007F80000000FE00007F80000001F +E00007F00000001FC00007F00000001FC0000FF00000003F80000FF00000003F80000FE0 +0000007F00000FE00000007E00001FE0000000FE00001FE0000001FC00001FC0000001F8 +00001FC0000003F000003FC0000007E000003FC000000FC000003F8000001F8000003F80 +00007F0000007F800000FE0000007F800003FC0000007F00000FF0000000FF00007FC000 +00FFFFFFFFFF000000FFFFFFFFFC000000FFFFFFFFC00000003E397DB845>I<0003FFFF +FFFFFFE00007FFFFFFFFFFE00007FFFFFFFFFFE0000007F800003FE0000007F000000FE0 +000007F0000003C000000FF0000003C000000FF0000001C000000FE0000001C000000FE0 +000001C000001FE0000001C000001FE0000001C000001FC0000001C000001FC000000180 +00003FC00000018000003FC00000018000003F800000018000003F800060018000007F80 +00E0018000007F8000E0000000007F0000C0000000007F0000C000000000FF0001C00000 +0000FF0001C000000000FE00038000000000FE00078000000001FE001F8000000001FFFF +FF8000000001FFFFFF0000000001FFFFFF0000000003FC001F0000000003FC000F000000 +0003F8000E0000000003F8000E0000000007F8000E0000000007F8000E0000000007F000 +0C0000000007F0000C000000000FF0001C000000000FF0001C000000000FE00000000000 +000FE00000000000001FE00000000000001FE00000000000001FC00000000000001FC000 +00000000003FC00000000000003FC00000000000003F800000000000003F800000000000 +007F800000000000007F800000000000007F00000000000000FF800000000000FFFFFFC0 +00000000FFFFFFC000000000FFFFFFC0000000003B397DB835>70 +D<0003FFFFFF00000007FFFFFF00000007FFFFFE0000000007FC000000000007F8000000 +000007F000000000000FF000000000000FF000000000000FE000000000000FE000000000 +001FE000000000001FE000000000001FC000000000001FC000000000003FC00000000000 +3FC000000000003F8000000000003F8000000000007F8000000000007F8000000000007F +0000000000007F000000000000FF000000000000FF000000000000FE000000000000FE00 +0000000001FE000000000001FE000000000001FC000000000001FC000000000003FC0000 +00000003FC000000000003F8000000000003F8000000000007F8000000000007F8000000 +400007F0000000C00007F0000000C0000FF0000001C0000FF000000180000FE000000380 +000FE000000380001FE000000300001FE000000700001FC000000600001FC000000E0000 +3FC000001E00003FC000001C00003F8000003C00003F8000007C00007F800000F800007F +800003F800007F00000FF80000FF00007FF000FFFFFFFFFFF000FFFFFFFFFFF000FFFFFF +FFFFE00032397DB839>76 D<0003FFFFFFFF00000007FFFFFFFFE0000007FFFFFFFFF800 +000007F80007FC00000007F00000FE00000007F000007F0000000FF000003F8000000FF0 +00001FC000000FE000001FC000000FE000001FC000001FE000001FE000001FE000001FE0 +00001FC000001FE000001FC000001FE000003FC000001FE000003FC000003FC000003F80 +00003FC000003F8000003FC000007F8000007F8000007F8000007F8000007F0000007F00 +00007F000000FE000000FF000001FC000000FF000001F8000000FE000007F0000000FE00 +000FE0000001FE00003FC0000001FE0001FF00000001FFFFFFFC00000001FFFFFFE00000 +0003FC00000000000003FC00000000000003F800000000000003F800000000000007F800 +000000000007F800000000000007F000000000000007F00000000000000FF00000000000 +000FF00000000000000FE00000000000000FE00000000000001FE00000000000001FE000 +00000000001FC00000000000001FC00000000000003FC00000000000003FC00000000000 +003F800000000000003F800000000000007F800000000000007F800000000000007F0000 +0000000000FF800000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000 +3B397DB835>80 D<0003FFFFFFF800000007FFFFFFFF80000007FFFFFFFFE000000007F8 +001FF800000007F00003FC00000007F00000FE0000000FF000007F0000000FF000007F00 +00000FE000003F8000000FE000003F8000001FE000003FC000001FE000003FC000001FC0 +00003FC000001FC000003FC000003FC000003FC000003FC000007F8000003F8000007F80 +00003F8000007F8000007F800000FF0000007F800000FE0000007F000001FC0000007F00 +0003F8000000FF000007F0000000FF00000FE0000000FE00001F80000000FE00007F0000 +0001FE0007F800000001FFFFFFE000000001FFFFFF0000000001FC000FC000000003FC00 +03F000000003FC0001F800000003F80000FC00000003F80000FE00000007F80000FE0000 +0007F800007E00000007F000007E00000007F000007F0000000FF00000FF0000000FF000 +00FE0000000FE00000FE0000000FE00000FE0000001FE00001FE0000001FE00001FE0000 +001FC00001FE0000001FC00001FE0000003FC00001FE0000003FC00003FE0000003F8000 +03FC0060003F800003FC0060007F800003FC00E0007F800003FC00C0007F000003FC01C0 +00FF800001FC0180FFFFFF0001FC0380FFFFFF0000FE0700FFFFFF00007E0E0000000000 +001FFC00000000000007F0003B3B7DB83F>82 D<00007E00000003FF8000000FC1C38000 +1F00EFC0007E007FC000FC003FC001F8003FC003F0001F8007F0001F8007E0001F800FE0 +003F801FC0003F001FC0003F003F80003F003F80007F007F80007E007F00007E007F0000 +7E007F0000FE00FF0000FC00FE0000FC00FE0000FC00FE0001FC00FE0001F800FC0001F8 +0CFC0001F80CFC0003F80CFC0003F01CFC0003F018FC0007F0187C0007F0387E000FF030 +3E001FF0303E007BF0701F00E1F0E00F83C0F9C003FF007F8000FC001F0026267DA42C> +97 D<003F00001FFF00001FFF00001FFF0000007F0000007E0000007E0000007E000000 +FE000000FC000000FC000000FC000001FC000001F8000001F8000001F8000003F8000003 +F0000003F0000003F0000007F0000007E0FC0007E3FF0007E707C00FFE03E00FF801F00F +F001F80FE000F81FC000F81FC000FC1F8000FC1F8000FC3F8000FC3F0000FC3F0000FC3F +0001FC7F0001FC7E0001FC7E0001FC7E0003FCFE0003FCFC0003F8FC0003F8FC0007F8FC +0007F0F80007F0F8000FE0F8000FE0F8000FC0F8001F80F8003F8078003F007C007E007C +00FC003C01F8001E03F0000F07C00007FF000001FC00001E3B7CB924>I<000000003F00 +00001FFF0000001FFF0000001FFF000000007F000000007E000000007E00000000FE0000 +0000FE00000000FC00000000FC00000001FC00000001FC00000001F800000001F8000000 +03F800000003F800000003F000000003F000000007F000000007F000007E07E00003FF87 +E0000FC1CFE0001F00EFE0007E007FC000FC003FC001F8003FC003F0001FC007F0001F80 +07E0001F800FE0003F801FC0003F801FC0003F003F80003F003F80007F007F80007F007F +00007E007F00007E007F0000FE00FF0000FE00FE0000FC00FE0000FC00FE0001FC00FE00 +01FC00FC0001F80CFC0001F80CFC0003F80CFC0003F81CFC0003F018FC0007F0187C0007 +F0387E000FF0303E001FF0303E007BF0701F00E1F0E00F83C0F9C003FF007F8000FC001F +00283B7DB92B>100 D<00003FC00001FFF00007E078001F801C007E001E00FC000E01F8 +000E03F0000E07F0000E0FE0000E0FC0001E1FC0001C1FC0003C3F8000F83F8003E07F80 +3FC07FFFFE007FFFE0007F000000FF000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE0000007E0000037E0000077E0000063E00000E3E00003C1F0000700F80 +00E00F8007C003E03F0001FFF800003FC00020267DA427>I<00000000F80000000003FE +000000000F87000000001F0F800000003E3F800000003E7F800000007C7F800000007C7F +80000000FC7F80000000FC7F00000000FC1C00000001F80000000001F80000000001F800 +00000001F80000000003F80000000003F00000000003F00000000003F00000000003F000 +00000007F00000000007E00000000007E000000007FFFFF0000007FFFFF0000007FFFFF0 +0000000FE0000000000FC0000000000FC0000000000FC0000000000FC0000000001FC000 +0000001F80000000001F80000000001F80000000001F80000000003F80000000003F0000 +0000003F00000000003F00000000003F00000000007F00000000007E00000000007E0000 +0000007E00000000007E00000000007E0000000000FE0000000000FC0000000000FC0000 +000000FC0000000000FC0000000001FC0000000001F80000000001F80000000001F80000 +000001F80000000003F00000000003F00000000003F00000000003F00000000003E00000 +000007E00000000007E00000000007C00000001E07C00000003F07C00000007F8F800000 +007F8F80000000FF8F00000000FF1E00000000FE1E000000007C3C000000007878000000 +001FF00000000007C000000000294C7CBA29>I<000007E00000001FF80000007C1C3800 +01F80EFC0003F007FC0007E003FC000FC003FC001F8001FC003F0001F8007F0001F8007E +0003F800FE0003F800FE0003F001FC0003F001FC0007F003FC0007F003F80007E003F800 +07E003F8000FE007F8000FE007F0000FC007F0000FC007F0001FC007F0001FC007E0001F +8007E0001F8007E0003F8007E0003F8007E0003F0003E0007F0003F000FF0001F001FF00 +01F003FE0000F8077E00007C1EFE00001FF8FE000007E0FC00000000FC00000001FC0000 +0001FC00000001F800000001F800000003F8001E0003F0003F0003F0007F8007F0007F80 +07E000FF800FC000FF001F8000FE003F00007C007E00003C01F800001FFFE0000003FF00 +000026367FA428>I<0000E00003F80003F80007F80007F80007F80007F00001C0000000 +00000000000000000000000000000000000000000000000000000000000000F80003FE00 +070F000E0F801C0F80180F80380F80300F80701F80601F80603F80E03F00C03F00C07F00 +007E00007E0000FE0000FC0001FC0001FC0001F80003F80003F00003F00007F01807E018 +07E0380FE0300FC0300FC0700F80600F80E00F80C00F81C00F838007870003FE0000F800 +15397EB71D>105 D<0003F0000001FFF0000001FFF0000001FFF000000007F000000007 +E000000007E000000007E00000000FE00000000FC00000000FC00000000FC00000001FC0 +0000001F800000001F800000001F800000003F800000003F000000003F000000003F0000 +00007F000000007E0007C0007E001FF0007E00783800FE00E0F800FC01C1FC00FC0383FC +00FC0707FC01FC0E07FC01F81C07F801F83803F001F87001E003F8E0000003F1C0000003 +F380000003F700000007FE00000007FE00000007FFE0000007E7F800000FE0FE00000FC0 +7F00000FC03F80000FC01F80001FC01FC0001F800FC0301F800FC0301F800FC0703F801F +C0603F001F80603F001F80603F001F80E07F001F80C07E001F81C07E000F81807E000F83 +80FE00078700FC0003FE00380000F800263B7CB92B>107 D<000FC003FFC007FFC007FF +C0001FC0001F80001F80003F80003F80003F00003F00007F00007F00007E00007E0000FE +0000FE0000FC0000FC0001FC0001FC0001F80001F80003F80003F80003F00003F00007F0 +0007F00007E00007E0000FE0000FE0000FC0000FC0001FC0001FC0001F80001F80003F80 +003F80003F00003F00007F00007F00007E03007E0300FE0700FE0600FC0600FC0600FC0E +00FC0C00FC1C00FC18007C38003C70001FE000078000123B7DB919>I<03E0007F000007 +F801FFE0000E3C0781F0001C3E1E00F800383F3800FC00303F7000FC00303FE0007C0070 +3FC0007C00603F80007C00603F80007C00E03F0000FC00C07F0000FC00C07E0000FC00C0 +7E0000FC00007E0001FC0000FE0001F80000FC0001F80000FC0001F80000FC0003F80001 +FC0003F00001F80003F00001F80007F00001F80007E00003F80007E00003F0000FE03003 +F0000FC03003F0001FC07007F0001F806007E0001F806007E0001F80E007E0001F00C00F +E0001F01C00FC0001F01800FC0001F03800FC0001F07001FC0000F0E001F800007FC0007 +000001F0002C267EA432>110 D<000F8003F000001FE00FFC000039F03C1F000070F870 +0F8000E0FDE007C000C0FF8007C000C0FF0007E001C0FE0003E00180FE0003F00180FC00 +03F00381FC0003F00301FC0003F00301F80003F00301F80003F00003F80007F00003F800 +07F00003F00007F00003F00007F00007F0000FF00007F0000FF00007E0000FE00007E000 +0FE0000FE0001FE0000FE0001FC0000FC0001FC0000FC0003F80001FC0003F80001FC000 +7F00001F80007E00001F8000FE00003F8000FC00003FC001F800003FC003F000003FE007 +E000007F700F8000007F383F0000007E1FFC0000007E07E0000000FE0000000000FE0000 +000000FC0000000000FC0000000001FC0000000001FC0000000001F80000000001F80000 +000003F80000000003F80000000003F00000000007F000000000FFFFC0000000FFFFC000 +0000FFFFC00000002C3583A42A>112 D<0000FC00C00003FF01C0000F8383C0003F01C7 +C0007E00EF8000FC007F8001F8007F8003F0003F8007F0003F0007E0003F000FC0003F00 +1FC0007F001FC0007E003F80007E003F80007E007F8000FE007F0000FC007F0000FC007F +0000FC00FF0001FC00FE0001F800FE0001F800FE0001F800FE0003F800FC0003F000FC00 +03F000FC0003F000FC0007F000FC0007E000FC000FE0007C000FE0007C001FE0007E003F +C0003E007FC0001F01EFC0000F839FC00003FF1F800000FC1F800000001F800000003F80 +0000003F000000003F000000003F000000007F000000007E000000007E000000007E0000 +0000FE00000000FC00000001FC0000007FFFF000007FFFF000007FFFF00022357DA425> +I<03E001F80007F807FE000E3C1E07001C3E381F00183F703F80383FE07F80303FC0FF80 +703F80FF80603F80FF00603F007E00603F003C00E07F000000C07E000000C07E00000000 +7E00000000FE00000000FC00000000FC00000000FC00000001FC00000001F800000001F8 +00000001F800000003F800000003F000000003F000000003F000000007F000000007E000 +000007E000000007E00000000FE00000000FC00000000FC00000000FC00000001FC00000 +001F80000000070000000021267EA425>I<0000FF000003FFC0000F80F0003E00380078 +001C0078003C00F000FC01F001FC01E001FC01E001FC01E001FC03F000F003F8000003FC +000001FFE00001FFFC0001FFFF0000FFFF80007FFFC0001FFFE00003FFE000003FF00000 +07F0000003F01E0001F07F0001F07F0001F0FF0001E0FF0001E0FF0001E0FE0003C0F800 +03C0E000078070000F0038003E001E00F80007FFE00001FF00001E267CA427>I<0001C0 +000003E0000007E0000007E0000007E0000007E000000FE000000FC000000FC000000FC0 +00001FC000001F8000001F8000001F8000003F8000003F00007FFFFF807FFFFF80FFFFFF +80007E0000007E0000007E000000FE000000FC000000FC000000FC000001FC000001F800 +0001F8000001F8000003F8000003F0000003F0000003F0000007F0000007E0000007E000 +0007E000000FE000000FC006000FC006000FC00E001FC00C001F801C001F8018001F8038 +001F8070001F8060001F80E0000F81C0000787800003FE000000F8000019357EB31E>I< +00F80003C003FE0007E0070F000FE00E0F800FF01C0F800FF0180F800FF0380F8007F030 +0F8003F0701F8001F0601F8001F0601F8000F0E03F8000E0C03F0000E0C07F0000E0007E +0000E0007E0000C000FE0000C000FC0000C000FC0001C001FC00018001F800018001F800 +038001F800030003F800030003F000070003F000060003F0000E0003F0000C0003F0001C +0003F000180003F000380003F000700001F000E00001F801C00000FC038000007E0F0000 +001FFE00000007F0000024267EA428>118 D<0007E001F000001FF807FC0000783E0E0F +0000E01F1C1F0001C01F383F8003800FF07F8003000FE0FF8007000FE0FF800E000FC0FF +000C000FC07E000C001FC03C001C001F80000018001F80000018001F80000000003F8000 +0000003F80000000003F00000000003F00000000007F00000000007F00000000007E0000 +0000007E0000000000FE0000000000FE0000000000FC000C000000FC000C000001FC001C +001E01FC0018003F01F80018007F81F80038007F83F8007000FF83F8006000FF07F800E0 +00FE0E7C01C0007C1C7C03800078383E0F00001FF00FFC000007C003F0000029267EA42F +>120 D<00F800000003FE000070070F0000F80E0F8001F81C0F8001F8180F8001F8380F +8003F8300F8003F0701F8003F0601F8003F0603F8007F0E03F0007E0C03F0007E0C07F00 +07E0007E000FE0007E000FC000FE000FC000FC000FC000FC001FC001FC001F8001F8001F +8001F8001F8001F8003F8003F8003F0003F0003F0003F0003F0003F0007F0003F0007E00 +03F0007E0003F0007E0003F000FE0003F000FC0003F001FC0001F003FC0000F807FC0000 +7C1FF800003FF9F800000FE1F800000003F800000003F000000003F0000E0007F0003F80 +07E0007F800FC0007F800FC0007F801F80007F801F00007F003E00007C007C00007000F8 +00003801F000001E07C000000FFF00000001FC00000025367EA429>I<0001E00060000F +F800E0001FFC00C0003FFE01C0007FFF038000FFFF070000F81FFF0001E003FE0001C000 +1C0001800038000180007000000000E000000001C0000000038000000007000000000E00 +0000001C000000003800000000F000000001E0000000038000000007000000000E000000 +001C0000000038000300007000030000E000070001C00006000380000E000700001C000F +FC007C001FFF81F8001E0FFFF8003807FFF0007003FFE0006003FFC000E001FF0000C000 +7C000023267DA427>I E /Fp 19 122 df<7FFFFFFFFFFF80FFFFFFFFFFFFC0FFFFFFFF +FFFFC07FFFFFFFFFFF803204799641>0 D<1C007F00FF80FF80FF80FF80FF807F001C00 +0909799917>I<6000000006F80000000FFC0000001F7E0000003F3F0000007E1F800000 +FC0FC00001F807E00003F003F00007E001F8000FC000FC001F80007E003F00003F007E00 +001F80FC00000FC1F8000007E3F0000003F7E0000001FFC0000000FF800000007F000000 +007F00000000FF80000001FFC0000003F7E0000007E3F000000FC1F800001F80FC00003F +007E00007E003F0000FC001F8001F8000FC003F00007E007E00003F00FC00001F81F8000 +00FC3F0000007E7E0000003FFC0000001FF80000000F6000000006282874A841>I<000F +E000007FFC0000FFFE0003FFFF8007FFFFC00FFFFFE01FFFFFF03FFFFFF83FFFFFF87FFF +FFFC7FFFFFFC7FFFFFFCFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFF +FFFEFFFFFFFE7FFFFFFC7FFFFFFC7FFFFFFC3FFFFFF83FFFFFF81FFFFFF00FFFFFE007FF +FFC003FFFF8000FFFE00007FFC00000FE0001F207BA42A>15 D<00000000000180000000 +000007C000000000001FC000000000007F800000000001FF000000000007FC0000000000 +1FF000000000007FC00000000001FF000000000007FC00000000001FF000000000007FC0 +0000000001FF000000000007FC00000000001FF000000000007FC00000000001FF000000 +000007FC00000000001FF000000000007FC00000000001FF000000000007FC0000000000 +3FF000000000007FC00000000000FF000000000000FE0000000000007F8000000000003F +E000000000000FF8000000000003FE000000000000FF8000000000003FE000000000000F +F8000000000003FE000000000000FF8000000000003FE000000000000FF8000000000003 +FE000000000000FF8000000000003FE000000000000FF8000000000003FE000000000000 +FF8000000000003FE000000000000FF8000000000003FE000000000000FF800000000000 +3FC000000000000FC0000000000003800000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000007FFFFFFFFFFF80FFFFFFFFFFFFC0FFFFFFFFFFFFC07FFFFFFFFFFF803244 +79B441>20 D<0000000000001E00000000000000001E00000000000000001E0000000000 +0000001E00000000000000001F00000000000000000F00000000000000000F0000000000 +0000000F800000000000000007800000000000000007C00000000000000003E000000000 +00000003E00000000000000001F00000000000000000F80000000000000000FC00000000 +000000007E00000000000000003F00000000000000001F80000000000000000FC0000000 +0000000007F07FFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFF +FFFFFFFFFFFC0000000000000007F0000000000000000FC0000000000000001F80000000 +000000003F00000000000000007E0000000000000000FC0000000000000000F800000000 +00000001F00000000000000003E00000000000000003E00000000000000007C000000000 +0000000780000000000000000F80000000000000000F00000000000000000F0000000000 +0000001F00000000000000001E00000000000000001E00000000000000001E0000000000 +0000001E0000482C7BAA53>33 D<00003000000000780000000078000000007800000000 +780000000078000000007800000000780000000078000000007800000000780000000078 +000000007800000000780000000078000000007800000000780000000078000000007800 +000000780000000078000000007800000000780000000078000000007800000000780000 +000078000000007800000000780000000078000000007800000000780000000078000000 +007800000000780000000078000000007800000000780000000078000000007800000000 +780000000078000000007800000000780000000078000000007800000000780000000078 +000000007800000000780000C00078000CF80078007CFE007801FCFF807807FC3FE0781F +F007F0783F8001F8787E0000FC78FC00003E79F000001F7BE000000FFFC0000007FF8000 +0007FF80000003FF00000001FE00000001FE00000000FC00000000FC0000000078000000 +007800000000780000000030000000003000000000300000264A7EB92A>35 +D<00000000003C00000000000000003C00000000000000003E00000000000000001E0000 +0000000000001F00000000000000000F00000000000000000F800000000000000007C000 +00000000000003C00000000000000003E00000000000000001F00000000000000000F800 +000000000000007C00007FFFFFFFFFFFFE0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFF80 +007FFFFFFFFFFFFFC00000000000000003F00000000000000001F80000000000000000FE +00000000000000003F80000000000000001FE00000000000000007F80000000000000001 +FF0000000000000001FF0000000000000007F8000000000000001FE0000000000000003F +8000000000000000FE0000000000000001F80000000000000003F0007FFFFFFFFFFFFFC0 +00FFFFFFFFFFFFFF8000FFFFFFFFFFFFFF00007FFFFFFFFFFFFE00000000000000007C00 +00000000000000F80000000000000001F00000000000000003E00000000000000003C000 +00000000000007C0000000000000000F80000000000000000F00000000000000001F0000 +0000000000001E00000000000000003E00000000000000003C00000000000000003C0000 +0048307BAC53>41 D<0000000001800000000003C00000000007C00000000007C0000000 +000F80000000000F80000000001F00000000001F00000000003E00000000003E00000000 +007C00000000007C0000000000F80000000000F80000000001F00000000001F000000000 +03E00000000003E00000000007C0000000000FC0000000000F80000000001F0000000000 +1F00000000003E00000000003E00000000007C00000000007C0000000000F80000000000 +F80000000001F00000000001F00000000003E00000000003E00000000007C00000000007 +C0000000000F80000000000F80000000001F00000000001F00000000003E00000000003E +00000000007C00000000007C0000000000F80000000000F80000000001F00000000001F0 +0000000003E00000000003E00000000007C00000000007C0000000000F80000000000F80 +000000001F00000000001F00000000003E00000000003E00000000007C0000000000FC00 +00000000F80000000001F00000000001F00000000003E00000000003E00000000007C000 +00000007C0000000000F80000000000F80000000001F00000000001F00000000003E0000 +0000003E00000000007C00000000007C0000000000F80000000000F80000000000F00000 +0000006000000000002A4E75BB00>54 D<00000003FE000000001FFF800000007FFFC000 +0003FFFFC0000007C0FFC000001E003FC000003C001FC00000F0001FC00001E0001F8000 +03C0001F80000780001F80000F00003F00001F00003F00003E00003F00007C00007E0000 +7C00007E0000F800007C0001F80000FC0001F00000F80003F00001E00003E00001C00007 +E00000000007C0000000000FC0000000000FC0000000001F80000000001F80000000001F +80000000003F80000000003F00000000003F00000000003F00000000007F00000000007F +00000000007E00000000007E00000000007E0000000000FE0000000000FE0000000000FE +0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FF +0000000000FF0000001E00FF0000003C00FF800000F8007F800000F8007FC00001F0007F +C00003E0003FE00003C0003FF0000780001FF8000F00001FFE003C00000FFF80F8000007 +FFFFE0000003FFFF80000000FFFE000000003FF00000002A3D7FBA2C>67 +D<00000003FE000000003FFFC0000000FFFFE0000003FFFFF000000FC0FFF000001E001F +F0000078000FF00000F00007F00001E00007E00003E00007C00007C0000780000FC0000F +00000FC0001E00001F80000000001F80000000001F80000000003F80000000003F800000 +00003F80000000003FC0000000003FC0000000003FE0000000003FF0000000001FF80000 +00001FFE000000000FFFC000000007FFFE00000003FFFC00000000FFF800000000FFE000 +000001F8000000000780000000000F00000000003C0000000000780000000000F0000000 +0001E00000000003E00000000007C0000000000F80000000000F80000000001F00000000 +003F00000000003F00000000007E00000000007E00000000007E0000003C00FE00000078 +00FE000001F000FE000001F000FF000003E000FF000007C000FF8000078000FFC0000F00 +007FE0001E00007FF8007800003FFF03F000001FFFFFC000000FFFFF00000003FFFC0000 +00007FC00000002C3D7EBA2C>69 D<0000380000003F000000F8000001FF800003F80000 +07FFC0000FF800001F1FC0001FF800007C0FC0007BF80001F007C000E3F80003C007C000 +03F8000F0007800003F8001E0007000003F000780000000003F000F00000000003F003C0 +0000000007F007800000000007F00F000000000007F01C000000000007F0780000000000 +07E0F0000000000007E1E0000000000007E3C000000000000FE78000000000000FEF0000 +000000000FDF0000000000000FDE0000000000000FFE0000000000001FFE000000000000 +1FBE0000000000001FBE0000000000001FBF0000000000003FBF0000000000003F3F0000 +000000003F1F0000000000003F1F8000000000007E1F8000000000007E1F800000000000 +7E0FC00000000000FE0FC00000000000FC0FE00000000000FC07E00000000000FC07E000 +00000001F803F00000000001F803F00000000001F803F80000000003F001F80000000003 +F001FC0000000003F000FC0000000007E000FE0000000007E0007E0000000007E0007F00 +0000000FC0003F800001800FC0003F800007800FC0001FC0000F801F80000FE0000F001F +80000FE0001F001F800007F0001E003F000003F8003C003F000003FC0078003E000001FE +01E0007E000000FF87C0007C0000007FFF0000F80000003FFC0000E00000000FE000003A +3D7EBA3F>75 D<000001F800000FF800003F800000FC000001F8000003F0000007E00000 +07E000000FE000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +1FC000001F8000003F8000007F000000FE000003F800007FE00000FF0000007FE0000003 +F8000000FE0000007F0000003F8000001F8000001FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FE0000007E0000007E0000003F0000001F80000 +00FC0000003F8000000FF8000001F81D537ABD2A>102 DI<0000C00001E00003E00003E00003C00007C00007C0000780000F80000F80001F00 +001F00001E00003E00003E00007C00007C0000780000F80000F80001F00001F00001E000 +03E00003E00003C00007C00007C0000F80000F80000F00001F00001F00003E00003E0000 +3C00007C00007C0000780000F80000F80000F80000F800007800007C00007C00003C0000 +3E00003E00001F00001F00000F00000F80000F800007C00007C00003C00003E00003E000 +01E00001F00001F00000F80000F800007800007C00007C00003E00003E00001E00001F00 +001F00000F80000F800007800007C00007C00003C00003E00003E00001E00000C0135278 +BD20>I<600000F00000F80000F800007800007C00007C00003C00003E00003E00001F00 +001F00000F00000F80000F800007C00007C00003C00003E00003E00001F00001F00000F0 +0000F80000F800007800007C00007C00003E00003E00001E00001F00001F00000F80000F +800007800007C00007C00003C00003E00003E00003E00003E00003C00007C00007C00007 +80000F80000F80001F00001F00001E00003E00003E00007C00007C0000780000F80000F8 +0000F00001F00001F00003E00003E00003C00007C00007C0000F80000F80000F00001F00 +001F00003E00003E00003C00007C00007C0000780000F80000F80000F000006000001352 +7CBD20>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F060045377BD17>I<007E0001FFC007C1E00F00701E +00383E001C7C000C7C001E7C007EF8007EF8007EF8007EF8003CF80000F80000F800007C +00007C00007C00003E00001E00000F000007800003C00000F00000FC0003FF000F87801F +01E03E01F03E00F87C007C7C007CFC003EF8003EF8001FF8001FF8001FF8001FF8001FF8 +001F7C001F7C003F3E003E3E003E1F007C0F807C0780F801E1F000FFC0003F00000F0000 +03C00001E00000F000007800007C00003E00003E00003E00001F00001F00001F3C001F7E +001F7E001F7E001F7E003E78003E30003E38007C1C00780E00F00783E003FF80007E0018 +4C7ABA25>120 D<000F0000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000000F0000000F0000000F0000000F0000000F0000000F0000 +000F00000006000000060000000600007E0607E0FFC63FF0FFFFFFF0FFFFFFF0FFC63FF0 +7E0607E00006000000060000000F0000000F0000000F0000000F0000000F0000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000000F0000000F0000000F0000 +000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 +000F00000006000000060000000600000006000000060000000600001C4D7CBA25>I +E /Fq 92 127 df<780000FE0000FF8000FFF000FFFC007FFF000FFF8003FF8000FF8000 +3F00000700110B76B22C>18 D<1C007F00FF80FF80FF80FF80FF80FF80FF80FF80FF80FF +80FF80FF80FF80FF80FF80FF80FF807F007F007F007F007F007F007F007F007F007F007F +007F007F007F007F003E00000000000000000000000000000000001C007F007F00FF80FF +80FF807F007F001C0009346FB32C>33 D<3C001E007F007F00FF007F80FF007F80FF007F +80FF007F80FF007F80FF007F807F007F007F007F007F007F007F007F007F007F007F007F +007E003F007E003F007E003F007E003F007E003F007E003F003E003E003E003E003E003E +003C001E001C001C00191977B32C>I<000F003C00001F807E00001F807E00001F807E00 +001F807E00001F807E00001F807E00001F807E00001F807E00003F80FE00003F00FC0000 +3F00FC00003F00FC00003F00FC007FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFF +FFFFF83FFFFFFFF0007E01F800007E01F800007E01F800007E01F800007E01F80000FE03 +F80000FC03F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F0003FFFFFFF +F0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF001F807E00001F807E000 +01F807E00003F80FE00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003 +F00FC00003F00FC00003F00FC00001E007800025337DB22C>I<0001C000000003E00000 +0003E000000003E000000003E000000003E000000003E00000000FFC0000007FFF800001 +FFFFE00007FFFFF0000FFFFFF8001FFBEFFC003FC3E1FE003F03E07F007E03E03F007C03 +E03F00FC03E03F80F803E03F80F803E07F80F803E07F80F803E07F80FC03E03F00FC03E0 +3F007E03E000007F03E000003FC3E000003FFBE000001FFFE000000FFFFC000007FFFF00 +0001FFFFC000007FFFE000001FFFF8000003FFFC000003E7FC000003E1FE000003E07F00 +0003E03F001803E01F007E03E01F807E03E00F80FF03E00F80FF03E00F80FF03E00F80FE +03E00F80FE03E01F80FE03E01F007E03E03F007F03E03E003F83E0FE003FC3E1FC001FFB +EFF8000FFFFFF00007FFFFE00003FFFFC00000FFFF0000001FF800000003E000000003E0 +00000003E000000003E000000003E000000003E000000001C0000021417BB92C>I<0780 +0007001FE0000F801FE0001F803FF0001F807FF8003F807FF8003F007CF8007F00FCFC00 +7E00F87C007E00F87C00FE00F87C00FC00F87C01FC00F87C01F800F87C01F800F87C03F8 +00FCFC03F0007CF803F0007FF807F0007FF807E0003FF00FE0001FE00FC0001FE00FC000 +07801FC00000001F800000003F800000003F000000003F000000007F000000007E000000 +00FE00000000FC00000000FC00000001FC00000001F800000001F800000003F800000003 +F000000007F000000007E000000007E00000000FE00000000FC00000001FC00000001F80 +0F00001F803FC0003F807FE0003F007FE0007F00FFF0007E00F9F0007E00F9F000FE01F9 +F800FC01F0F800FC01F0F801FC01F0F801F801F0F803F801F0F803F001F0F803F001F9F8 +07F000F9F007E000F9F00FE000FFF00FC0007FE00FC0007FE007C0003FC00380000F0025 +417DB92C>I<000FC00000003FE00000007FF0000000FFF8000000FFFC000001F8FC0000 +01F07C000001F07E000003F03E000003E03E000003E03E000003E03E000003E03E000003 +E03E000003E07E000003E07C000003E0FC3FF803F0F87FFC01F1F87FFC01F3F07FFC01F7 +F03FF801F7E01F0001FFC03F0000FF803E0000FF803E0000FF007E0000FE007C0001FC00 +7C0003FE00FC0007FE00F80007FF01F8000FDF01F0001F9F81F0003F8F83F0003F0FC3E0 +007E07E7E0007E07E7C000FC03F7C000FC01FFC000FC01FF8000FC00FF8010FC00FF007C +FC007F007CFC007F007CFE00FF807C7E01FFC07C7F03FFE0FC3F87F7F1F83FFFE3FFF81F +FFC1FFF00FFF80FFF007FF007FC001FC001F8026357EB32C>I<0F801FC03FE03FF03FF0 +3FF83FF81FF80FF800F800F800F800F801F801F001F003F003E007E00FC01FC03F807F00 +FE00FC00F80070000D1B71B22C>I<0000380000FC0001FC0003FC0007F8000FF0001FC0 +003F80007F0000FE0001FC0003F80003F00007F00007E0000FE0000FC0001F80001F8000 +3F80003F00003F00007F00007E00007E00007E0000FE0000FC0000FC0000FC0000FC0000 +FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FE00007E00007E00007E0000 +7F00003F00003F00003F80001F80001F80000FC0000FE00007E00007F00003F00003F800 +01FC0000FE00007F00003F80001FC0000FF00007F80003FC0001FC0000FC000038164272 +B92C>I<700000FC0000FE0000FF00007F80003FC0000FE00007F00003F80001FC0000FE +00007F00003F00003F80001F80001FC0000FC00007E00007E00007F00003F00003F00003 +F80001F80001F80001F80001FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000 +FC0000FC0000FC0000FC0000FC0001FC0001F80001F80001F80003F80003F00003F00007 +F00007E00007E0000FC0001FC0001F80003F80003F00007F0000FE0001FC0003F80007F0 +000FE0003FC0007F8000FF0000FE0000FC0000700000164279B92C>I<000380000007C0 +000007C0000007C0000007C0000007C0000007C0002007C008F807C03EFE07C0FEFF07C1 +FEFFC7C7FEFFE7CFFE3FFFFFF80FFFFFE003FFFF8001FFFF00007FFC00007FFC0001FFFF +0003FFFF800FFFFFE03FFFFFF8FFE7CFFEFFC7C7FEFF07C1FEFE07C0FEF807C03E2007C0 +080007C0000007C0000007C0000007C0000007C0000007C000000380001F247AAA2C>I< +00007800000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000000 +00FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000 +FC00000000FC00007FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFF +FFF00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00 +000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 +0000FC0000000078000025267DAB2C>I<0F801FE03FF07FF87FF87FFC7FFC7FFC3FFC1F +FC0FFC00FC00F800F801F803F007F01FE07FC0FF80FF00FC0070000E17718A2C>I<7FFF +FFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF807FFFFFFF0021067B9B2C>I<1F +003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B708A2C>I<0000000700000000 +0F800000001F800000001F800000003F800000003F000000007F000000007E00000000FE +00000000FC00000001FC00000001F800000003F800000003F000000003F000000007F000 +000007E00000000FE00000000FC00000001FC00000001F800000003F800000003F000000 +007F000000007E00000000FE00000000FC00000000FC00000001FC00000001F800000003 +F800000003F000000007F000000007E00000000FE00000000FC00000001FC00000001F80 +0000001F800000003F800000003F000000007F000000007E00000000FE00000000FC0000 +0001FC00000001F800000003F800000003F000000007F000000007E000000007E0000000 +0FE00000000FC00000001FC00000001F800000003F800000003F000000007F000000007E +00000000FE00000000FC00000000FC00000000F800000000780000000021417BB92C>I< +0003F80000000FFE0000003FFF8000007FFFC00000FFFFE00001FE0FF00003F803F80007 +F001FC0007E000FC000FC0007E000FC0007E001F80003F001F80003F003F00001F803F00 +001F803E00000F807E00000FC07E00000FC07E00000FC07C000007C0FC000007E0FC0000 +07E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007 +E0FC000007E0FC000007E0FC000007E0FE00000FE07E00000FC07E00000FC07E00000FC0 +7E00000FC03F00001F803F00001F803F00001F801F80003F001F80003F000FC0007E000F +E000FE0007E000FC0007F001FC0003F803F80001FE0FF00000FFFFE000007FFFC000003F +FF8000000FFE00000003F8000023357CB32C>I<00070000000F8000000F8000001F8000 +001F8000003F8000007F800000FF800001FF800007FF80007FFF8000FFFF8000FFDF8000 +FF9F80007C1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F80007FFFFFE0FFFFFFF0 +FFFFFFF0FFFFFFF07FFFFFE01C3477B32C>I<000FF80000007FFF800001FFFFE00007FF +FFF0000FFFFFFC001FF80FFE003FE001FF003F80007F007F00003F807E00001F80FE0000 +1FC0FE00000FC0FF00000FE0FF000007E0FF000007E0FF000007E07E000007E03C000007 +E000000007E000000007E00000000FE00000000FC00000001FC00000001F800000003F80 +0000003F000000007F00000000FE00000001FC00000003FC00000007F80000000FF00000 +001FE00000003FC0000000FF80000001FE00000003FC00000007F80000000FF00000003F +E00000007F80000000FF00000001FE00000003FC0003C007F80007E01FE00007E03FC000 +07E07FFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC023347CB32C>I<000F +FC0000007FFF800001FFFFE00007FFFFF8000FFFFFFC001FF807FE001FC000FE003F8000 +7F003FC0003F003FC0003F803FC0001F803FC0001F801F80001F800F00001F800000001F +800000003F800000003F000000007F00000000FE00000001FE00000003FC0000001FF800 +001FFFF000003FFFE000003FFFE000003FFFF800001FFFFC00000007FE00000000FF0000 +00007F000000003F800000001FC00000000FC00000000FC00000000FE000000007E00000 +0007E03C000007E07E000007E0FF000007E0FF00000FE0FF00000FC0FF00000FC0FE0000 +1FC07F00003F807F80007F003FC000FF001FF807FE000FFFFFFC0007FFFFF80003FFFFE0 +00007FFF8000000FFC000023357CB32C>I<000007F00000000FF80000001FF80000003F +F80000003FF80000007EF80000007EF8000000FCF8000001F8F8000001F8F8000003F0F8 +000007E0F8000007E0F800000FC0F800001F80F800001F80F800003F00F800007E00F800 +007E00F80000FC00F80001F800F80001F800F80003F000F80003E000F80007E000F8000F +C000F8000FC000F8001F8000F8003F0000F8003F0000F8007E0000F800FC0000F800FFFF +FFFFFCFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC000000F800000000F800000000 +F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8 +0000007FFFF00000FFFFF80000FFFFF80000FFFFF800007FFFF027347EB32C>I<0FFFFF +FE001FFFFFFF001FFFFFFF001FFFFFFF001FFFFFFE001F800000001F800000001F800000 +001F800000001F800000001F800000001F800000001F800000001F800000001F80000000 +1F800000001F800000001F800000001F83FE00001F9FFF80001FFFFFE0001FFFFFF8001F +FFFFFC001FFE03FE001FF000FF001FC0007F001F80003F801F00001F800F00001FC00000 +000FC00000000FC000000007E000000007E000000007E000000007E03C000007E07E0000 +07E0FF000007E0FF00000FE0FF00000FC0FF00000FC0FE00001FC07E00003F807F00007F +003F8000FF003FC001FE001FF80FFC000FFFFFF80007FFFFF00001FFFFC000007FFF0000 +000FF8000023347CB22C>I<00003FC0000001FFF8000007FFFC00001FFFFE00003FFFFF +00007FE07F0000FF003F8001FE007F8003F8007F8007F0007F8007E0007F800FE0003F00 +1FC0001E001F800000003F800000003F000000003F000000007F000000007E000000007E +03FE00007E1FFF8000FC7FFFE000FDFFFFF000FFFFFFF800FFFE07FC00FFF001FE00FFC0 +007F00FF80003F80FF00001F80FF00001FC0FE00000FC0FE00000FE0FE000007E0FE0000 +07E0FE000007E07E000007E07E000007E07E000007E07E000007E03F000007E03F00000F +E03F80000FC01F80001FC01FC0001F800FC0003F800FE0007F0007F801FE0003FE07FC00 +01FFFFF80000FFFFF000007FFFE000001FFF80000007FC000023357CB32C>I<78000000 +00FFFFFFFFC0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00003F80FC00007F00 +FC0000FE00780000FC00000001FC00000003F800000007F000000007E00000000FE00000 +000FC00000001F800000003F800000003F000000007F000000007E00000000FE00000000 +FC00000001FC00000001F800000001F800000003F000000003F000000007F000000007E0 +00000007E000000007E00000000FC00000000FC00000000FC00000000FC00000001F8000 +00001F800000001F800000001F800000001F800000003F800000003F000000003F000000 +003F000000003F000000003F000000003F000000003F000000003F000000003F00000000 +3F000000001E00000023357CB32C>I<0007FC0000003FFF800000FFFFE00003FFFFF800 +07FFFFFC000FFC07FE001FF001FF001FC0007F003F80003F803F00001F807F00001FC07E +00000FC07E00000FC07E00000FC07E00000FC07E00000FC03F00001F803F00001F801F80 +003F001FC0007F000FF001FE0003FC07F80001FFFFF000007FFFC0000007FC0000007FFF +C00001FFFFF00003FC07F8000FF001FE001FC0007F001F80003F003F00001F807E00000F +C07E00000FC0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0 +FC000007E07E00000FC07E00000FC07F00001FC03F80003F801FC0007F001FF001FF000F +FC07FE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC000023357CB32C>I< +0007FC0000003FFF000000FFFFC00001FFFFE00003FFFFF00007FC07F8000FF001FC001F +E000FE003F80007E003F80007F007F00003F007E00001F80FE00001F80FC00001F80FC00 +000FC0FC00000FC0FC00000FC0FC00000FC0FC00000FE0FC00000FE0FC00000FE0FE0000 +0FE07E00000FE07F00001FE03F00001FE03F80003FE01FC0007FE00FF001FFE007FC0FFF +E003FFFFFFE001FFFFF7E000FFFFC7E0003FFF0FE0000FF80FC00000000FC00000000FC0 +0000001FC00000001F800000003F800000003F000F00007F001F80007E003FC000FE003F +C001FC003FC003F8003FC007F8003F801FF0001FE07FE0001FFFFFC0000FFFFF000007FF +FE000001FFF80000007FC0000023357CB32C>I<1F003F807FC0FFE0FFE0FFE0FFE0FFE0 +7FC03F801F00000000000000000000000000000000000000000000000000000000001F00 +3F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B2470A32C>I<0F801FC03FE07FF07F +F07FF07FF07FF03FE01FC00F800000000000000000000000000000000000000000000000 +00000000000F801FC03FE07FE07FF07FF07FF07FF03FF01FF00FF001F003F003E007E00F +C00FC03F807F00FF00FE00F80070000C3071A32C>I<00000007000000001F800000003F +80000000FF80000003FF80000007FF0000001FFC0000003FF8000000FFE0000001FF8000 +0007FF0000000FFC0000003FF80000007FE0000001FFC0000003FF0000000FFE0000001F +F80000007FF0000000FFC0000000FF80000000FF80000000FFC00000007FF00000001FF8 +0000000FFE00000003FF00000001FFC00000007FE00000003FF80000000FFC00000007FF +00000001FF80000000FFE00000003FF80000001FFC00000007FF00000003FF80000000FF +800000003F800000001F800000000700212A7BAD2C>I<7FFFFFFFF0FFFFFFFFF8FFFFFF +FFF8FFFFFFFFF8FFFFFFFFF83FFFFFFFF000000000000000000000000000000000000000 +0000000000000000000000000000000000000000003FFFFFFFF0FFFFFFFFF8FFFFFFFFF8 +FFFFFFFFF8FFFFFFFFF87FFFFFFFF025147DA22C>I<7000000000FC00000000FE000000 +00FF80000000FFE00000007FF00000001FFC0000000FFE00000003FF80000000FFC00000 +007FF00000001FF80000000FFE00000003FF00000001FFC00000007FE00000003FF80000 +000FFC00000007FF00000001FF80000000FF80000000FF80000001FF80000007FF000000 +0FFC0000003FF80000007FE0000001FFC0000003FF0000000FFE0000001FF80000007FF0 +000000FFC0000003FF8000000FFE0000001FFC0000007FF0000000FFE0000000FF800000 +00FE00000000FC000000007000000000212A7BAD2C>I<003FFE000003FFFFC0000FFFFF +F0001FFFFFFC003FFFFFFE007FE007FF007F0000FF00FE00003F80FF00001F80FF00001F +80FF00001F80FF00003F807E00007F003C0000FF00000003FE0000000FFC0000001FF800 +00003FE00000007FC0000000FF00000001FE00000003FC00000003F800000007F8000000 +07F00000000FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000F +E00000000FE000000007C000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000003800000000FE00000000FE00000001FF000 +00001FF00000001FF00000000FE00000000FE00000000380000021337BB22C>I<00007F +80000003FFE000000FFFF000003FFFF800007FFFFC0000FFC0FE0001FE007F0003F8003F +0007F0001F8007E00FCF800FC03FFF801F807FFFC01F80FFFFC03F01FFFFC03E03F87FC0 +3E07F03FE07E07E01FE07C0FC00FE07C0F8007E07C0F8007E0FC1F8007E0F81F0003E0F8 +1F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F +0003E0FC1F8007E07C0F8007C07C0F8007C07C0FC00FC07E07E01F803E07F03F803E03F8 +7F003F01FFFE001F80FFFC001F807FF8000FC03FF00007E00FC00007F00007C003F8000F +E001FE001FE000FFC0FFE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC000 +23337CB22C>I<0000FE00000001FF00000001FF00000001FF00000001FF00000003FF80 +000003FF80000003EF80000003EF80000007EF80000007EFC0000007EFC0000007C7C000 +0007C7C000000FC7E000000FC7E000000FC7E000000FC3E000001F83F000001F83F00000 +1F83F000001F83F000001F83F000003F01F800003F01F800003F01F800003F01F800007E +00FC00007E00FC00007E00FC00007E00FC00007E00FC0000FC007E0000FFFFFE0000FFFF +FE0000FFFFFE0001FFFFFF0001FFFFFF0001F8003F0001F8003F0001F8003F0003F0001F +8003F0001F8003F0001F8003F0001F8007F0001FC007E0000FC07FFE00FFFC7FFF01FFFC +FFFF01FFFE7FFF01FFFC7FFE00FFFC27347EB32C>I<7FFFFFE0007FFFFFF800FFFFFFFE +007FFFFFFF007FFFFFFFC003F0003FC003F0000FE003F00007F003F00003F003F00003F0 +03F00001F803F00001F803F00001F803F00001F803F00001F803F00001F803F00003F003 +F00003F003F00007F003F0000FE003F0001FC003F000FF8003FFFFFF0003FFFFFE0003FF +FFFC0003FFFFFF0003FFFFFFC003F0001FE003F00007F003F00003F803F00001F803F000 +00FC03F00000FC03F00000FE03F000007E03F000007E03F000007E03F000007E03F00000 +7E03F000007E03F00000FE03F00000FC03F00001FC03F00003F803F0000FF803F0003FF0 +7FFFFFFFE07FFFFFFFC0FFFFFFFF807FFFFFFE007FFFFFF00027337FB22C>I<0000FF00 +700007FFE0F8000FFFF9F8003FFFFDF8007FFFFFF800FF81FFF801FE007FF803FC001FF8 +07F0000FF807F00007F80FE00007F80FC00003F81F800003F81F800001F83F000001F83F +000001F87F000001F87E000000F07E000000007E00000000FE00000000FC00000000FC00 +000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 +0000FC00000000FC00000000FE000000007E000000007E000000007E000000007F000000 +F03F000001F83F000001F81F800001F81F800001F80FC00003F80FE00003F007F00007F0 +07F00007E003FC001FE001FE003FC000FF81FF80007FFFFF00003FFFFE00000FFFFC0000 +07FFF0000000FF800025357DB32C>I<7FFFFF0000FFFFFFC000FFFFFFF000FFFFFFF800 +7FFFFFFC0007E003FE0007E000FF0007E0007F8007E0003F8007E0001FC007E0000FE007 +E0000FE007E00007E007E00007F007E00003F007E00003F807E00001F807E00001F807E0 +0001F807E00001F807E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E000 +00FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00001 +F807E00001F807E00001F807E00003F807E00003F007E00003F007E00007F007E00007E0 +07E0000FE007E0001FC007E0003FC007E0007F8007E000FF0007E003FE007FFFFFFC00FF +FFFFF800FFFFFFF000FFFFFFC0007FFFFF000026337EB22C>I<7FFFFFFFF0FFFFFFFFF8 +FFFFFFFFF8FFFFFFFFF87FFFFFFFF803F00001F803F00001F803F00001F803F00001F803 +F00001F803F00001F803F00001F803F00000F003F000000003F000000003F000000003F0 +00000003F001E00003F003F00003F003F00003F003F00003F003F00003FFFFF00003FFFF +F00003FFFFF00003FFFFF00003FFFFF00003F003F00003F003F00003F003F00003F003F0 +0003F001E00003F000000003F000000003F000000003F000000003F000000003F000003C +03F000007E03F000007E03F000007E03F000007E03F000007E03F000007E03F000007E03 +F000007E7FFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC27337EB22C>I< +7FFFFFFFF8FFFFFFFFFCFFFFFFFFFCFFFFFFFFFC7FFFFFFFFC03F00000FC03F00000FC03 +F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F000007803F000000003F0 +00000003F000000003F000000003F000000003F000F00003F001F80003F001F80003F001 +F80003F001F80003FFFFF80003FFFFF80003FFFFF80003FFFFF80003FFFFF80003F001F8 +0003F001F80003F001F80003F001F80003F000F00003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F00000007FFFE00000FFFFE00000FFFFF00000FFFFE000007FFF +E0000026337EB22C>I<0001FC0380000FFF87C0001FFFEFC0007FFFFFC000FFFFFFC001 +FF07FFC003FC01FFC003F800FFC007F0007FC00FE0003FC00FC0001FC01FC0001FC01F80 +001FC03F80000FC03F00000FC03F00000FC07E00000FC07E000007807E000000007E0000 +0000FE00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000000 +00FC00000000FC00000000FC0003FFF8FC0007FFFCFC0007FFFCFE0007FFFC7E0003FFF8 +7E00000FC07E00000FC07E00000FC03F00001FC03F00001FC03F80001FC01F80001FC01F +C0003FC00FC0003FC00FE0007FC007F0007FC003F800FFC003FC01FFC001FF07FFC000FF +FFFFC0007FFFEFC0001FFFCFC0000FFF07800001FC000026357DB32C>I<7FFE00FFFCFF +FF01FFFEFFFF01FFFEFFFF01FFFE7FFE00FFFC07E0000FC007E0000FC007E0000FC007E0 +000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E000 +0FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007FFFFFF +C007FFFFFFC007FFFFFFC007FFFFFFC007FFFFFFC007E0000FC007E0000FC007E0000FC0 +07E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007 +E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0 +000FC007E0000FC07FFE00FFFCFFFF01FFFEFFFF01FFFEFFFF01FFFE7FFE00FFFC27337E +B22C>I<7FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF8000FC000000FC000000FC000 +000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000 +000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000 +000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000 +000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000 +000FC000000FC0007FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E3379B22C>I<7F +FC007FF8FFFE00FFFCFFFE00FFFCFFFE00FFFC7FFC007FF807C0001F8007C0003F8007C0 +007F0007C0007E0007C000FC0007C001F80007C003F80007C007F00007C007E00007C00F +C00007C01F800007C03F800007C07F000007C07E000007C0FC000007C1F8000007C3F800 +0007C7FC000007C7FC000007CFFE000007DFBE000007FFBF000007FF1F000007FE1F8000 +07FC0FC00007F80FC00007F807E00007F003E00007E003F00007C001F00007C001F80007 +C000FC0007C000FC0007C0007E0007C0003E0007C0003F0007C0001F0007C0001F8007C0 +000FC007C0000FC007C00007E07FFC001FFCFFFE003FFEFFFE003FFEFFFE003FFE7FFC00 +1FFC27337EB22C>75 D<7FFFE00000FFFFF00000FFFFF00000FFFFF000007FFFE0000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F00000F003F00001F803F00001F803F00001F803 +F00001F803F00001F803F00001F803F00001F803F00001F87FFFFFFFF8FFFFFFFFF8FFFF +FFFFF8FFFFFFFFF87FFFFFFFF025337DB22C>I<7FE0000FFCFFF0001FFEFFF0001FFEFF +F8003FFE7FF8003FFC0FF8003FE00FBC007BE00FBC007BE00FBC007BE00FBC007BE00F9E +00F3E00F9E00F3E00F9E00F3E00F9F01F3E00F9F01F3E00F8F01E3E00F8F01E3E00F8F83 +E3E00F8F83E3E00F8783C3E00F87C7C3E00F87C7C3E00F83C783E00F83C783E00F83EF83 +E00F83EF83E00F81EF03E00F81EF03E00F81FF03E00F80FE03E00F80FE03E00F80FE03E0 +0F807C03E00F803803E00F800003E00F800003E00F800003E00F800003E00F800003E00F +800003E00F800003E00F800003E00F800003E00F800003E00F800003E00F800003E07FF0 +001FFCFFF8003FFEFFF8003FFEFFF8003FFE7FF0001FFC27337EB22C>I<7FF0007FFCFF +F800FFFEFFF800FFFEFFFC00FFFE7FFC007FFC07FE0007C007DE0007C007DE0007C007DF +0007C007CF0007C007CF0007C007CF8007C007C78007C007C7C007C007C7C007C007C3C0 +07C007C3E007C007C3E007C007C1E007C007C1F007C007C1F007C007C0F007C007C0F807 +C007C0F807C007C07C07C007C07C07C007C07C07C007C03E07C007C03E07C007C01E07C0 +07C01F07C007C01F07C007C00F07C007C00F87C007C00F87C007C00787C007C007C7C007 +C007C7C007C003C7C007C003E7C007C001E7C007C001E7C007C001F7C007C000F7C007C0 +00F7C007C000FFC07FFC007FC0FFFE007FC0FFFE003FC0FFFE003FC07FFC001F8027337E +B22C>I<007FFF000003FFFFE0000FFFFFF8001FFFFFFC003FFFFFFE003FE003FE003F80 +00FE007F00007F007F00007F007E00003F007E00003F007E00003F00FE00003F80FC0000 +1F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F +80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80 +FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC +00001F80FC00001F80FC00001F80FC00001F80FE00003F80FE00003F807E00003F007E00 +003F007E00003F007F00007F007F00007F003F8000FE003FF007FE003FFFFFFE001FFFFF +FC000FFFFFF80003FFFFE000007FFF000021357BB32C>I<7FFFFFC000FFFFFFF800FFFF +FFFC00FFFFFFFF007FFFFFFF8003F000FFC003F0003FC003F0000FE003F00007F003F000 +07F003F00003F003F00003F803F00001F803F00001F803F00001F803F00001F803F00001 +F803F00001F803F00003F803F00003F003F00007F003F00007F003F0000FE003F0003FC0 +03F000FFC003FFFFFF8003FFFFFF0003FFFFFC0003FFFFF80003FFFFC00003F000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +00007FFF800000FFFFC00000FFFFC00000FFFFC000007FFF80000025337EB22C>I<007F +FF000003FFFFE0000FFFFFF8001FFFFFFC003FFFFFFE003FF007FE003F8000FE007F0000 +7F007F00007F007E00003F007E00003F007E00003F00FE00003F80FC00001F80FC00001F +80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80 +FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC +00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00 +001F80FC00001F80FC01F01F80FC03F81F80FE03F83F807E01FC3F007E01FC3F007E00FE +3F007F00FE7F007F007F7F003F807FFE003FF03FFE003FFFFFFE001FFFFFFC000FFFFFF8 +0003FFFFE000007FFFE000000007F000000007F000000003F800000003F800000001FC00 +000001FC00000000FE00000000FE000000007F000000007F000000003E0021407BB32C> +I<7FFFFC000000FFFFFF800000FFFFFFE00000FFFFFFF800007FFFFFFC000007E007FE00 +0007E001FE000007E0007F000007E0003F800007E0001F800007E0001F800007E0000FC0 +0007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0001F80 +0007E0001F800007E0003F800007E0007F000007E001FE000007E007FE000007FFFFFC00 +0007FFFFF8000007FFFFE0000007FFFFF0000007FFFFF8000007E007FC000007E001FE00 +0007E000FE000007E0007F000007E0003F000007E0003F000007E0003F000007E0003F00 +0007E0003F000007E0003F000007E0003F000007E0003F000007E0003F0F0007E0003F1F +8007E0003F1F8007E0003F1F8007E0003F1F8007E0003F1F807FFE001FBF80FFFF001FFF +00FFFF000FFF00FFFF000FFE007FFE0007FC0000000001F00029347EB22C>I<001FF807 +0000FFFF0F8001FFFFCF8007FFFFFF800FFFFFFF801FF01FFF803FC003FF803F8001FF80 +7F0000FF807E00007F80FE00003F80FC00003F80FC00001F80FC00001F80FC00001F80FC +00001F80FE00000F007E000000007F000000007F800000003FE00000001FFC0000001FFF +C000000FFFFC000003FFFFC00001FFFFF000007FFFF8000007FFFC0000007FFE00000007 +FF00000000FF800000003F800000001FC00000001FC00000000FE00000000FE078000007 +E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FE00000FC0FE00000FC0 +FF00001F80FF80003F80FFE0007F00FFFE01FF00FFFFFFFE00FFFFFFFC00F9FFFFF000F8 +3FFFC0007007FF000023357CB32C>I<7FFFFFFFFCFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE +FFFFFFFFFEFC007E007EFC007E007EFC007E007EFC007E007EFC007E007EFC007E007EFC +007E007E78007E003C00007E000000007E000000007E000000007E000000007E00000000 +7E000000007E000000007E000000007E000000007E000000007E000000007E000000007E +000000007E000000007E000000007E000000007E000000007E000000007E000000007E00 +0000007E000000007E000000007E000000007E000000007E000000007E000000007E0000 +00007E000000007E000000007E000000007E000000007E000000007E0000003FFFFC0000 +3FFFFC00007FFFFE00003FFFFC00003FFFFC0027337EB22C>I<7FFF803FFFC0FFFFC07F +FFE0FFFFC07FFFE0FFFFC07FFFE07FFF803FFFC003F00001F80003F00001F80003F00001 +F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 +F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 +F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 +F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 +F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 +F80003F80003F80001F80003F00001F80003F00001FC0007F00000FC0007E00000FE000F +E000007F001FC000003F803F8000003FE0FF8000001FFFFF0000000FFFFE00000003FFF8 +00000001FFF0000000003F8000002B3480B22C>I<7FFC007FFCFFFE00FFFEFFFE00FFFE +FFFE00FFFE7FFC007FFC0FC00007E00FE0000FE007E0000FC007E0000FC007E0000FC007 +F0001FC003F0001F8003F0001F8003F0001F8003F8003F8001F8003F0001F8003F0001F8 +003F0001FC007F0000FC007E0000FC007E0000FC007E0000FC007E00007E00FC00007E00 +FC00007E00FC00007E00FC00003F01F800003F01F800003F01F800003F01F800001F83F0 +00001F83F000001F83F000001F83F000000F83E000000FC7E000000FC7E000000FC7E000 +0007C7C0000007C7C0000007EFC0000007EFC0000003EF80000003EF80000003FF800000 +03FF80000001FF00000001FF00000001FF00000001FF00000000FE000027347EB22C>I< +7FF00007FF00FFF8000FFF80FFF8000FFF80FFF8000FFF807FF00007FF001F0000007C00 +1F0000007C001F0000007C001F0000007C000F800000F8000F800000F8000F800000F800 +0F800000F8000F800000F8000F800000F8000F800000F80007C00001F00007C00001F000 +07C00001F00007C00001F00007C03E01F00007C07F01F00007C07F01F00007C07F01F000 +03E0FF83E00003E0FF83E00003E0F783E00003E0F783E00003E1F7C3E00003E1F7C3E000 +03E1F7C3E00001E1E3C3C00001E1E3C3C00001F1E3C7C00001F3E3E7C00001F3E3E7C000 +01F3E3E7C00001F3C1E7C00001F3C1E7C00000F3C1E7800000F3C1E7800000F7C1F78000 +00F780F7800000F780F7800000F780F7800000FF80FF8000007F80FF0000007F007F0000 +007F007F0000007F007F0000007F007F0000003E003E000029347FB22C>I<3FFF03FFE0 +7FFF07FFF07FFF87FFF07FFF07FFF03FFF03FFE001F800FE0001FC00FE0000FC01FC0000 +FE01FC00007E01F800007F03F800003F03F000003F87F000001F87E000001FCFE000000F +CFC000000FFFC0000007FF80000007FF80000003FF00000003FF00000001FE00000001FE +00000000FC00000000FC00000001FE00000001FE00000003FF00000003FF00000007FF80 +000007FFC000000FCFC000000FCFE000001FC7E000001F87F000003F83F000003F03F800 +007F01F800007E01FC0000FE00FC0000FC00FE0001FC007E0001F8007F0003F8003F0003 +F0003F8003F0001F807FFE00FFFC7FFF01FFFCFFFF01FFFE7FFF01FFFC7FFE00FFFC2733 +7EB22C>I<7FFFFCFFFFFEFFFFFEFFFFFEFFFFFCFC0000FC0000FC0000FC0000FC0000FC +0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC +0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC +0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC +0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC +0000FC0000FFFFFCFFFFFEFFFFFEFFFFFE7FFFFC17416FB92C>91 +D<7800000000F800000000FC00000000FC00000000FE000000007E000000007F00000000 +3F000000003F800000001F800000001FC00000000FC00000000FE000000007E000000007 +E000000007F000000003F000000003F800000001F800000001FC00000000FC00000000FE +000000007E000000007F000000003F000000003F800000001F800000001F800000001FC0 +0000000FC00000000FE000000007E000000007F000000003F000000003F800000001F800 +000001FC00000000FC00000000FC00000000FE000000007E000000007F000000003F0000 +00003F800000001F800000001FC00000000FC00000000FE000000007E000000007F00000 +0003F000000003F000000003F800000001F800000001FC00000000FC00000000FE000000 +007E000000007F000000003F000000003F800000001F800000001F800000000F80000000 +070021417BB92C>I<7FFFFCFFFFFEFFFFFEFFFFFE7FFFFE00007E00007E00007E00007E +00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E +00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E +00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E +00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E +00007E00007E00007E7FFFFEFFFFFEFFFFFEFFFFFE7FFFFC17417DB92C>I<000E000000 +3F800000FFE00003FFF8000FFFFE001FFFFF007FF1FFC0FFE0FFE0FF803FE0FE000FE07C +0007C0300001801B0C78B22C>I<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFF +FFFF807FFFFFFF0021067B7D2C>I<007000F801F803F807F00FE01FC01F803F003E007E +007C007C00FC00F800F800F800F800FF80FFC0FFE0FFE07FE07FE03FE01FC00F800D1B71 +B82C>I<01FFF0000007FFFE00001FFFFF80001FFFFFE0003FFFFFF0003FC01FF8003FC0 +07F8003FC001FC001F8000FC00060000FE000000007E000000007E000000007E000000FF +FE00001FFFFE0000FFFFFE0003FFFFFE000FFFFFFE001FFF807E003FF8007E007FC0007E +007F00007E00FE00007E00FC00007E00FC00007E00FC00007E00FC00007E00FE00007E00 +7F0000FE007F8003FE003FE01FFE001FFFFFFFFC0FFFFFFFFE07FFFFBFFE01FFFE1FFE00 +3FF007FC27247CA32C>I<7FF0000000FFF8000000FFF8000000FFF80000007FF8000000 +01F800000001F800000001F800000001F800000001F800000001F800000001F800000001 +F800000001F800000001F800000001F81FE00001F8FFF80001FBFFFE0001FFFFFF0001FF +FFFF8001FFF07FC001FF801FE001FF0007F001FE0003F801FC0003F801FC0001FC01F800 +00FC01F80000FC01F80000FE01F800007E01F800007E01F800007E01F800007E01F80000 +7E01F800007E01F800007E01F800007E01F80000FE01FC0000FC01FC0000FC01FC0001F8 +01FE0003F801FF0007F001FF000FF001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001 +FBFFFE0001F8FFF80000F03FC00027337FB22C>I<0003FFE000001FFFF800007FFFFE00 +01FFFFFE0003FFFFFF0007FE00FF000FF000FF001FE000FF001FC0007E003F800018003F +000000007F000000007E000000007E00000000FC00000000FC00000000FC00000000FC00 +000000FC00000000FC00000000FC00000000FC000000007E000000007E000000007F0000 +00003F00000F003F80001F801FC0001F801FE0003F800FF0007F0007FE03FF0003FFFFFE +0001FFFFFC00007FFFF800001FFFE0000003FF000021247AA32C>I<00000FFE0000001F +FF0000001FFF0000001FFF0000000FFF000000003F000000003F000000003F000000003F +000000003F000000003F000000003F000000003F000000003F000000003F000007F83F00 +003FFE3F0000FFFFBF0001FFFFFF0003FFFFFF0007FC0FFF000FF003FF001FE001FF001F +C000FF003F80007F003F00007F007E00003F007E00003F00FE00003F00FC00003F00FC00 +003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003F00FE0000 +3F007E00007F007E00007F007F0000FF003F8000FF003F8001FF001FC003FF000FF007FF +0007FC1FFF0003FFFFFFFC01FFFFBFFE00FFFF3FFE003FFC3FFE000FF01FFC27337DB22C +>I<0003FE0000001FFFC000007FFFF00001FFFFF80003FFFFFC0007FE03FE000FF800FF +001FE0003F801FC0003F803F80001FC03F00000FC07F00000FC07E00000FE07E000007E0 +FC000007E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00000000FE +000000007E000000007E000000007F000000003F000003C03F800007E01FC00007E00FF0 +000FE007F8003FC007FF00FFC001FFFFFF8000FFFFFF00003FFFFC00000FFFF0000001FF +800023247CA32C>I<00000FF80000003FFE000000FFFF000001FFFF800003FFFF800007 +FC7F800007F07F80000FE03F00000FC03F00000FC00000000FC00000000FC00000000FC0 +0000000FC00000000FC000007FFFFFFE00FFFFFFFF00FFFFFFFF00FFFFFFFF007FFFFFFE +00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000 +000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000000 +0FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000F +C00000000FC00000000FC00000000FC00000000FC000003FFFFFF0007FFFFFF8007FFFFF +F8007FFFFFF8003FFFFFF00021337DB22C>I<00000003F80007F80FFC001FFE3FFE007F +FFFFFF01FFFFFFFF03FFFFFE7F03FC0FF87F07F003F83E0FE001FC1C0FC000FC001FC000 +FE001F80007E001F80007E001F80007E001F80007E001F80007E001F80007E001FC000FE +000FC000FC000FE001FC0007F003F80003FC0FF00007FFFFF00007FFFFE0000FFFFF8000 +0F9FFE00000F87F800000F800000000F800000000F800000000FC000000007E000000007 +FFFFF00003FFFFFE0007FFFFFF800FFFFFFFE01FFFFFFFF03FC0001FF87F000003FC7E00 +0000FC7C0000007CFC0000007EF80000003EF80000003EF80000003EF80000003EFC0000 +007E7E000000FC7F800003FC3FE0000FF81FFC007FF00FFFFFFFE003FFFFFF8001FFFFFF +00003FFFF8000007FFC00028387EA42C>I<7FF000000000FFF800000000FFF800000000 +FFF8000000007FF80000000001F80000000001F80000000001F80000000001F800000000 +01F80000000001F80000000001F80000000001F80000000001F80000000001F800000000 +01F81FE0000001F87FFC000001F9FFFE000001FBFFFF000001FFFFFF000001FFF03F8000 +01FFC01F800001FF801FC00001FF000FC00001FE000FC00001FC000FC00001FC000FC000 +01F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC000 +01F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC000 +01F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC000 +01F8000FC0007FFFE0FFFF00FFFFF1FFFF80FFFFF1FFFF80FFFFF1FFFF807FFFE0FFFF00 +29337FB22C>I<00070000001FC000001FC000003FE000003FE000003FE000001FC00000 +1FC00000070000000000000000000000000000000000000000000000000000000000007F +FFC0007FFFE000FFFFE0007FFFE0007FFFE0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0007FFFFFFCFFFFFFFEFFFFFFFEFFFFFFFE7FFFFFFC1F +3479B32C>I<00000E0000003F8000003F8000007FC000007FC000007FC000003F800000 +3F8000000E000000000000000000000000000000000000000000000000000000000001FF +FF8003FFFFC003FFFFC003FFFFC001FFFFC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000 +0FC000000FC000000FC000000FC000000FC000000FC000000FC000001FC03C001F807E00 +3F80FF003F00FF007F00FF01FE00FFFFFC007FFFF8007FFFF0001FFFE00007FF00001A46 +7CB32C>I<7FE0000000FFF0000000FFF0000000FFF00000007FF000000001F000000001 +F000000001F000000001F000000001F000000001F000000001F000000001F000000001F0 +00000001F000000001F01FFFF001F03FFFF801F03FFFF801F03FFFF801F01FFFF001F000 +FE0001F001FC0001F003F80001F007F00001F00FE00001F01FC00001F03F800001F07F00 +0001F0FE000001F1FC000001F3FC000001F7FE000001FFFF000001FFFF000001FF9F8000 +01FF0FC00001FE0FE00001FC07E00001F803F00001F001F80001F001FC0001F000FC0001 +F0007E0001F0003F0001F0003F8001F0001F807FFFC0FFFCFFFFE1FFFEFFFFE1FFFEFFFF +E1FFFE7FFFC0FFFC27337EB22C>I<7FFFE00000FFFFF00000FFFFF00000FFFFF000007F +FFF000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000007FFFFFFF80FFFF +FFFFC0FFFFFFFFC0FFFFFFFFC07FFFFFFF8022337BB22C>I<7F83F007E0007FCFFC1FF8 +00FFDFFE3FFC007FFFFEFFFC007FFFFFFFFE0007FE1FFC3E0007FC1FF83F0007F80FF01F +0007F00FE01F0007E00FC01F0007E00FC01F0007E00FC01F0007C00F801F0007C00F801F +0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F +0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F +0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F007FFC3FF87F +F07FFC7FF8FFF0FFFE7FFCFFF87FFC7FF8FFF07FFC3FF87FF02D2481A32C>I<7FF01FE0 +0000FFF87FFC0000FFF9FFFE0000FFFBFFFF00007FFFFFFF000001FFF03F800001FFC01F +800001FF801FC00001FF000FC00001FE000FC00001FC000FC00001FC000FC00001F8000F +C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F +C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F +C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F +C0007FFFE0FFFF00FFFFF1FFFF80FFFFF1FFFF80FFFFF1FFFF807FFFE0FFFF0029247FA3 +2C>I<0007FC0000001FFF0000007FFFC00001FFFFF00003FFFFF80007FC07FC000FF001 +FE001FE000FF001F80003F003F80003F803F00001F807E00000FC07E00000FC07E00000F +C0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0 +FE00000FE07E00000FC07E00000FC07F00001FC03F00001F803F80003F801FC0007F001F +E000FF000FF001FE0007FC07FC0003FFFFF80001FFFFF000007FFFC000001FFF00000007 +FC000023247CA32C>I<7FF01FE000FFF8FFF800FFFBFFFE00FFFFFFFF007FFFFFFF8001 +FFF07FC001FF801FE001FF0007F001FE0003F801FC0003F801FC0001FC01F80000FC01F8 +0000FC01F80000FE01F800007E01F800007E01F800007E01F800007E01F800007E01F800 +007E01F800007E01F800007E01F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003 +F801FF0007F001FF000FF001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE00 +01F8FFF80001F83FC00001F800000001F800000001F800000001F800000001F800000001 +F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 +0000007FFFE00000FFFFF00000FFFFF00000FFFFF000007FFFE0000027367FA32C>I<00 +03FC078000001FFF0FC000007FFFCFC00001FFFFEFC00003FFFFFFC00007FE07FFC0000F +F001FFC0001FE000FFC0001FC0007FC0003F80003FC0003F00003FC0007F00001FC0007E +00001FC0007E00000FC000FC00000FC000FC00000FC000FC00000FC000FC00000FC000FC +00000FC000FC00000FC000FC00000FC000FC00000FC000FE00000FC0007E00001FC0007E +00001FC0003F00003FC0003F80003FC0001FC0007FC0001FE000FFC0000FF003FFC00007 +FC0FFFC00003FFFFFFC00001FFFFEFC000007FFF8FC000003FFF0FC0000007F80FC00000 +00000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00000 +00000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00000 +00000FC000000003FFFF00000007FFFF80000007FFFF80000007FFFF80000003FFFF0029 +367DA32C>I<7FFE003FC0FFFF01FFF0FFFF07FFF8FFFF1FFFFC7FFF3FFFFC003F7FE1FC +003FFF01FC003FFC00F8003FF80070003FF00000003FE00000003FE00000003FC0000000 +3F800000003F800000003F800000003F000000003F000000003F000000003F000000003F +000000003F000000003F000000003F000000003F000000003F000000003F000000003F00 +0000003F000000003F000000003F0000007FFFFFE000FFFFFFF000FFFFFFF000FFFFFFF0 +007FFFFFE00026247EA32C>I<007FF87003FFFFF80FFFFFF81FFFFFF83FFFFFF87FC00F +F87E0003F8FC0001F8F80001F8F80001F8F80001F8FC0000F07F0000007FF000003FFFC0 +001FFFFE000FFFFF8003FFFFE0007FFFF80001FFFC000007FC000000FE7800007FFC0000 +3FFC00001FFE00001FFE00001FFF00003FFF80003EFFC000FEFFF007FCFFFFFFFCFFFFFF +F8FFFFFFE0F8FFFF80701FFC0020247AA32C>I<001E000000003F000000003F00000000 +3F000000003F000000003F000000003F000000003F000000003F000000003F0000007FFF +FFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF807FFFFFFF00003F000000003F000000003F00 +0000003F000000003F000000003F000000003F000000003F000000003F000000003F0000 +00003F000000003F000000003F000000003F000000003F000000003F000000003F000000 +003F0003C0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0003F800FE000 +1F801FC0001FE07FC0000FFFFF80000FFFFF000003FFFE000001FFF80000003FE000232E +7EAD2C>I<7FF003FF8000FFF807FFC000FFF807FFC000FFF807FFC0007FF803FFC00001 +F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001 +F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001 +F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001 +F8000FC00001F8000FC00001F8000FC00001F8001FC00001F8001FC00001F8003FC00001 +FC007FC00000FE03FFC00000FFFFFFFF00007FFFFFFF80003FFFFFFF80001FFFCFFF8000 +03FE07FF0029247FA32C>I<7FFF01FFFCFFFF01FFFEFFFF83FFFEFFFF01FFFE7FFF01FF +FC03E0000F8003E0000F8003F0001F8001F0001F0001F0001F0001F8003F0000F8003E00 +00F8003E0000FC007E00007C007C00007C007C00007E00FC00003E00F800003E00F80000 +3F01F800001F01F000001F01F000001F83F000000F83E000000F83E000000FC7E0000007 +C7C0000007C7C0000007EFC0000003EF80000003EF80000003FF80000001FF00000001FF +00000000FE000000007C000027247EA32C>I<7FFF007FFF007FFF80FFFF00FFFF80FFFF +807FFF80FFFF007FFF007FFF0007C00001F00007C00001F00007C00001F00007C00001F0 +0007C00001F00007C00001F00003E00003E00003E00003E00003E00003E00003E03E03E0 +0003E07F03E00003E07F03E00001F07F07C00001F0FF87C00001F0FF87C00001F0F787C0 +0001F0F787C00001F1F7C7C00000F1F7C7800000F9E3CF800000F9E3CF800000FBE3EF80 +0000FBE3EF800000FBE3EF8000007BC1EF0000007FC1FF0000007FC1FF0000007F80FF00 +00007F80FF0000003F80FE0000001F007C000029247FA32C>I<3FFF03FFF07FFF87FFF8 +7FFF87FFF87FFF87FFF83FFF03FFF000FC007E0000FC00FC00007E01F800003F01F00000 +1F83F000001F87E000000FCFC0000007EF80000003FF80000001FF00000001FE00000000 +FC000000007C00000000FE00000001FE00000001FF00000003EF80000007CFC000000FC7 +C000000F83E000001F01F000003F01F800007E00F800007C007C0000F8007E0001F8003F +007FFF01FFFC7FFF83FFFCFFFF83FFFE7FFF83FFFC7FFF01FFFC27247EA32C>I<7FFF01 +FFFCFFFF81FFFEFFFF83FFFEFFFF81FFFE7FFF01FFFC03E0000F8001F0000F8001F0001F +8001F8001F0000F8001F0000F8003F0000FC003E00007C003E00007E007E00003E007C00 +003E007C00003F00FC00001F00F800001F00F800000F81F800000F81F000000F81F00000 +07C1F0000007C3E0000007C3E0000003E3E0000003E7C0000001E7C0000001F7C0000001 +F780000000FF80000000FF80000000FF000000007F000000007F000000003E000000003E +000000007E000000007C000000007C00000000FC00000000F800000000F800000C01F800 +003F01F000007F83F000007F87E000007E0FE000007E1FC000007FFF8000003FFF000000 +1FFE0000000FFC00000007E000000027367EA32C>I<3FFFFFFFE07FFFFFFFF07FFFFFFF +F07FFFFFFFF07FFFFFFFF07E00001FE07E00003FC07E00007F807E0000FF007E0001FE00 +3C0003FC00000007F80000000FF00000001FE00000003FC00000007F80000000FF000000 +01FC00000003F80000000FF00000001FE00000003FC00000007F80000000FF00000001FE +0001E003FC0003F007F80003F00FF00003F01FE00003F03FC00003F07F800003F0FFFFFF +FFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF07FFFFFFFE024247DA32C>I<000000FF000000 +07FF8000001FFF8000007FFF800000FFFF000001FFC0000001FE00000003F800000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000007F00000001FE0000000FFE000007F +FFC00000FFFF800000FFFE000000FFFF8000007FFFC0000000FFE00000001FE000000007 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F800000001FE0000 +0001FFC0000000FFFF0000007FFF8000001FFF80000007FF80000000FF0021417BB92C> +I<78FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC7806416DB92C> +I<7FC0000000FFF8000000FFFE000000FFFF8000007FFFC0000000FFE00000001FE00000 +0007F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F800000001FE +00000001FFC0000000FFFF0000007FFF8000001FFF8000007FFF800000FFFF000001FFC0 +000001FE00000003F800000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F000000007 +F00000001FE0000000FFE000007FFFC00000FFFF800000FFFE000000FFF80000007FC000 +000021417BB92C>I<00F8007003FE00F80FFF01F81FFF87F83FFFCFF07F9FFFE0FF0FFF +C0FC07FF80F803FE007000F8001D0A79B22C>I E /Fr 13 119 df<00000E0000000000 +0E00000000000E00000000000E00000000000E00000000000E00000000000E0000000000 +0E00000000000E00000000000E00000000000E00000000000E00000000000E0000000000 +0E00000000000E00000000000E00000000000E00000000000E00000000000E0000000000 +0E000000FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE000000E00000000000E0000000000 +0E00000000000E00000000000E00000000000E00000000000E00000000000E0000000000 +0E00000000000E00000000000E00000000000E00000000000E00000000000E0000000000 +0E00000000000E00000000000E00000000000E00000000000E00000000000E0000002B2B +7DA333>43 D<003F800001FFF00003E0F80007803C000F001E001E000F003E000F803E00 +0F803C0007807C0007C07C0007C07C0007C07C0007C0FC0007E0FC0007E0FC0007E0FC00 +07E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC00 +07E0FC0007E07C0007C07C0007C07C0007C03E000F803E000F803E000F801F001F000F00 +1E0007803C0003E0F80001FFF000003F80001B277EA521>48 D<00380000780001F8001F +F800FEF800E0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000 +F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000 +F80000F80000F80000F80000F80000F80000F80000F80001FC00FFFFF8FFFFF815267BA5 +21>I<00FF000003FFE0000E03F0001800F80030007C0060007E0078003F00FC003F00FE +001F80FE001F80FE001F80FE001F807C001F8000001F8000001F0000003F0000003E0000 +007E0000007C000000F8000001F0000003E0000003C00000078000000E0000001C000000 +3800000070018000E001800180018003000300060003000C0003001FFFFF003FFFFF007F +FFFE00FFFFFE00FFFFFE0019267DA521>I<00FF000003FFE0000F01F8001C007C003000 +7E003C003E007E003F007E003F007E003F007E003F003C003F0000003E0000007E000000 +7C000000F8000001F0000007E00001FF800001FF00000001E0000000F00000007C000000 +3E0000003F0000001F0000001F8000001F8038001F807C001F80FE001F80FE001F80FE00 +1F00FC003F0078003E0070007C003800F8001F01F00007FFC00000FF000019277DA521> +I<0000380000003800000078000000F8000001F8000001F8000003F8000007F8000006F8 +00000CF800001CF8000018F8000030F8000070F8000060F80000C0F80001C0F8000180F8 +000300F8000700F8000E00F8000C00F8001C00F8003800F8003000F8006000F800E000F8 +00FFFFFFE0FFFFFFE00000F8000000F8000000F8000000F8000000F8000000F8000000F8 +000001FC00003FFFE0003FFFE01B277EA621>I<18000C001F007C001FFFF8001FFFF000 +1FFFE0001FFF800019FC0000180000001800000018000000180000001800000018000000 +18000000187F000019FFE0001F81F0001E0078001C003C0018003E0000003E0000001F00 +00001F0000001F8000001F8030001F807C001F80FC001F80FC001F80FC001F80FC001F00 +F0001F0060003E0070003E0030007C001C00F8000F03E00003FFC00000FE000019277DA5 +21>I<007E03E001FF9FF007C3FCF00F00F0F01F00F8001E0078003E007C003E007C003E +007C003E007C003E007C003E007C001E0078001F00F8000F00F0000FC3E0000DFF80001C +7E00001C0000001C0000001C0000001E0000000FFFF0000FFFFC0007FFFF001FFFFF803E +001FC0780007C0780003E0F00001E0F00001E0F00001E0F00001E0780003C07C0007C03E +000F800FC07E0003FFF800007FC0001C277E9921>103 D<0F80FF80FF801F800F800F80 +0F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F80 +0F800F800F800F800F800F800F800F800F800F800F800F800F801FC0FFF8FFF80D287EA7 +13>108 D<003F800000FFE00003E0F80007803C000F001E001E000F003E000F803E000F +807C0007C07C0007C07C0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007 +E0FC0007E07C0007C07C0007C07E000FC03E000F801E000F001F001F000F803E0003E0F8 +0001FFF000003F80001B1C7E9A21>111 D<0F81FC00FF8FFF00FFBC0FC01FF007E00FC0 +03F00F8001F00F8001F80F8000FC0F8000FC0F80007C0F80007E0F80007E0F80007E0F80 +007E0F80007E0F80007E0F80007E0F80007C0F8000FC0F8000FC0F8001F80FC001F00FC0 +03E00FF007C00FBC1F800F8FFF000F83F8000F8000000F8000000F8000000F8000000F80 +00000F8000000F8000001FC00000FFF80000FFF800001F257E9925>I<03F8400FFEC03C +07C07803C07001C0F000C0F000C0F000C0F800C0FC00007FC0007FFC003FFF001FFF8007 +FFC000FFE00007E0C003F0C001F0C000F0E000F0E000F0F000E0F001E0F801C0EE0780C7 +FF0081FC00141C7E9A1A>115 D118 D E /Fs 4 119 df69 D<03FF80000FFFE0001FFFF8003FFFFC003FFF +FE003F80FF003F803F801F001F8000001F8000000F800000FF80007FFF8003FFFF800FFF +FF801FFFFF807FF00F807F000F80FC000F80FC000F80F8000F80F8001F80FC001F80FE00 +3F807F81FF807FFFFFFC3FFFFFFE1FFFFFFE07FFC7FE01FE01FC1F1D7D9C23>97 +D<7FFE0000FFFF0000FFFF0000FFFF00007FFF0000001F0000001F0000001F0000001F00 +00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00 +00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00 +00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00 +007FFFFFC0FFFFFFE0FFFFFFE0FFFFFFE07FFFFFC01B297CA823>108 +D118 D E /Ft 54 122 df<0000FF00000007FFE000 +001F80F000003E003800007C007C0000F800FC0001F000FC0003F000FC0003E000780003 +E000300003E000000003E000000003E000000003E000000003E000000003E000000003E0 +00000003E0007C00FFFFFFFC00FFFFFFFC0003E000FC0003E0007C0003E0007C0003E000 +7C0003E0007C0003E0007C0003E0007C0003E0007C0003E0007C0003E0007C0003E0007C +0003E0007C0003E0007C0003E0007C0003E0007C0003E0007C0003E0007C0003E0007C00 +03E0007C0003E0007C0003E0007C0003E0007C0003E0007C0003E0007C0007F000FE007F +FF0FFFE07FFF0FFFE0232F7FAE27>12 D<3C007E00FF00FF00FF80FF807F803D80018001 +800180038003000300070006000E001C0038007000600009157A8714>44 +D<3C7EFFFFFFFF7E3C08087A8714>46 D<003FC00000FFF00003E07C0007C03E000F801F +000F000F001E0007801E0007803E0007C03E0007C07C0003E07C0003E07C0003E07C0003 +E07C0003E0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003 +F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F07C0003 +E07C0003E07C0003E07E0007E03E0007C03E0007C03E0007C01F000F800F000F000F801F +0007C03E0003F0FC0000FFF000003FC0001C2D7DAB23>48 D<000C00003C00007C0003FC +00FFFC00FC7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C +00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C +00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C +00007C0000FE007FFFFE7FFFFE172C7AAB23>I<007F800001FFF0000780FC000E003F00 +1C001F8038000FC070000FC0600007E0F00007E0FC0007F0FE0007F0FE0003F0FE0003F0 +FE0003F07C0007F0000007F0000007F0000007E000000FE000000FC000001FC000001F80 +00003F0000007E0000007C000000F8000001F0000003E0000007C000000F8000001E0000 +003C00000078000000F0003000E0003001C0003003800060070000600E0000E01FFFFFE0 +3FFFFFE07FFFFFC0FFFFFFC0FFFFFFC01C2C7DAB23>I<003FC00001FFF00007C0FC000E +007E001C003F001C001F803F001FC03F001FC03F800FC03F000FC03F000FC00C001FC000 +001FC000001F8000001F8000003F0000003E0000007C000000F8000003F00000FFC00000 +FFF0000000FC0000003F0000001F8000001FC000000FC000000FE000000FE0000007F000 +0007F0380007F07C0007F0FE0007F0FE0007F0FE0007F0FE000FE0F8000FE060000FC070 +001FC038001F801E003F000780FC0001FFF000007FC0001C2D7DAB23>I<00000E000000 +0E0000001E0000003E0000003E0000007E000000FE000000FE000001BE000003BE000003 +3E0000063E00000E3E00000C3E0000183E0000383E0000303E0000603E0000E03E0000C0 +3E0001803E0003803E0003003E0006003E000E003E000C003E0018003E0038003E003000 +3E0060003E00E0003E00FFFFFFFCFFFFFFFC00003E0000003E0000003E0000003E000000 +3E0000003E0000003E0000003E0000003E0000007F00001FFFFC001FFFFC1E2D7EAC23> +I<0C0001800FC01F800FFFFF000FFFFE000FFFFC000FFFF0000FFFC0000C7E00000C0000 +000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C1FC0000C7FF8 +000DE07C000F801F000F001F800E000F800C0007C0000007E0000007E0000003E0000003 +F0000003F0000003F0000003F0780003F0FC0003F0FC0003F0FC0003F0FC0003F0F80007 +E0E00007E0600007C070000FC038000F801C001F000E003E000780F80001FFE000007F80 +001C2D7DAB23>I<0003F800000FFE00003E078000F8018001F007C003E00FC007C00FC0 +0F800FC00F800FC01F0007801F0000003E0000003E0000007E0000007E0000007C000000 +7C0FC000FC3FF000FCF07C00FDC01E00FF800F00FF000F80FF0007C0FE0007E0FE0007E0 +FE0003E0FC0003F0FC0003F0FC0003F0FC0003F07C0003F07C0003F07C0003F07E0003F0 +7E0003F03E0003E03E0007E01E0007E01F0007C00F000F8007801F0003C03E0001E07C00 +007FF000001FC0001C2D7DAB23>I<300000003C0000003FFFFFF83FFFFFF83FFFFFF07F +FFFFF07FFFFFE0700001C06000018060000380C0000700C0000E00C0000C0000001C0000 +00380000003000000070000000E0000001C0000001C00000038000000380000007000000 +070000000F0000000E0000001E0000001E0000003E0000003E0000003E0000003C000000 +7C0000007C0000007C0000007C000000FC000000FC000000FC000000FC000000FC000000 +FC000000FC000000FC000000FC0000007800001D2E7CAC23>I<001FC00000FFF00003E0 +7C0007801E000F000F001E0007801E0007803C0003C03C0003C03C0003C03C0003C03E00 +03C03E0007C03F0007801FC00F801FE00F001FF81E000FFC3C0007FFF80003FFE00000FF +E000003FF80000FFFC0003C7FF000783FF801F00FFC01E003FC03C001FE07C0007E07800 +03F0F80003F0F00001F0F00000F0F00000F0F00000F0F00000F0F80000E0780001E07C00 +01C03C0003C01E0007800F800F0007E03C0001FFF000003FC0001C2D7DAB23>I<003F80 +0000FFF00003E0780007C03E000F801F001F000F003E000F803E0007807E0007C07C0007 +C0FC0007E0FC0003E0FC0003E0FC0003E0FC0003F0FC0003F0FC0003F0FC0003F0FC0003 +F07C0007F07E0007F07E0007F03E000FF01F000FF00F001FF007803BF003E0F3F000FFC3 +F0003F03E0000003E0000007E0000007E0000007C0000007C000000FC01E000F803F000F +003F001F003F003E003F003C003E0078001C00F0000E03E00007FF800001FE00001C2D7D +AB23>I<000001800000000003C00000000003C00000000003C00000000007E000000000 +07E0000000000FF0000000000FF0000000000FF0000000001BF80000000019F800000000 +19F80000000030FC0000000030FC0000000070FE00000000607E00000000607E00000000 +C03F00000000C03F00000000C03F00000001801F80000001801F80000003801FC0000003 +000FC0000003000FC00000060007E00000060007E00000060007E000000C0003F000000C +0003F000001FFFFFF800001FFFFFF80000180001F80000300000FC0000300000FC000030 +0000FC00006000007E00006000007E0000E000007F0000C000003F0000C000003F0001C0 +00001F8003C000001F8007C000001FC00FF000003FE0FFFC0003FFFFFFFC0003FFFF302F +7EAE35>65 DI<00001FF000 +C00000FFFE01C00003F00F83C0000F8001E3C0003F000077C0007C00003FC001F800001F +C003F000000FC007E0000007C007E0000007C00FC0000003C01FC0000003C01F80000001 +C03F80000001C03F00000001C07F00000000C07F00000000C07F00000000C0FE00000000 +00FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00000000 +00FE0000000000FE0000000000FE0000000000FE00000000007F00000000007F00000000 +C07F00000000C03F00000000C03F80000000C01F80000001C01FC0000001800FC0000001 +8007E00000038007E00000070003F00000060001F800000E00007C00001C00003F000078 +00000F8001E0000003F00FC0000000FFFE000000001FF000002A2F7CAD33>IIII73 D76 DII<00003FF000000001FFFE00000007E01F8000001F8007E000003E0001F00000FC0000 +FC0001F800007E0003F000003F0007E000001F8007C000000F800FC000000FC01F800000 +07E01F80000007E03F00000003F03F00000003F07F00000003F87F00000003F87E000000 +01F87E00000001F8FE00000001FCFE00000001FCFE00000001FCFE00000001FCFE000000 +01FCFE00000001FCFE00000001FCFE00000001FCFE00000001FCFE00000001FC7F000000 +03F87F00000003F87F00000003F83F00000003F03F80000007F01F80000007E01F800000 +07E00FC000000FC00FE000001FC007E000001F8003F000003F0001F800007E0000FC0000 +FC00007E0001F800001F8007E0000007E01F80000001FFFE000000003FF000002E2F7CAD +37>II82 D<003F803001FFF07007C07C70 +0F000EF01E0007F03C0003F0780001F0780000F0700000F0F0000070F0000070F0000070 +F0000030F8000030F8000030FC0000007E0000007F0000003FE000003FFE00001FFFE000 +0FFFFC0007FFFF0001FFFF80003FFFE00003FFE000003FF0000007F8000001F8000000F8 +000000FC0000007CC000007CC000003CC000003CC000003CE000003CE000003CE0000078 +F0000078F8000070FC0000F0FE0001E0F78003C0E3F00F00E07FFE00C00FF0001E2F7CAD +27>I86 DI<00FF +000007FFC0000F01F0001C00F8003F007C003F003E003F003E003F003F001E001F000000 +1F0000001F0000001F0000001F000007FF00007FFF0001FE1F0007F01F001FC01F003F80 +1F007F001F007E001F00FE001F06FC001F06FC001F06FC001F06FC003F06FE003F067E00 +7F067F00EF8C1F83C7FC0FFF03F801FC01E01F207D9E23>97 D<07C0000000FFC0000000 +FFC00000000FC000000007C000000007C000000007C000000007C000000007C000000007 +C000000007C000000007C000000007C000000007C000000007C000000007C000000007C0 +FE000007C7FF800007CF03E00007DC01F00007F8007C0007F0007E0007E0003E0007C000 +1F0007C0001F8007C0001F8007C0000F8007C0000FC007C0000FC007C0000FC007C0000F +C007C0000FC007C0000FC007C0000FC007C0000FC007C0000FC007C0001F8007C0001F80 +07C0001F0007C0003F0007E0003E0007F0007C0007B000F80007BC01F000070E07E00006 +07FF80000001FC0000222F7EAD27>I<001FE000007FFC0001F01E0003E0070007C01F80 +0F801F801F001F803F001F803E000F007E0000007E0000007C000000FC000000FC000000 +FC000000FC000000FC000000FC000000FC000000FC000000FC0000007E0000007E000000 +7E0000C03F0000C01F0001C01F8001800FC0038007E0070001F03E00007FF800001FC000 +1A207E9E1F>I<000000F80000001FF80000001FF800000001F800000000F800000000F8 +00000000F800000000F800000000F800000000F800000000F800000000F800000000F800 +000000F800000000F800000000F800000FE0F800007FF8F80001F81EF80003E007F80007 +C003F8000F8001F8001F0001F8003F0000F8003E0000F8007E0000F8007E0000F800FC00 +00F800FC0000F800FC0000F800FC0000F800FC0000F800FC0000F800FC0000F800FC0000 +F800FC0000F8007C0000F8007E0000F8007E0000F8003E0001F8001F0001F8001F8003F8 +000F8007F80003E00EFC0001F03CFFC0007FF0FFC0001FC0F800222F7EAD27>I<001F80 +0000FFF00003E0780007C03E000F801E001F001F001F000F803E000F807E0007807E0007 +C07C0007C0FC0007C0FC0007C0FC0007C0FFFFFFC0FFFFFFC0FC000000FC000000FC0000 +00FC000000FC0000007E0000007E0000003E0000C03F0000C01F0001C00F8003800FC003 +0003E00F0001F03C00007FF800001FC0001A207E9E1F>I<0003F0000FFC003E1E007C3F +00F83F01F03F01F03F03E00C03E00003E00003E00003E00003E00003E00003E00003E000 +03E00003E000FFFFE0FFFFE003E00003E00003E00003E00003E00003E00003E00003E000 +03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000 +03E00003E00003E00003E00007F0007FFF807FFF80182F7FAE16>I<003F00F800FFC3FE +03E1FF1E07807C1E0F807C0C1F003E001F003E003E001F003E001F003E001F003E001F00 +3E001F003E001F003E001F001F003E001F003E000F807C00078078000FE1F0000CFFC000 +1C3F00001C0000001C0000001C0000001E0000001F0000000FFFF8000FFFFF0007FFFFC0 +0FFFFFF01E0007F83C0000F87800007CF800007CF000003CF000003CF000003CF000003C +F800007C7C0000F83E0001F01F0003E007E01F8001FFFE00003FF0001F2D7E9D23>I<07 +C0000000FFC0000000FFC00000000FC000000007C000000007C000000007C000000007C0 +00000007C000000007C000000007C000000007C000000007C000000007C000000007C000 +000007C000000007C0FE000007C3FF800007C703E00007DE01F00007F801F00007F000F8 +0007F000F80007E000F80007E000F80007C000F80007C000F80007C000F80007C000F800 +07C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007 +C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F8000FE0 +01FC00FFFE1FFFC0FFFE1FFFC0222E7EAD27>I<07800FC01FE01FE01FE01FE00FC00780 +0000000000000000000000000000000007C0FFC0FFC00FC007C007C007C007C007C007C0 +07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C00FE0 +FFFCFFFC0E2E7EAD14>I<000F00001F80003FC0003FC0003FC0003FC0001F80000F0000 +00000000000000000000000000000000000000000000000007C000FFC000FFC0000FC000 +07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000 +07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000 +07C00007C00007C00007C00007C00007C00007C03007C07807C0FC0F80FC0F80FC0F00F8 +1F00783E003FF80007E000123C83AD16>I<07C0000000FFC0000000FFC00000000FC000 +000007C000000007C000000007C000000007C000000007C000000007C000000007C00000 +0007C000000007C000000007C000000007C000000007C000000007C000000007C01FFE00 +07C01FFE0007C00FF00007C007C00007C007800007C00E000007C01C000007C038000007 +C070000007C0E0000007C3C0000007C7C0000007CFE0000007DFF0000007F9F0000007F0 +F8000007E0FC000007C07E000007C03E000007C01F000007C01F800007C00FC00007C007 +C00007C003E00007C003F00007C001F8000FE003FC00FFFE07FF80FFFE07FF80212E7EAD +25>I<07C0FFC0FFC00FC007C007C007C007C007C007C007C007C007C007C007C007C007 +C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007 +C007C007C007C007C007C007C007C007C00FE0FFFEFFFE0F2E7EAD14>I<07C07F0007F0 +00FFC3FFC03FFC00FFC783F0783F000FCE01F8E01F8007DC00F9C00F8007F800FF800FC0 +07F0007F0007C007E0007E0007C007E0007E0007C007C0007C0007C007C0007C0007C007 +C0007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0 +007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C000 +7C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C +0007C00FE000FE000FE0FFFE0FFFE0FFFEFFFE0FFFE0FFFE371E7E9D3C>I<07C0FE0000 +FFC3FF8000FFC703E0000FDE01F00007F801F00007F000F80007F000F80007E000F80007 +E000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C0 +00F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000 +F80007C000F80007C000F80007C000F80007C000F8000FE001FC00FFFE1FFFC0FFFE1FFF +C0221E7E9D27>I<001FE000007FF80001F03E0003C00F00078007800F0003C01F0003E0 +3E0001F03E0001F07C0000F87C0000F87C0000F8FC0000FCFC0000FCFC0000FCFC0000FC +FC0000FCFC0000FCFC0000FCFC0000FCFC0000FC7C0000F87C0000F83E0001F03E0001F0 +1F0003E01F0003E00F8007C007C00F8001F03E00007FF800001FE0001E207E9E23>I<07 +C0FE0000FFC7FF8000FFCF03E0000FDC01F00007F800FC0007F0007E0007E0003E0007C0 +003F0007C0001F8007C0001F8007C0001F8007C0000FC007C0000FC007C0000FC007C000 +0FC007C0000FC007C0000FC007C0000FC007C0000FC007C0001FC007C0001F8007C0001F +8007C0003F0007C0003F0007E0007E0007F0007C0007F000F80007FC01F00007CE07E000 +07C7FF800007C1FC000007C000000007C000000007C000000007C000000007C000000007 +C000000007C000000007C000000007C00000000FE0000000FFFE000000FFFE000000222B +7E9D27>I<000FE01800007FF8380001F81C380003E00E780007C00778000F8003F8001F +8001F8003F0001F8003F0001F8007E0000F8007E0000F800FE0000F800FC0000F800FC00 +00F800FC0000F800FC0000F800FC0000F800FC0000F800FC0000F800FC0000F8007E0000 +F8007E0000F8007E0000F8003F0001F8001F0001F8001F8003F8000FC007F80003E00EF8 +0001F03CF800007FF0F800001FC0F800000000F800000000F800000000F800000000F800 +000000F800000000F800000000F800000000F800000000F800000001FC0000001FFFC000 +001FFFC0222B7E9D25>I<0781F8FF87FEFF8E3F0F9C3F07B83F07B03F07F01E07E00007 +E00007E00007E00007C00007C00007C00007C00007C00007C00007C00007C00007C00007 +C00007C00007C00007C00007C00007C00007C0000FE000FFFF00FFFF00181E7E9D1C>I< +01FE1807FFB81E01F83C00F8780078F00038F00038F00018F00018F80018FC0018FF0000 +7FF0003FFF001FFFC00FFFF001FFF8001FFC0001FCC0007EC0003EC0003EE0001EE0001E +F0001EF0001EF8003CF8003CFC0078FF01F0E3FFC0C0FF0017207E9E1C>I<0060000060 +0000600000600000E00000E00000E00001E00003E00003E00007E0001FE000FFFFF0FFFF +F003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 +0003E00003E00003E00003E01803E01803E01803E01803E01803E01803E01803E03801F0 +3001F07000F860003FE0000F80152A7FA81B>I<07C000F800FFC01FF800FFC01FF8000F +C001F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C0 +00F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000 +F80007C000F80007C000F80007C000F80007C000F80007C001F80007C001F80007C001F8 +0007C003F80003E007F80003E00EFC0001F81CFFC0007FF8FFC0001FE0F800221F7E9D27 +>IIIII +E /Fu 59 122 df<0000000FFF0000000001FFFFC00000000FFFFFF00000007FFFFFF800 +0001FFF803FC000003FFC000FE00000FFF0003FE00001FFE0007FF00003FFC000FFF0000 +3FF8000FFF00007FF0000FFF00007FF0001FFF8000FFF0000FFF0000FFE0000FFF0000FF +E0000FFF0000FFE0000FFF0000FFE00007FE0000FFE00001F80000FFE00000000000FFE0 +0000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000 +00000000FFE001FFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFF +FF80FFFFFFFFFFFF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF +8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF80 +00FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000 +FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FF +E00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE0 +0003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE000 +03FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF807FFFFFC1FF +FFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF38467EC53E> +12 D<07C01FF03FF87FFCFFFCFFFEFFFEFFFFFFFFFFFFFFFF7FFF3FFF1FFF07CF000F00 +0F001F001E001E003E003E003C007C00F800F801F003F003E007C01F801F001E000C0010 +22788E1F>44 DI<07C01FF03FF87FFCFFFEFFFEFFFEFFFEFFFEFFFEFFFE +7FFC3FF81FF007C00F0F788E1F>I<000003C000000007C00000001FC00000007FC00000 +03FFC000003FFFC000FFFFFFC000FFFFFFC000FFFFFFC000FFFFFFC000FFC3FFC0000003 +FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF +C0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0 +000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC000 +0003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC00000 +03FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003 +FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF +C0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC000FFFFFFFFFCFFFFFFFF +FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFC264177C038>49 D<0000FFE00000000FFFFE0000 +003FFFFF800000FFFFFFE00003FFFFFFF80007FC03FFFE000FE0007FFF001F80003FFF80 +3F00000FFFC07F000007FFC07FC00007FFE07FF00003FFE0FFF00001FFF0FFF80001FFF0 +FFF80001FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF87FF00000FFF8 +3FE00000FFF81FC00000FFF800000000FFF800000000FFF000000001FFF000000001FFF0 +00000001FFE000000003FFE000000003FFC000000007FF800000000FFF000000000FFF00 +0000001FFC000000003FF8000000003FF0000000007FE000000000FFC000000001FF0000 +000003FE0000000007FC000000000FF0000000001FE0000000003F80000000007F000078 +0000FE0000780001FC0000780003F80000F80007E00000F0000FC00000F0001F800000F0 +003F000000F0007C000001F000F8000003F001FFFFFFFFF003FFFFFFFFE007FFFFFFFFE0 +0FFFFFFFFFE01FFFFFFFFFE03FFFFFFFFFE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFC0 +FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02D417BC038>I<0000FFF000000007FFFF00 +00001FFFFFC000007FFFFFF00000FF007FF80003F8003FFE0007E0001FFF0007E0000FFF +000FF80007FF800FFE0007FF801FFE0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FF +C01FFF0007FFC01FFF0007FFC01FFF0007FFC00FFE0007FFC007FC0007FF8003F8000FFF +800000000FFF000000001FFF000000001FFE000000003FFC000000007FF800000000FFF0 +00000001FFE00000000FFF80000007FFFE00000007FFF800000007FFFF00000007FFFFC0 +00000000FFF0000000003FFC000000000FFE000000000FFF8000000007FF8000000003FF +C000000003FFE000000003FFE000000001FFF000000001FFF000000001FFF800000001FF +F800000001FFF80FC00001FFF83FF00001FFF87FF80001FFF87FF80001FFF8FFFC0001FF +F8FFFC0001FFF8FFFC0001FFF0FFFC0001FFF0FFFC0003FFF0FFFC0003FFE07FF80003FF +E07FF00007FFC07FE00007FFC03F80000FFF801FF0001FFF000FFE00FFFE0007FFFFFFF8 +0001FFFFFFF000007FFFFFC000001FFFFE00000001FFE000002D427BC038>I<00000000 +3F0000000000003F0000000000007F000000000000FF000000000001FF000000000003FF +000000000003FF000000000007FF00000000000FFF00000000001FFF00000000003FFF00 +000000003FFF00000000007FFF0000000000FFFF0000000001F7FF0000000003E7FF0000 +000007E7FF0000000007C7FF000000000F87FF000000001F07FF000000003E07FF000000 +007E07FF000000007C07FF00000000F807FF00000001F007FF00000003E007FF00000007 +E007FF00000007C007FF0000000F8007FF0000001F0007FF0000003E0007FF0000007C00 +07FF0000007C0007FF000000F80007FF000001F00007FF000003E00007FF000007C00007 +FF00000FC00007FF00000F800007FF00001F000007FF00003E000007FF00007C000007FF +0000FC000007FF0000FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF +80FFFFFFFFFFFF800000000FFF00000000000FFF00000000000FFF00000000000FFF0000 +0000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF000000 +00000FFF00000000000FFF00000000000FFF000000007FFFFFFF8000007FFFFFFF800000 +7FFFFFFF8000007FFFFFFF8000007FFFFFFF8031417DC038>I<07000000030007E00000 +3F0007FF0007FF0007FFFFFFFF0007FFFFFFFE0007FFFFFFFC0007FFFFFFF80007FFFFFF +F00007FFFFFFE00007FFFFFF800007FFFFFE000007FFFFFC000007FFFFE0000007FFFF00 +000007C00000000007C00000000007C00000000007C00000000007C00000000007C00000 +000007C00000000007C00000000007C00000000007C00000000007C03FF0000007C1FFFF +000007C7FFFFC00007DFFFFFF00007FFE03FFC0007FF000FFE0007FC0007FF0007F00003 +FF8007E00003FFC007C00001FFC003800001FFE000000001FFE000000000FFF000000000 +FFF000000000FFF000000000FFF800000000FFF800000000FFF800000000FFF80F800000 +FFF83FE00000FFF87FF00000FFF8FFF00000FFF8FFF80000FFF8FFF80000FFF8FFF80000 +FFF8FFF80000FFF0FFF00000FFF0FFF00001FFF07FE00001FFE07FC00001FFE07E000003 +FFC03E000003FFC03F000007FF801FC0000FFF000FF0001FFE0007FE00FFFC0003FFFFFF +F00000FFFFFFE000003FFFFF8000000FFFFC00000001FFC000002D427BC038>I<000001 +FF800000001FFFF00000007FFFFC000001FFFFFF000007FF807F80000FFC001F80003FF0 +001FC0007FE0007FC000FFC000FFE001FF8001FFE003FF8001FFE003FF0001FFE007FE00 +01FFE00FFE0001FFE00FFE0001FFE01FFC0000FFC01FFC00007F801FFC00001E003FFC00 +0000003FFC000000003FF8000000007FF8000000007FF8000000007FF807FC00007FF81F +FF8000FFF87FFFE000FFF8FFFFF800FFF9F01FFC00FFFBC007FE00FFFF8003FF00FFFF80 +03FF80FFFF0001FFC0FFFE0001FFC0FFFE0000FFE0FFFE0000FFE0FFFC0000FFF0FFFC00 +00FFF0FFFC0000FFF0FFFC0000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF800 +00FFF87FF80000FFF87FF80000FFF87FF80000FFF87FF80000FFF87FF80000FFF83FF800 +00FFF83FF80000FFF83FF80000FFF03FFC0000FFF01FFC0000FFF01FFC0000FFF00FFC00 +01FFE00FFC0001FFE007FE0001FFC007FF0003FF8003FF8003FF0001FFC007FE0000FFE0 +1FFC00007FFFFFF800001FFFFFF0000007FFFFC0000001FFFF000000003FF000002D427B +C038>I<1E00000000001F00000000001FFC000000001FFFFFFFFFFE1FFFFFFFFFFE1FFF +FFFFFFFE1FFFFFFFFFFE3FFFFFFFFFFE3FFFFFFFFFFC3FFFFFFFFFF83FFFFFFFFFF03FFF +FFFFFFE03FFFFFFFFFC03FFFFFFFFFC07FFFFFFFFF807E0000003F007C0000007E007C00 +0000FC0078000000F80078000001F80078000003F000F8000007E000F000000FC000F000 +000F8000F000001F80000000003F00000000007E0000000000FC0000000000FC00000000 +01F80000000003F80000000003F00000000007F0000000000FE0000000000FE000000000 +1FE0000000001FC0000000003FC0000000003FC0000000007FC0000000007F8000000000 +FF8000000000FF8000000001FF8000000001FF8000000001FF8000000003FF8000000003 +FF0000000003FF0000000003FF0000000007FF0000000007FF0000000007FF0000000007 +FF0000000007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000F +FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007 +FE0000000003FC0000000001F80000002F447AC238>I<000000001F8000000000000000 +001F8000000000000000003FC000000000000000003FC000000000000000007FE0000000 +00000000007FE000000000000000007FE00000000000000000FFF00000000000000000FF +F00000000000000001FFF80000000000000001FFF80000000000000001FFF80000000000 +000003FFFC0000000000000003FFFC0000000000000007FFFE0000000000000007FFFE00 +00000000000007FFFE000000000000000FFFFF000000000000000F9FFF00000000000000 +1F9FFF800000000000001F1FFF800000000000001F0FFF800000000000003F0FFFC00000 +000000003E07FFC00000000000007E07FFE00000000000007C07FFE00000000000007C03 +FFE0000000000000FC03FFF0000000000000F801FFF0000000000001F801FFF800000000 +0001F001FFF8000000000001F000FFF8000000000003F000FFFC000000000003E0007FFC +000000000007E0007FFE000000000007C0007FFE000000000007C0003FFE00000000000F +C0003FFF00000000000F80001FFF00000000001F80001FFF80000000001F00000FFF8000 +0000001F00000FFF80000000003F00000FFFC0000000003E000007FFC0000000007E0000 +07FFE0000000007FFFFFFFFFE0000000007FFFFFFFFFE000000000FFFFFFFFFFF0000000 +00FFFFFFFFFFF000000001FFFFFFFFFFF800000001F0000000FFF800000001F0000000FF +F800000003F0000000FFFC00000003E00000007FFC00000007E00000007FFE00000007C0 +0000003FFE00000007C00000003FFE0000000F800000003FFF0000000F800000001FFF00 +00001F800000001FFF8000001F000000000FFF8000003F000000000FFFC000003E000000 +000FFFC000007E0000000007FFC000FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF0FF +FFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF04C457CC455>65 +DI<00000000FFF00000700000001FFFFF0000F0000001FFFFFFE001F000 +0007FFFFFFF803F000003FFFFFFFFE07F00000FFFFE001FF0FF00001FFFE00003F9FF000 +07FFF000000FFFF0000FFFC0000007FFF0001FFF00000003FFF0003FFE00000001FFF000 +7FFC00000000FFF000FFF8000000007FF001FFF0000000003FF003FFE0000000001FF007 +FFE0000000001FF007FFC0000000000FF00FFF80000000000FF00FFF800000000007F01F +FF000000000007F01FFF000000000003F03FFF000000000003F03FFE000000000003F03F +FE000000000003F07FFE000000000001F07FFE000000000001F07FFE000000000001F07F +FC00000000000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FF +FC00000000000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FF +FC00000000000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FF +FC00000000000000FFFC00000000000000FFFC000000000000007FFC000000000000007F +FE000000000000007FFE000000000000F07FFE000000000000F03FFE000000000000F03F +FE000000000000F03FFF000000000000F01FFF000000000001F01FFF000000000001E00F +FF800000000001E00FFF800000000003E007FFC00000000003C007FFE00000000007C003 +FFE00000000007C001FFF0000000000F8000FFF8000000001F00007FFC000000003F0000 +3FFE000000007E00001FFF80000000FC00000FFFC0000001F8000007FFF0000007F00000 +01FFFE00001FE0000000FFFFF001FF800000003FFFFFFFFF0000000007FFFFFFFC000000 +0001FFFFFFF000000000001FFFFF80000000000000FFF800000044467AC451>II< +FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800 +FFFFFFFFFFFFFFFC00001FFF000001FFFC00001FFF0000003FFC00001FFF0000000FFC00 +001FFF00000003FC00001FFF00000001FC00001FFF00000000FC00001FFF00000000FC00 +001FFF000000007E00001FFF000000003E00001FFF000000003E00001FFF000000003E00 +001FFF000000001E00001FFF000000001E00001FFF000078001E00001FFF000078001E00 +001FFF000078000F00001FFF000078000F00001FFF000078000F00001FFF000078000F00 +001FFF0000F8000000001FFF0000F8000000001FFF0000F8000000001FFF0001F8000000 +001FFF0003F8000000001FFF001FF8000000001FFFFFFFF8000000001FFFFFFFF8000000 +001FFFFFFFF8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFF001FF8000000 +001FFF0003F8000000001FFF0001F8000000001FFF0000F8000000001FFF0000F8000000 +001FFF0000F80001E0001FFF0000780001E0001FFF0000780001E0001FFF0000780003C0 +001FFF0000780003C0001FFF0000780003C0001FFF0000780003C0001FFF0000000003C0 +001FFF0000000007C0001FFF0000000007C0001FFF000000000780001FFF000000000780 +001FFF000000000F80001FFF000000000F80001FFF000000001F80001FFF000000001F80 +001FFF000000003F80001FFF000000007F00001FFF00000000FF00001FFF00000001FF00 +001FFF00000007FF00001FFF0000001FFF00001FFF000001FFFF00FFFFFFFFFFFFFFFF00 +FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00 +43447DC34A>II<00000000FFF0000070000000001FFFFF0000 +F000000001FFFFFFE001F000000007FFFFFFF803F00000003FFFFFFFFE07F0000000FFFF +E001FF0FF0000001FFFE00003F9FF0000007FFF000000FFFF000000FFFC0000007FFF000 +001FFF00000003FFF000003FFE00000001FFF000007FFC00000000FFF00000FFF8000000 +007FF00001FFF0000000003FF00003FFE0000000001FF00007FFE0000000001FF00007FF +C0000000000FF0000FFF80000000000FF0000FFF800000000007F0001FFF000000000007 +F0001FFF000000000003F0003FFF000000000003F0003FFE000000000003F0003FFE0000 +00000003F0007FFE000000000001F0007FFE000000000001F0007FFE000000000001F000 +7FFC0000000000000000FFFC0000000000000000FFFC0000000000000000FFFC00000000 +00000000FFFC0000000000000000FFFC0000000000000000FFFC0000000000000000FFFC +0000000000000000FFFC0000000000000000FFFC0000000000000000FFFC000000000000 +0000FFFC0000000000000000FFFC0000000000000000FFFC0000000000000000FFFC0000 +007FFFFFFFF07FFC0000007FFFFFFFF07FFE0000007FFFFFFFF07FFE0000007FFFFFFFF0 +7FFE0000007FFFFFFFF03FFE0000000001FFF0003FFE0000000001FFF0003FFF00000000 +01FFF0001FFF0000000001FFF0001FFF0000000001FFF0000FFF8000000001FFF0000FFF +8000000001FFF00007FFC000000001FFF00007FFE000000001FFF00003FFE000000001FF +F00001FFF000000001FFF00000FFF800000001FFF000007FFC00000001FFF000003FFE00 +000003FFF000001FFF80000003FFF000000FFFC0000007FFF0000007FFF000000FFFF000 +0001FFFE00003FFFF0000000FFFFF001FF9FF00000003FFFFFFFFF0FF000000007FFFFFF +FC03F000000001FFFFFFF000F0000000001FFFFFC000300000000000FFFC000000004C46 +7AC458>III75 +DIII<00000007FFC0000000000000FFFFFE000000000007FFFFFFC0000000001F +FFFFFFF0000000007FFE00FFFC00000001FFF0001FFF00000007FF800003FFC000000FFF +000001FFE000001FFC0000007FF000003FF80000003FF800007FF00000001FFC0000FFF0 +0000001FFE0001FFE00000000FFF0003FFC000000007FF8003FFC000000007FF8007FF80 +00000003FFC007FF8000000003FFC00FFF0000000001FFE00FFF0000000001FFE01FFF00 +00000001FFF01FFE0000000000FFF03FFE0000000000FFF83FFE0000000000FFF83FFE00 +00000000FFF87FFE0000000000FFFC7FFC00000000007FFC7FFC00000000007FFC7FFC00 +000000007FFC7FFC00000000007FFCFFFC00000000007FFEFFFC00000000007FFEFFFC00 +000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00 +000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00 +000000007FFEFFFC00000000007FFEFFFC00000000007FFE7FFC00000000007FFC7FFE00 +00000000FFFC7FFE0000000000FFFC7FFE0000000000FFFC3FFE0000000000FFF83FFE00 +00000000FFF83FFF0000000001FFF81FFF0000000001FFF01FFF0000000001FFF01FFF80 +00000003FFF00FFF8000000003FFE00FFF8000000003FFE007FFC000000007FFC003FFC0 +00000007FF8003FFE00000000FFF8001FFF00000001FFF0000FFF80000003FFE00007FFC +0000007FFC00003FFE000000FFF800001FFF000001FFF000000FFFC00007FFE0000007FF +F0001FFFC0000001FFFE00FFFF00000000FFFFFFFFFE000000003FFFFFFFF80000000007 +FFFFFFC00000000000FFFFFE00000000000007FFC000000047467AC454>II82 D<0000FFE0001C000007FFFE003C00003FFFFF807C +0000FFFFFFE0FC0001FFFFFFF9FC0003FF801FFFFC0007FC0001FFFC000FF800007FFC00 +1FF000003FFC003FE000000FFC003FC0000007FC007FC0000003FC007F80000003FC007F +80000001FC007F80000000FC00FF80000000FC00FF800000007C00FF800000007C00FFC0 +0000007C00FFC00000007C00FFE00000003C00FFF00000003C00FFF80000003C00FFFC00 +000000007FFE00000000007FFFE0000000007FFFFE000000003FFFFFF00000003FFFFFFF +0000001FFFFFFFE000001FFFFFFFFC00000FFFFFFFFE000007FFFFFFFF800003FFFFFFFF +C00001FFFFFFFFE000007FFFFFFFF000001FFFFFFFF8000007FFFFFFFC000000FFFFFFFC +0000000FFFFFFE00000000FFFFFE0000000007FFFF00000000007FFF00000000003FFF00 +000000000FFF800000000007FF800000000003FF80F000000003FF80F000000001FF80F0 +00000001FF80F000000000FF80F000000000FF80F800000000FF80F800000000FF80F800 +000000FF00FC00000000FF00FC00000000FF00FE00000001FF00FF00000001FE00FF8000 +0003FE00FFC0000003FC00FFE0000007FC00FFF800000FF800FFFF00003FF000FFFFF800 +FFE000FE7FFFFFFFC000FC1FFFFFFF0000F807FFFFFC0000F000FFFFF00000E00007FF80 +000031467AC43E>I<3FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE0 +3FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFE000FFF8003FFE07FE0000FFF80003FF0 +7FC0000FFF80001FF07F00000FFF800007F07F00000FFF800007F07E00000FFF800003F0 +7C00000FFF800001F07C00000FFF800001F07C00000FFF800001F07800000FFF800000F0 +7800000FFF800000F07800000FFF800000F07800000FFF800000F0F800000FFF800000F8 +F000000FFF80000078F000000FFF80000078F000000FFF80000078F000000FFF80000078 +F000000FFF800000780000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000000 +0000000FFF800000000000000FFF800000000000000FFF800000000007FFFFFFFFFF0000 +0007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF0000 +45437CC24E>IIII<7FFF +FFFFC003FFFFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FFFF +FF807FFFFFFFC003FFFFFF80000FFFE0000001F800000007FFE0000003F000000007FFF0 +000007F000000003FFF8000007E000000001FFFC00000FC000000001FFFC00001F800000 +0000FFFE00003F80000000007FFF00003F00000000003FFF00007E00000000003FFF8000 +FC00000000001FFFC001FC00000000000FFFE001F800000000000FFFE003F00000000000 +07FFF007E0000000000003FFF80FE0000000000001FFFC0FC0000000000001FFFC1F8000 +0000000000FFFE3F000000000000007FFF7F000000000000003FFF7E000000000000003F +FFFC000000000000001FFFF8000000000000000FFFF8000000000000000FFFF000000000 +00000007FFF00000000000000003FFF80000000000000001FFF80000000000000001FFFC +0000000000000000FFFE00000000000000007FFF0000000000000000FFFF000000000000 +0000FFFF8000000000000001FFFFC000000000000003FFFFC000000000000007FFFFE000 +000000000007E7FFF00000000000000FC3FFF80000000000001F83FFF80000000000003F +81FFFC0000000000003F00FFFE0000000000007E007FFE000000000000FC007FFF000000 +000001FC003FFF800000000001F8001FFFC00000000003F0001FFFC00000000007E0000F +FFE0000000000FE00007FFF0000000000FC00003FFF0000000001F800003FFF800000000 +3F000001FFFC000000003F000000FFFE000000007E000000FFFE00000000FC0000007FFF +00000001FC0000003FFF80000001F80000001FFF80000003F00000001FFFC0000007E000 +00000FFFE000000FE000000007FFF000FFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFC +FFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFC4E447DC355> +II<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE007F +F8000007FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF0003FF +80000FFF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001FFC0 +0000F00001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 +000003FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC00003 +FFE001FFC0000FFF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC0007FF8 +0001FFC0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FFE000 +01FFC000FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8001F +FFF0003FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007 +FFC0000FFC00000000322F7DAD36>97 D<007FC000000000FFFFC000000000FFFFC00000 +0000FFFFC000000000FFFFC000000000FFFFC00000000003FFC00000000001FFC0000000 +0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 +01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 +FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF +C00000000001FFC00FF8000001FFC0FFFF800001FFC3FFFFE00001FFCFFFFFF80001FFDF +C03FFC0001FFFF000FFE0001FFFC0003FF0001FFF80001FF8001FFF00001FFC001FFE000 +00FFE001FFC00000FFE001FFC000007FF001FFC000007FF001FFC000007FF801FFC00000 +3FF801FFC000003FF801FFC000003FF801FFC000003FFC01FFC000003FFC01FFC000003F +FC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC +01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FF801 +FFC000003FF801FFC000007FF801FFC000007FF001FFC000007FF001FFC000007FF001FF +C00000FFE001FFE00000FFC001FFF00001FFC001FFF80003FF8001FF7C0007FF0001FE3E +000FFE0001FC1FC07FFC0001F80FFFFFF00001F003FFFFC00001E000FFFF00000000001F +F0000036467DC43E>I<00003FFC00000001FFFFC000000FFFFFF000003FFFFFFC00007F +F003FE0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007FF801FFC +0007FF801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF8000078007FF0 +000000007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 +00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 +00000000FFF0000000007FF8000000007FF8000000007FF8000000003FF8000000003FFC +000003C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF80001F0003FF +C0003E0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF00000000 +3FF800002A2F7CAD32>I<0000000003FE0000000007FFFE0000000007FFFE0000000007 +FFFE0000000007FFFE0000000007FFFE00000000001FFE00000000000FFE00000000000F +FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE +00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00 +000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000 +003FE00FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE0001FF +C001FFFE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000FFE001FFC00 +000FFE003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE007FF00000 +0FFE007FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000F +FE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE +00FFF000000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF000000FFE00 +7FF000000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00001FFE001F +FC00001FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003FFFFFC00FF +F01FEFFFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00FF80036467C +C43E>I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF83FF80000FF +C007FC0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00007FC01FF8 +00007FC03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000003FF07FF0 +00001FF0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFFF +FFFFFFF0FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF0 +000000007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000F01FFC +000000F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0000F8000FF +F0003F00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001FFE00002C2F +7DAD33>I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC000FFE0FFE00 +1FFC1FFE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FFE00FFC00FF +E003F000FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 +000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF800FFFFFFF8 +00FFFFFFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE0000000FFE00000 +00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 +FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF +E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 +000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 +0000FFE000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00027467DC522 +>I<0000FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07FFF3F +C003FF001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF80003FF0000 +1FF80003FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F +F80003FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003FF00001FF8 +0003FF00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8000001FFC0 +7FF0000003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000000F800000 +0000000F8000000000000F8000000000000F8000000000000FC000000000000FE0000000 +00000FF000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007FFFFFFFFE0 +0003FFFFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFFFF00 +1FF000007FFF003FC0000007FF007F80000001FF807F80000000FF80FF00000000FF80FF +000000007F80FF000000007F80FF000000007F80FF000000007F80FF80000000FF807F80 +000000FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003FF80007FFC0 +01FFF00001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF00000032427DAC +38>I<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000 +0000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC0000000 +0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 +01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 +FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC007FE000001FF +C03FFF800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801FFC0001FFDF +000FFE0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF0001FFF000 +07FF0001FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007 +FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF +0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 +01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 +FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF +C00007FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF +83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF0003FF8007FF +C007FFC00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00007C000000 +00000000000000000000000000000000000000000000000000000000007FC07FFFC07FFF +C07FFFC07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF +C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF +C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF +C001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<000003E000000FF80000 +1FFC00003FFE00003FFE00007FFF00007FFF00007FFF00007FFF00007FFF00003FFE0000 +3FFE00001FFC00000FF8000003E000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000001FF0003FFFF0003FFFF0003FFFF0003 +FFFF0003FFFF00000FFF000007FF000007FF000007FF000007FF000007FF000007FF0000 +07FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0000 +07FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0000 +07FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0000 +07FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0000 +07FF1F8007FF3FC007FF7FE007FFFFF007FFFFF00FFEFFF00FFEFFF00FFCFFF01FFCFFE0 +1FF87FE03FF03FC0FFE01FFFFF800FFFFF0003FFFC0000FFC000205A86C522>I<007FC0 +00000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000 +00000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000 +000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 +0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 +01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0007FFFE001 +FFC0007FFFE001FFC0007FFFE001FFC0007FFFE001FFC0007FFFE001FFC0000FE00001FF +C0001FC00001FFC0003F000001FFC0007E000001FFC000FC000001FFC003F8000001FFC0 +07E0000001FFC00FC0000001FFC01F80000001FFC07F00000001FFC0FE00000001FFC1FC +00000001FFC3FE00000001FFC7FE00000001FFDFFF00000001FFFFFF80000001FFFFFFC0 +000001FFFFFFC0000001FFF9FFE0000001FFE1FFF0000001FFC0FFF8000001FF807FF800 +0001FF803FFC000001FF803FFE000001FF801FFF000001FF800FFF000001FF8007FF8000 +01FF8007FFC00001FF8003FFE00001FF8001FFE00001FF8000FFF00001FF8000FFF80001 +FF80007FFC0001FF80003FFC00FFFFFF03FFFFF8FFFFFF03FFFFF8FFFFFF03FFFFF8FFFF +FF03FFFFF8FFFFFF03FFFFF835457DC43B>I<007FC000FFFFC000FFFFC000FFFFC000FF +FFC000FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 +FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 +FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 +FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 +FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 +FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 +FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FF +FFFF80FFFFFF8019457CC420>I<007F8007FE00000FFC0000FFFF803FFFC0007FFF8000 +FFFF80FFFFF001FFFFE000FFFF81FFFFF803FFFFF000FFFF87F01FFC0FE03FF800FFFF8F +C00FFE1F801FFC0003FF9F000FFF3E001FFE0001FF9E0007FF3C000FFE0001FFBC0007FF +78000FFE0001FFF80003FFF00007FF0001FFF80003FFF00007FF0001FFF00003FFE00007 +FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001 +FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC000 +03FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF80 +0007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF +0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FF +C00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003 +FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF8000 +07FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00 +01FFC00003FF800007FF0001FFC00003FF800007FF00FFFFFF81FFFFFF03FFFFFEFFFFFF +81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFF +FF03FFFFFE572D7CAC5E>I<007F8007FE0000FFFF803FFF8000FFFF80FFFFE000FFFF81 +FFFFF800FFFF87F03FFC00FFFF8F801FFC0003FF9F000FFE0001FF9E000FFE0001FFBC00 +0FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF0001FFE00007 +FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF +0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 +01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 +FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF +C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 +0007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83 +FFFFFE372D7CAC3E>I<00001FFC0000000001FFFFC000000007FFFFF00000001FFFFFFC +0000007FF80FFF000000FFC001FF800001FF8000FFC00003FE00003FE00007FE00003FF0 +000FFC00001FF8000FF800000FF8001FF800000FFC001FF800000FFC003FF800000FFE00 +3FF0000007FE007FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF00FF +F0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0 +000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF807FF000 +0007FF007FF0000007FF007FF0000007FF007FF0000007FF003FF800000FFE003FF80000 +0FFE001FF800000FFC001FFC00001FFC000FFC00001FF80007FE00003FF00007FE00003F +F00003FF8000FFE00001FFC001FFC000007FF80FFF0000003FFFFFFE0000000FFFFFF800 +000001FFFFC0000000001FFC000000312F7DAD38>I<007FC00FF80000FFFFC0FFFF8000 +FFFFC3FFFFE000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF001FFE0003FFFC0007FF0001 +FFF80003FF8001FFF00003FFC001FFE00001FFE001FFC00001FFE001FFC00000FFF001FF +C00000FFF001FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF801FFC0 +00003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000 +003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC00000 +3FFC01FFC000003FFC01FFC000007FF801FFC000007FF801FFC000007FF801FFC000007F +F001FFC00000FFF001FFC00000FFF001FFC00001FFE001FFE00001FFC001FFF00003FFC0 +01FFF80007FF8001FFFC000FFF0001FFFE001FFE0001FFDFC07FFC0001FFCFFFFFF00001 +FFC3FFFFC00001FFC0FFFF000001FFC01FF0000001FFC00000000001FFC00000000001FF +C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 +0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 +000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000 +000036407DAC3E>I<00003FE0001E000003FFFC003E00000FFFFF007E00003FFFFF807E +0000FFF80FE0FE0001FFE003F1FE0003FFC001F1FE0007FF8000FBFE000FFF00007FFE00 +0FFE00003FFE001FFE00001FFE003FFC00001FFE003FFC00000FFE003FF800000FFE007F +F800000FFE007FF800000FFE007FF800000FFE00FFF000000FFE00FFF000000FFE00FFF0 +00000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000 +000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE007FF80000 +0FFE007FF800000FFE007FF800000FFE007FF800000FFE003FFC00000FFE003FFC00000F +FE001FFE00001FFE001FFE00003FFE000FFF00007FFE0007FF0000FFFE0003FF8001FFFE +0001FFE003EFFE0000FFF01FCFFE00007FFFFF8FFE00001FFFFE0FFE000003FFF80FFE00 +00007FC00FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000 +0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000 +00000FFE00000000000FFE00000000000FFE00000000000FFE0000000007FFFFFC000000 +07FFFFFC00000007FFFFFC00000007FFFFFC00000007FFFFFC36407CAC3B>I<007F807F +00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE03FFBE1FFE01FFBC1FFE +01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE001E001FFE0000001 +FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FF +C0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0 +000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000 +0001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000 +FFFFFFE000272D7DAC2E>I<001FFC038000FFFF878003FFFFFF800FFFFFFF801FF003FF +803FC000FF803F80003F807F00001F807E00001F80FE00000F80FE00000F80FE00000780 +FF00000780FF00000780FF80000780FFE0000000FFFE0000007FFFF000007FFFFF00003F +FFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF0001FFFFFF80007FFFFF80000F +FFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F000003FE0F800001FE0F80000 +0FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF00001FC0FF00001FC0FF80003F +80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFFE000E007FE0000232F7CAD2C +>I<0001E000000001E000000001E000000001E000000001E000000003E000000003E000 +000003E000000003E000000007E000000007E00000000FE00000000FE00000001FE00000 +001FE00000003FE00000007FE0000000FFE0000003FFE000000FFFFFFF80FFFFFFFF80FF +FFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE0000000FFE0000000FFE0000000FF +E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 +000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 +0000FFE0000000FFE0000000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E0 +00FFE001E000FFE001E000FFE001E000FFE001E000FFE003E000FFF003C0007FF003C000 +7FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC000001FFF80000003FE0002340 +7EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF00FFFFC0 +03FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF0001FFC00007FF0001FFC000 +07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 +FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF +0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 +01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 +FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0000FFF0001FFC0000FFF0001FF +C0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003FFF0000FFE0007FFF80007FE0 +01F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FFFE0003FFFE07FFFE00007FF0 +07FC00372E7CAC3E>I +IIII +E /Fv 53 124 df<000003FFC00000007FFFF0000003FFFFFC00000FFF00FE00003FF800 +3F00007FE000FF8000FFC001FF8001FFC001FF8001FF8001FF8003FF8003FFC003FF0001 +FF8003FF0001FF8003FF0001FF8003FF0000FF0003FF00007E0003FF0000000003FF0000 +000003FF0000000003FF0000000003FF0000000003FF003FFFC0FFFFFFFFFFC0FFFFFFFF +FFC0FFFFFFFFFFC0FFFFFFFFFFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303A7EB9 +35>12 D<0F803FE07FF07FF0FFF8FFF8FFFCFFFCFFFC7FFC7FFC3FFC0F9C001C003C0038 +003800380078007000F001E001E003C007800F001F001C0018000E1D798C1B>44 +D<0F803FE07FF07FF0FFF8FFF8FFF8FFF8FFF87FF07FF03FE00F800D0D798C1B>46 +D<0001FF0000000FFFE000007FFFFC0000FF83FE0001FE00FF0003FC007F8007F8003FC0 +0FF0001FE00FF0001FE01FF0001FF01FF0001FF03FE0000FF83FE0000FF83FE0000FF87F +E0000FFC7FE0000FFC7FE0000FFC7FE0000FFC7FE0000FFCFFE0000FFEFFE0000FFEFFE0 +000FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE000 +0FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE0000FFEFFE0000F +FEFFE0000FFEFFE0000FFE7FE0000FFC7FE0000FFC7FE0000FFC7FE0000FFC3FE0000FF8 +3FE0000FF83FF0001FF81FF0001FF01FF0001FF00FF0001FE00FF8003FE007F8003FC003 +FC007F8001FE00FF0000FF83FE00007FFFFC00001FFFF0000001FF000027387CB630>48 +D<00001E000000003E00000000FE00000007FE0000003FFE0000FFFFFE0000FFFFFE0000 +FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 +0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F +FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE +0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00 +00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000 +000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 +0FFE00007FFFFFFF807FFFFFFF807FFFFFFF807FFFFFFF80213779B630>I<000FFC0000 +007FFFC00001FFFFF00007FFFFFC000FF03FFF001F800FFF803F0003FFC07F0003FFC07F +C001FFE0FFE000FFF0FFF000FFF0FFF000FFF0FFF0007FF8FFF0007FF8FFF0007FF8FFF0 +007FF87FE0007FF83FC0007FF80F00007FF80000007FF8000000FFF0000000FFF0000000 +FFE0000001FFE0000001FFC0000003FF80000003FF00000007FE00000007FC0000000FF8 +0000001FF00000003FE00000007F800000007F00000000FE00000001F800000003F00078 +0007E00078000FC00078001F800078003E0000F8007C0000F000F80000F001F00001F003 +FFFFFFF003FFFFFFF007FFFFFFF00FFFFFFFF01FFFFFFFF03FFFFFFFF07FFFFFFFE0FFFF +FFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE025377BB630>I<0003FF0000001FFFF00000 +7FFFFC0001FC07FF0003F003FF8007E001FFC007C000FFE00FF000FFE00FFC00FFF01FFC +00FFF01FFE00FFF01FFE00FFF01FFE00FFF01FFE00FFF01FFE00FFF00FFC00FFE00FFC00 +FFE003F001FFE0000001FFC0000003FF80000003FF00000007FE0000000FFC0000003FF0 +00000FFFC000000FFF0000000FFFF000000007FE00000001FF80000000FFC0000000FFE0 +0000007FF00000007FF80000007FFC0000003FFC0000003FFC0000003FFE1FC0003FFE3F +E0003FFE7FF0003FFEFFF8003FFEFFF8003FFEFFF8003FFEFFF8003FFEFFF8003FFCFFF8 +003FFCFFF0007FF87FF0007FF87FC000FFF03F8000FFE01FC001FFC00FFC07FF8007FFFF +FF0001FFFFFC00007FFFF0000007FF000027387CB630>I<00000007C0000000000FC000 +0000000FC0000000001FC0000000003FC0000000007FC000000000FFC000000000FFC000 +000001FFC000000003FFC000000007FFC00000000FFFC00000000FFFC00000001EFFC000 +00003CFFC00000007CFFC0000000F8FFC0000000F0FFC0000001E0FFC0000003C0FFC000 +0007C0FFC000000F80FFC000000F00FFC000001E00FFC000003C00FFC000007C00FFC000 +00F800FFC00000F000FFC00001E000FFC00003C000FFC00007C000FFC0000F8000FFC000 +0F0000FFC0001E0000FFC0003C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFF80 +FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80000001FFC000000001FFC000000001FFC000 +000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 +000001FFC0000003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF8029377DB630> +I<1C000000C01F800007C01FF8007FC01FFFFFFF801FFFFFFF801FFFFFFF001FFFFFFE00 +1FFFFFFC001FFFFFF0001FFFFFE0001FFFFF80001FFFFE00001FFFF000001F000000001F +000000001F000000001F000000001F000000001F000000001F000000001F000000001F07 +FE00001F3FFFE0001FFFFFF8001FFC07FC001FE003FF001F8001FF801F0000FFC00E0000 +FFC0000000FFE00000007FE00000007FF00000007FF00000007FF80000007FF80600007F +F83F80007FF87FE0007FF8FFE0007FF8FFF0007FF8FFF0007FF8FFF0007FF8FFF0007FF8 +FFE0007FF0FFE0007FF07FC000FFF07F0000FFE07C0000FFC03E0001FFC01F0003FF801F +C007FF000FF01FFE0007FFFFF80001FFFFE000007FFF8000000FF8000025387BB630>I< +00000FF8000000FFFE000003FFFF80000FF80FC0003FE003E0007FC001F000FF000FF001 +FF001FF803FE003FF807FC003FF80FFC003FF80FF8003FF81FF8003FF81FF8003FF83FF8 +001FF03FF8000FE03FF00000007FF00000007FF00000007FF00800007FF07FF000FFF1FF +FC00FFF3FFFF00FFF780FF80FFFF007FC0FFFE003FE0FFFC003FF0FFFC001FF8FFF8001F +F8FFF8001FFCFFF8001FFCFFF8001FFCFFF0001FFEFFF0001FFEFFF0001FFEFFF0001FFE +FFF0001FFE7FF0001FFE7FF0001FFE7FF0001FFE7FF0001FFE7FF0001FFE3FF0001FFE3F +F0001FFC3FF0001FFC1FF8001FFC1FF8001FF80FF8003FF807FC003FF007FC007FE003FE +007FC001FF81FF8000FFFFFF00003FFFFC00000FFFF0000001FF800027387CB630>I<3C +00000000003E00000000003FE0000000003FFFFFFFFF803FFFFFFFFF803FFFFFFFFF803F +FFFFFFFF803FFFFFFFFF007FFFFFFFFE007FFFFFFFFC007FFFFFFFF8007FFFFFFFF0007F +FFFFFFF0007FFFFFFFE0007C00000FC0007800001F80007800003F0000F800007E0000F0 +00007C0000F00000FC0000F00001F80000F00003F00000000007E00000000007C0000000 +000FC0000000001F80000000003F80000000003F00000000007F00000000007E00000000 +00FE0000000001FE0000000001FE0000000003FC0000000003FC0000000003FC00000000 +07FC0000000007FC000000000FFC000000000FF8000000000FF8000000001FF800000000 +1FF8000000001FF8000000001FF8000000001FF8000000003FF8000000003FF800000000 +3FF8000000003FF8000000003FF8000000003FF8000000003FF8000000003FF800000000 +3FF8000000001FF0000000000FE00000000007C0000000293A7BB830>I<0001FF800000 +0FFFF000003FFFFC0000FE01FF0001F8007F8003F0003FC007E0001FE007E0000FE00FC0 +000FE00FC00007F01FC00007F01FC00007F01FE00007F01FE00007F01FF00007F01FF800 +07F01FFE000FE01FFF800FE01FFFE01FC00FFFF03FC00FFFFC3F800FFFFF7F0007FFFFFC +0003FFFFF80001FFFFF80000FFFFFE00007FFFFF00003FFFFFC0007FFFFFE001FFFFFFF0 +07F8FFFFF00FF07FFFF81FE01FFFFC3FC007FFFC3F8001FFFC7F8000FFFE7F00003FFEFF +00000FFEFE000007FEFE000003FEFE000001FEFE000001FEFE000000FEFE000000FEFE00 +0000FCFF000000FC7F000001FC7F800001F83FC00003F03FE00007F01FF0000FE00FFE00 +7FC003FFFFFF0000FFFFFC00003FFFF0000003FF800027387CB630>I<0003FF0000001F +FFE000007FFFF80001FF03FE0003FE00FF0007FC007F800FF8007FC01FF8003FE03FF800 +3FE03FF0001FF07FF0001FF07FF0001FF87FF0001FF8FFF0001FF8FFF0001FFCFFF0001F +FCFFF0001FFCFFF0001FFCFFF0001FFCFFF0001FFEFFF0001FFEFFF0001FFEFFF0001FFE +FFF0001FFE7FF0003FFE7FF0003FFE7FF0003FFE3FF0003FFE3FF0007FFE1FF8007FFE0F +F800FFFE07FC01FFFE03FE03DFFE01FFFF9FFE007FFF1FFE001FFC1FFC0000201FFC0000 +001FFC0000001FFC0000001FF80FE0003FF81FF0003FF83FF8003FF03FF8003FF03FF800 +3FE03FF8007FE03FF8007FC03FF800FF803FF001FF801FE003FF001F8007FE000FE01FF8 +0007FFFFF00003FFFFC00000FFFF0000001FF0000027387CB630>I<00000003E0000000 +0000000007F00000000000000007F0000000000000000FF8000000000000000FF8000000 +000000000FF8000000000000001FFC000000000000001FFC000000000000003FFE000000 +000000003FFE000000000000003FFE000000000000007FFF000000000000007FFF000000 +00000000FFFF80000000000000FFFF80000000000000FFFF80000000000001FFFFC00000 +00000001F3FFC0000000000003F3FFE0000000000003E1FFE0000000000003E1FFE00000 +00000007E1FFF0000000000007C0FFF000000000000FC0FFF800000000000F807FF80000 +0000000F807FF800000000001F807FFC00000000001F003FFC00000000003F003FFE0000 +0000003E001FFE00000000003E001FFE00000000007E001FFF00000000007C000FFF0000 +000000FC000FFF8000000000F80007FF8000000000F80007FF8000000001F80007FFC000 +000001F00003FFC000000003FFFFFFFFE000000003FFFFFFFFE000000003FFFFFFFFE000 +000007FFFFFFFFF000000007C00000FFF00000000FC00000FFF80000000F8000007FF800 +00000F8000007FF80000001F8000007FFC0000001F0000003FFC0000003F0000003FFE00 +00003E0000001FFE0000003E0000001FFE0000007E0000001FFF0000007C0000000FFF00 +0000FE0000000FFF8000FFFFF80007FFFFFF80FFFFF80007FFFFFF80FFFFF80007FFFFFF +80FFFFF80007FFFFFF80413A7DB948>65 DI<0000003FFC0001C0000003FFFFC003C000001FFFFFF007 +C00000FFFFFFFC0FC00003FFFC00FF3FC00007FFC0001FFFC0001FFE00000FFFC0003FFC +000003FFC0007FF0000001FFC000FFE0000000FFC001FFC0000000FFC003FFC00000007F +C007FF800000003FC00FFF000000003FC00FFF000000001FC01FFE000000001FC01FFE00 +0000000FC03FFE000000000FC03FFC000000000FC03FFC0000000007C07FFC0000000007 +C07FFC0000000007C07FF8000000000000FFF8000000000000FFF8000000000000FFF800 +0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 +00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800 +0000000000FFF80000000000007FF80000000000007FFC0000000000007FFC0000000003 +C03FFC0000000003C03FFC0000000003C03FFE0000000003C01FFE0000000007C01FFE00 +00000007C00FFF0000000007800FFF000000000F8007FF800000000F0003FFC00000001F +0001FFC00000003E0000FFE00000007E00007FF8000000FC00003FFC000001F800001FFF +000003F0000007FFC0000FE0000003FFFC00FF80000000FFFFFFFE000000001FFFFFF800 +00000003FFFFE000000000003FFE0000003A3B7BB945>IIII73 D76 +D78 D<000000FFF800000000000FFFFF8000000000 +7FFFFFF000000001FFC01FFC00000007FF0007FF0000001FFC0001FFC000003FF000007F +E000007FE000003FF00000FFC000001FF80001FF8000000FFC0003FF8000000FFE0007FF +00000007FF0007FF00000007FF000FFE00000003FF800FFE00000003FF801FFC00000001 +FFC01FFC00000001FFC03FFC00000001FFE03FFC00000001FFE03FFC00000001FFE07FF8 +00000000FFF07FF800000000FFF07FF800000000FFF07FF800000000FFF0FFF800000000 +FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF8 +00000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000 +FFF8FFF800000000FFF8FFF800000000FFF87FF800000000FFF07FFC00000001FFF07FFC +00000001FFF07FFC00000001FFF03FFC00000001FFE03FFC00000001FFE03FFE00000003 +FFE01FFE00000003FFC01FFE00000003FFC00FFF00000007FF8007FF00000007FF0007FF +8000000FFF0003FFC000001FFE0001FFC000001FFC0000FFE000003FF800007FF000007F +F000003FFC0001FFE000001FFF0007FFC0000007FFC01FFF00000001FFFFFFFC00000000 +7FFFFFF0000000000FFFFF800000000000FFF80000003D3B7BB948>II<000000FFF800000000000FFFFF80000000007FFFFFF000000001FFE03FFC000000 +07FF0007FF0000001FFC0001FFC000003FF80000FFE000007FE000003FF00000FFC00000 +1FF80001FFC000001FFC0003FF8000000FFE0007FF00000007FF0007FF00000007FF000F +FE00000003FF800FFE00000003FF801FFE00000003FFC01FFC00000001FFC03FFC000000 +01FFE03FFC00000001FFE03FFC00000001FFE07FFC00000001FFF07FF800000000FFF07F +F800000000FFF07FF800000000FFF0FFF800000000FFF8FFF800000000FFF8FFF8000000 +00FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FF +F800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF8000000 +00FFF87FF800000000FFF07FF800000000FFF07FF800000000FFF07FFC00000001FFF03F +FC00000001FFE03FFC00000001FFE03FFC00000001FFE01FFE00000003FFC01FFE000000 +03FFC00FFE001FC003FF8007FF007FF007FF0007FF00FFF807FF0003FF81F07C0FFE0001 +FFC3C01E1FFC0000FFC3800F1FF800007FE3800FBFF000003FF38007FFE000001FFF8007 +FFC0000007FFC007FF00000001FFF01FFC000000007FFFFFF0000800000FFFFFF8001C00 +0000FFF9FC001C0000000001FE003C0000000001FF80FC0000000001FFFFFC0000000000 +FFFFFC0000000000FFFFF80000000000FFFFF800000000007FFFF800000000007FFFF000 +000000007FFFF000000000003FFFE000000000003FFFE000000000001FFFC00000000000 +0FFF80000000000007FF00000000000001FC003E4A7BB948>I<0007FF000E00003FFFE0 +1E0000FFFFF83E0003FFFFFE7E0007FC01FFFE000FF0001FFE001FE0000FFE003FC00003 +FE003F800001FE007F800000FE007F000000FE007F0000007E00FF0000007E00FF000000 +3E00FF0000003E00FF8000003E00FF8000001E00FFC000001E00FFE000001E00FFF00000 +0000FFFC000000007FFFE00000007FFFFE0000007FFFFFF000003FFFFFFE00003FFFFFFF +80001FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC0000FFFFFFFE00003FFFFF +FE00000FFFFFFF000001FFFFFF0000000FFFFF800000007FFF800000000FFFC000000003 +FFC000000001FFC000000000FFC0F00000007FC0F00000007FC0F00000007FC0F0000000 +3FC0F00000003FC0F80000003FC0F80000003F80FC0000003F80FC0000007F80FE000000 +7F00FF0000007F00FF800000FE00FFE00001FC00FFF80003FC00FFFF801FF800FCFFFFFF +E000F83FFFFFC000F007FFFE0000E0007FF000002A3B7BB935>83 +D<3FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFFFFFF803FF800 +FFF003FF807FC000FFF0007FC07F8000FFF0001FC07E0000FFF0000FC07E0000FFF0000F +C07C0000FFF00007C07C0000FFF00007C0780000FFF00003C0780000FFF00003C0780000 +FFF00003C0780000FFF00003C0F80000FFF00003E0F00000FFF00001E0F00000FFF00001 +E0F00000FFF00001E0F00000FFF00001E0000000FFF0000000000000FFF0000000000000 +FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000 +00000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000 +FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000 +00000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000 +FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000 +00000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000 +FFF0000000000000FFF0000000000000FFF0000000000FFFFFFFFF0000000FFFFFFFFF00 +00000FFFFFFFFF0000000FFFFFFFFF00003B387DB742>I86 D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE +00003FF003FF00003FF801FF80003FF800FFC0003FF800FFC0003FF8007FE0003FF8007F +E0001FF0007FE0000FE0007FE0000380007FE0000000007FE0000000007FE00000003FFF +E000000FFFFFE000007FFFFFE00001FFF87FE00007FF807FE0000FFE007FE0003FF8007F +E0003FF0007FE0007FE0007FE000FFE0007FE000FFC0007FE000FFC0007FE000FFC0007F +E000FFC0007FE000FFC000FFE000FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBF +FFC00FFFFE1FFFC003FFF80FFFC0003FE003FFC02A257DA42E>97 +D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF000000 +0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 +0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 +0003FF0000000003FF0000000003FF0000000003FF01FF800003FF0FFFF00003FF3FFFFC +0003FFFE03FF0003FFF000FF8003FFE0007FC003FF80003FE003FF00003FF003FF00001F +F803FF00001FF803FF00001FFC03FF00000FFC03FF00000FFC03FF00000FFE03FF00000F +FE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000F +FE03FF00000FFE03FF00000FFE03FF00000FFC03FF00000FFC03FF00000FFC03FF00001F +F803FF00001FF803FF00001FF003FF80003FF003FFC0007FE003FFE0007FC003FDF001FF +8003F8FC07FE0003F03FFFF80003E00FFFE00003C003FF00002F3A7EB935>I<0001FFC0 +00000FFFFC00007FFFFF0000FF80FF8003FE00FFC007FC01FFC00FF801FFC01FF801FFC0 +1FF001FFC03FF001FFC03FF000FF807FE0007F007FE0001C007FE0000000FFE0000000FF +E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 +0000007FE00000007FE00000007FF00000003FF00000003FF00001E01FF80001E01FF800 +03E00FFC0007C007FE00078003FF001F8000FFC07E00007FFFFC00000FFFF0000001FF80 +0023257DA42A>I<000000007F800000007FFF800000007FFF800000007FFF800000007F +FF8000000003FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001 +FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001 +FF8000000001FF8000000001FF8000000001FF8000000001FF800001FF81FF80000FFFF1 +FF80003FFFFDFF8000FFC07FFF8003FF001FFF8007FC0007FF800FFC0003FF801FF80001 +FF801FF00001FF803FF00001FF803FF00001FF807FE00001FF807FE00001FF807FE00001 +FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001 +FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF807FE00001FF807FE00001 +FF807FF00001FF803FF00001FF803FF00001FF801FF80003FF800FF80007FF8007FC000F +FF8003FE001FFFC001FF80FDFFFE007FFFF9FFFE001FFFE1FFFE0003FF01FFFE2F3A7DB9 +35>I<0003FF8000001FFFF000007FFFFC0001FF83FE0003FE007F8007FC003F800FF800 +3FC01FF8001FE01FF0001FE03FF0000FF03FF0000FF07FE0000FF07FE0000FF87FE00007 +F8FFE00007F8FFE00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000 +FFE0000000FFE00000007FE00000007FE00000007FE00000003FF00000003FF00000781F +F00000780FF80000F80FFC0000F007FC0003F001FF000FE000FFC07FC0007FFFFF00000F +FFFC000001FFE00025257DA42C>I<00001FF0000001FFFC000007FFFF00001FF87F8000 +3FE0FF8000FFC1FFC000FFC1FFC001FF81FFC001FF81FFC003FF01FFC003FF00FF8003FF +00FF8003FF003E0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 +000003FF00000003FF000000FFFFFF0000FFFFFF0000FFFFFF0000FFFFFF000003FF0000 +0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000 +03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003 +FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF +00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE +0000FFFFFE0000FFFFFE0000FFFFFE0000223A7DB91D>I<000000001F000007FE00FFC0 +007FFFE3FFC001FFFFFFEFE007FE07FF8FE00FF801FF1FE01FF000FF8FE03FF000FFCFE0 +3FE0007FC7C03FE0007FC0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE000 +7FE0007FE0007FE0007FE0003FE0007FC0003FE0007FC0003FF000FFC0001FF000FF8000 +0FF801FF000007FE07FE00000FFFFFF800000F7FFFE000001E07FE0000001E0000000000 +1E00000000003E00000000003F00000000003F80000000001FC0000000001FFFFFF80000 +1FFFFFFF80001FFFFFFFE0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0007FFFFFFFE00 +1FFFFFFFFF003FC0000FFF007F000000FF80FF0000007F80FE0000007F80FE0000003F80 +FE0000003F80FE0000003F80FF0000007F807F0000007F007F800000FF003FC00001FE00 +1FF00007FC0007FE003FF00001FFFFFFC000007FFFFF00000007FFF000002B377DA530> +I<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF000000 +0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 +0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 +0003FF0000000003FF0000000003FF0000000003FF007FC00003FF03FFF80003FF0FFFFE +0003FF1F03FF0003FF3C01FF8003FF7801FF8003FFF000FF8003FFE000FFC003FFC000FF +C003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303A7DB935>I<01F00007 +FC000FFE000FFE001FFF001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F00000 +000000000000000000000000000000000000000000000000000000FF007FFF007FFF007F +FF007FFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 +FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 +FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>I< +00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF00000000 +03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 +03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 +03FF0000000003FF0000000003FF0000000003FF000FFFE003FF000FFFE003FF000FFFE0 +03FF000FFFE003FF0003FC0003FF0003F00003FF000FE00003FF001F800003FF003F0000 +03FF007E000003FF00FC000003FF03F8000003FF07E0000003FF0FC0000003FF1FC00000 +03FF7FE0000003FFFFF0000003FFFFF8000003FFFFFC000003FFFFFC000003FFCFFE0000 +03FF0FFF000003FE07FF800003FE03FF800003FE01FFC00003FE00FFE00003FE00FFF000 +03FE007FF00003FE003FF80003FE001FFC0003FE001FFE0003FE000FFE0003FE000FFF00 +FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF82D3A7EB932>107 +D<00FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF +0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF +0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF +0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF +0003FF0003FF0003FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC163A7DB91B +>I<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE07FFFF00FFFFE000FFFE1F81 +FF83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001FF80003FEF000FFDE001FF800 +03FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC0007FF8000FFC0003FF80007FF0 +000FFC0003FF80007FF0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF +00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000F +FC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF0000 +7FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC00 +03FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0 +000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF +00007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FF +FFF0FFFFFC1FFFFF83FFFFF04C257DA451>I<00FE007FC000FFFE03FFF800FFFE0FFFFE +00FFFE1F03FF00FFFE3C01FF8007FE7801FF8003FEF000FF8003FFE000FFC003FFC000FF +C003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30257DA435>I<0001FFC0 +0000000FFFF80000007FFFFF000000FF80FF800003FE003FE00007FC001FF0000FF8000F +F8001FF00007FC001FF00007FC003FF00007FE003FE00003FE007FE00003FF007FE00003 +FF007FE00003FF00FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003 +FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF807FE00003FF007FE00003 +FF007FE00003FF003FE00003FE003FF00007FE001FF00007FC001FF00007FC000FF8000F +F80007FC001FF00003FE003FE00001FF80FFC000007FFFFF0000001FFFFC00000001FFC0 +000029257DA430>I<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE07FF00FFFFF0 +01FF8003FFE000FFC003FF80007FE003FF00007FF003FF00003FF803FF00003FF803FF00 +001FFC03FF00001FFC03FF00001FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00 +000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00 +000FFE03FF00000FFC03FF00001FFC03FF00001FFC03FF00001FF803FF00003FF803FF00 +003FF003FF80007FF003FFC0007FE003FFE000FFC003FFF003FF8003FFFC07FE0003FF3F +FFF80003FF0FFFE00003FF03FF000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC +0000002F357EA435>I<0001FF000780000FFFE00F80003FFFF81F8000FFC07C3F8003FF +803E3F8007FE000F7F800FFC0007FF801FFC0007FF801FF80003FF803FF80003FF803FF0 +0001FF807FF00001FF807FF00001FF807FE00001FF80FFE00001FF80FFE00001FF80FFE0 +0001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE0 +0001FF80FFE00001FF807FF00001FF807FF00001FF807FF00001FF803FF80001FF803FF8 +0003FF801FFC0003FF800FFC0007FF8007FE000FFF8003FF003FFF8001FFC0FDFF80007F +FFF1FF80001FFFC1FF800001FF01FF8000000001FF8000000001FF8000000001FF800000 +0001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF800000 +0001FF8000000001FF8000000001FF800000007FFFFE0000007FFFFE0000007FFFFE0000 +007FFFFE2F357DA432>I<00FE03F000FFFE0FFE00FFFE3FFF00FFFE7C7F80FFFEF8FFC0 +07FEF0FFC003FFE0FFC003FFC0FFC003FFC0FFC003FF807F8003FF803F0003FF800C0003 +FF80000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF +00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 +000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE00 +00FFFFFE0000FFFFFE0000FFFFFE000022257EA427>I<003FF03803FFFEF80FFFFFF81F +C00FF83F0003F87E0001F87C0000F8FC0000F8FC000078FE000078FF000078FF800000FF +FC0000FFFFE0007FFFFC007FFFFF803FFFFFC01FFFFFF00FFFFFF803FFFFF800FFFFFC00 +1FFFFC00007FFE000007FEF00001FEF00000FEF80000FEF800007EFC00007EFC00007CFE +0000FCFF0000F8FF8001F8FFF007F0FFFFFFC0F8FFFF00E01FF8001F257DA426>I<000F +0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F0000003F +0000003F0000007F000000FF000000FF000001FF000007FF00001FFFFFE0FFFFFFE0FFFF +FFE0FFFFFFE003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF +000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF +000003FF000003FF007803FF007803FF007803FF007803FF007803FF007803FF007803FF +007803FF00F801FF80F001FF81F000FFC3E0003FFFC0001FFF800003FE001D357EB425> +I<00FF00003FC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC007FF0001FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF +C003FF0000FFC003FF0000FFC003FF0000FFC003FF0001FFC003FF0001FFC003FF0003FF +C003FF0003FFC001FF0007FFC001FF800FFFE000FFC03EFFFF007FFFFCFFFF001FFFF0FF +FF0003FF80FFFF30257DA435>IIIII123 D E /Fw 62 123 df<000000003FFC0000000001FFFF80000000 +07E007C00000001F8001E00000003F0001F00000007E0003F0000000FC0007F0000000FC +0007F0000001F80007F0000001F80007E0000003F0000380000003F0000000000003F000 +0000000003F0000000000007F0000000000007E0000000000007E0000000000007E00000 +00000007E000000000000FE000000000000FC000000000000FC000000000000FC0000000 +000FFFFFFFFF00000FFFFFFFFF00000FFFFFFFFE0000001F80007E0000001F80007E0000 +001F8000FE0000003F8000FC0000003F0000FC0000003F0000FC0000003F0001FC000000 +3F0001F80000007F0001F80000007E0001F80000007E0003F80000007E0003F00000007E +0003F0000000FE0003F0000000FC0007F0000000FC0007E0000000FC0007E0000000FC00 +07E0000001FC000FE0000001FC000FC0000001F8000FC1C00001F8000FC1C00001F8001F +C1C00001F8001F83C00003F8001F83800003F0001F83800003F0001F83800003F0001F87 +000007F0001F87000007E0001F0F000007E0000F8E000007E000079E000007E00003FC00 +000FE00000F000000FC000000000000FC000000000000FC000000000000F800000000000 +1F8000000000001F80000000001C1F00000000007E1F00000000007E3F0000000000FE3E +0000000000FE3C0000000000FE7C0000000000F878000000000078F000000000003FE000 +000000000F800000000000344C82BA2F>12 D<000000007FE00000000003FFFC7E000000 +0FC03E7E0000001F000F7E0000003E003FFE0000007C007FFE000000FC007FFC000000F8 +007FFC000001F8007FFC000001F8003DFC000003F00001F8000003F00001F8000003F000 +03F8000003F00003F8000007E00003F0000007E00003F0000007E00007F0000007E00007 +F000000FE00007E000000FC00007E000000FC0000FE000000FC0000FE000000FC0000FC0 +000FFFFFFFFFC0000FFFFFFFFFC0000FFFFFFFFFC000001F80001F8000001F80001F8000 +001F80003F8000003F80003F8000003F00003F0000003F00003F0000003F00007F000000 +3F00007F0000007F00007E0000007E00007E0000007E0000FE0000007E0000FE0000007E +0000FC000000FE0000FC000000FC0001FC000000FC0001FC000000FC0001F8000000FC00 +01F8000001FC0003F8000001F80003F8000001F80003F0700001F80003F0700001F80007 +F0700003F80007F0F00003F00007E0E00003F00007E0E00003F00007E0E00003F00007E1 +C00007F00007E1C00007E00007C3C00007E00003E3800007E00001E7800007E00000FF00 +000FC000003C00000FC000000000000FC000000000000FC000000000001F800000000000 +1F8000000000001F80000000001C1F00000000007E1F00000000007E3E0000000000FE3E +0000000000FE3C0000000000FE7C0000000000F878000000000078F000000000003FE000 +000000000F800000000000374C82BA31>I<01E007F00FF00FF81FF81FF81FF80FF807B0 +003000300070006000E000C001C00180038007000E001C0038007000E000C0000D196EB9 +19>39 D<03C007F00FF01FF01FF81FF81FF81FF007B0003000700060006000E000C001C0 +0380030007000E001C0038007000E000C0000D197A8819>44 D<7FFFF87FFFF8FFFFF8FF +FFF8FFFFF0150579941E>I<0E003F807F80FF80FF80FF80FF007E003C000909778819>I< +000003F80000001FFE0000007C1F000000F807800001E007C00003C003E000078003E000 +0F8001E0001F0001F0001F0001F0003E0001F0007E0001F0007C0003F000FC0003F000FC +0003F001F80003F001F80003F003F80007F003F00007F003F00007F007F00007F007F000 +07E007E0000FE00FE0000FE00FE0000FE00FE0000FE01FC0001FC01FC0001FC01FC0001F +C01FC0001FC03F80003F803F80003F803F80003F803F80003F807F00007F007F00007F00 +7F00007F007F00007E007E0000FE007E0000FE007E0000FC00FE0001FC00FE0001F800FE +0001F800FC0003F000FC0003F000FC0003E0007C0007E0007C0007C0007C000F80007C00 +0F80007C001F00003E003E00003E007C00001F00F800000F83E0000007FF80000000FE00 +0000243A77B72A>48 D<000000180000003800000078000000F0000001F0000003F00000 +07F000000FE000001FE000007FE00003FFE0003FEFC0003F8FC0001C1FC000001FC00000 +1F8000001F8000003F8000003F8000003F0000003F0000007F0000007F0000007E000000 +7E000000FE000000FE000000FC000000FC000001FC000001FC000001F8000001F8000003 +F8000003F8000003F0000003F0000007F0000007F0000007E0000007E000000FE000000F +E000000FC000000FC000001FC000001FC000001F8000001F8000003F8000003F8000003F +0000007F8000FFFFFF80FFFFFF80FFFFFF801D3877B72A>I<000003F80000000FFE0000 +003C0F800000F007C00001E003E00003C003F000078001F000070001F8000E0001F8001E +0001F8001C6000FC00387000FC00383001FC00703001FC00703001FC00F03001FC00E030 +01FC00E07003FC01E06003F801C06003F801C0E003F801C0C007F801C1C007F00181800F +F00183800FE001C7001FC001FE003F800078003F000000007E00000000FC00000001F800 +000003F000000007C00000001F800000003E00000000FC00000001F000000007C0000000 +0F800000001E000000007C00000000F80000C001F00001C001E00001C003C00001C00780 +0003C00F000003800E000007801E00000F803C00001F003FF8003F007FFFC07E00783FFF +FC00700FFFFC00F007FFF800E001FFF000E000FFC000E0001F0000263A79B72A>I<0000 +0000E000000001F000000003F000000003F000000003F000000007F000000007E0000000 +07E000000007E00000000FE00000000FC00000000FC00000001FC00000001F800000001F +800000003F000000003F000000003F000000007E000000007E000000007C00000000FC00 +000000F800000001F800000001F000000003F000000003E000000007E000000007C00000 +000FC00000000F800000001F800000001F000000003E000000003E000000007C00000000 +F81C000000F83E000001F07E000003E07E000003C07E00000780FE00000F80FE00001F00 +FC00003E00FC00007C01FC00007801FC0000F001F80001E001F80003C003F8000FFE03F8 +001FFFC3F0003FFFFBF0007C01FFF040F0003FFFE0600007FFE0000007FF0000000FE000 +00000FC00000000FC00000000FC00000001FC00000001F800000001F800000001F800000 +003F800000003F000000003F000000003F000000003F000000003E000000001C00002448 +7DB72A>52 D<000300001800038000F80007F007F00007FFFFE00007FFFFC00007FFFF00 +000FFFFE00000FFFF800000EFFE000000E0C0000001E000000001C000000001C00000000 +1C000000003C000000003800000000380000000038000000007800000000700000000070 +00000000707F000000F3FFC00000EF83E00000FC01F00000F800F80001F000F80001E000 +FC0001C0007C000000007C000000007E000000007E000000007E00000000FE00000000FE +00000000FE00000000FE00000001FE000C0001FC003F0001FC007F0001FC007F0003FC00 +FF0003F800FE0003F800FE0007F000F80007F000E00007E000E0000FE000E0001FC000E0 +001F8000F0003F000070007E00007800FC00007C01F800003E07F000001FFFC000000FFF +00000001F8000000253A77B72A>I<0000007F00000003FFC000000FFFE000003F81E000 +007E00F00000F800700003F003F00007E007F0000FC007F0001F8007F0001F0007E0003F +0007C0007E00000000FE00000000FC00000001F800000001F800000003F800000007F000 +000007F00000000FE07E00000FE3FF80000FE783E0001FCE01F0001FDC00F8001FF800F8 +003FF0007C003FE0007C003FC0007E003FC0007E007F80007E007F80007E007F00007E00 +7F0000FE00FF0000FE00FE0000FE00FE0000FE00FE0001FE00FE0001FC00FC0001FC00FC +0001FC00FC0003FC00FC0003F800FC0003F800FC0003F800F80007F000F80007E000F800 +0FE000F8000FC000F8001F8000FC003F00007C003F00007C007C00003E01F800001F03F0 +00000FFFE0000007FF80000001FC000000243A76B72A>I<00707C000E00F3FE001E00E7 +FF003C01FFFF003801FFFF007803FFFF00F003FF0F01F003FC0703E007F00307C007E003 +8FC00FC001FF800F8000FF801F00000F001E00001F003C00001E003C00003E007800003C +007800007C00F00000F800E00000F800E00001F000000001F000000003E000000003E000 +000007C00000000FC00000000FC00000001F800000001F800000003F000000003F000000 +007F000000007E00000000FE00000000FC00000001FC00000001FC00000001F800000003 +F800000003F800000007F000000007F000000007F00000000FF00000000FE00000000FE0 +0000001FE00000001FC00000001FC00000003FC00000003FC00000003F800000007F8000 +00007F800000007F800000007F000000007E000000003C000000273A74B72A>I<000001 +FC0000000FFF0000003FFFC000007E07E00001F803F00003E001F00007C001F8000F8000 +F8000F8000F8001F0000F8001F0000F8003E0000F8003E0000F8003E0001F8007E0001F0 +007E0001F0007E0003F0007F0003E0007F0007C0007F800F80007FC01F00003FF03E0000 +3FF87C00001FFCF000001FFFE000000FFF80000003FF80000001FFC0000003FFE000000F +7FF800003E3FFC0000781FFC0001F00FFE0003E007FE0007C001FF000F8000FF001F8000 +7F001F00007F003E00003F007E00003F007C00003F007C00003F00FC00003E00F800003E +00F800003E00F800007C00F800007C00F80000F800F80000F800F80001F000FC0003E000 +7C0007C0007E000F80003F003F00001F80FE00000FFFF8000003FFE00000007F00000025 +3A78B72A>I<000001FC0000000FFF0000003FFF8000007E07C00001F803E00003F003E0 +0007E001F0000FC001F0001F8001F0003F8001F8003F0001F8007F0001F8007E0001F800 +FE0001F800FE0001F801FC0001F801FC0001F801FC0003F803FC0003F803F80003F803F8 +0003F803F80007F007F80007F007F00007F007F0000FF007F0000FF007F0000FE003F000 +1FE003F0001FE003F0003FE003F0007FC001F0007FC001F000FFC000F801FFC0007803BF +80003C0F3F80001FFC3F000007F07F000000007F000000007E00000000FE00000000FC00 +000001FC00000001F800000003F000000003F0003E0007E0007F000FC0007F000F80007F +001F0000FE003F0000FC007E00007000F800007803F000007C0FE000003FFF8000001FFE +00000003F8000000253A78B72A>I<003C007E00FF01FF01FF01FF01FE01FC0070000000 +0000000000000000000000000000000000000000000000000000000000000000000E003F +807F80FF80FF80FF80FF007E003C00102477A319>I<0000000001C0000000000003C000 +0000000003C0000000000007C000000000000FC000000000000FC000000000001FC00000 +0000001FE000000000003FE000000000003FE000000000007FE00000000000FFE0000000 +0000EFE00000000001EFE00000000001CFE000000000038FE000000000038FE000000000 +070FE000000000070FE0000000000E0FE0000000001E0FE0000000001C0FE00000000038 +0FE000000000380FE000000000700FF000000000700FF000000000E007F000000000E007 +F000000001C007F000000003C007F0000000038007F0000000070007F0000000070007F0 +0000000E0007F00000000E0007F00000001C0007F00000001C0007F0000000380007F000 +00007FFFFFF00000007FFFFFF0000000FFFFFFF0000000E00007F8000001C00003F80000 +01C00003F8000003800003F8000007800003F8000007000003F800000F000003F800000E +000003F800001C000003F800001C000003F8000038000003F8000078000003F800007000 +0003F80000F0000003F80003F8000003F80007FC000007FC00FFFF8001FFFFF0FFFF8001 +FFFFF0FFFF8001FFFFF0343C7BBB3E>65 D<0007FFFFFFFC000007FFFFFFFF800007FFFF +FFFFC000000FF0001FF000000FE00007F800000FE00003F800001FE00003FC00001FE000 +01FC00001FC00001FE00001FC00001FE00003FC00000FE00003FC00000FE00003F800001 +FE00003F800001FE00007F800001FE00007F800001FC00007F000003FC00007F000003F8 +0000FF000007F80000FF000007F00000FE00000FE00000FE00001FC00001FE00003F8000 +01FE00007F000001FC0001FE000001FC0007F8000003FFFFFFE0000003FFFFFFC0000003 +F80007F0000003F80001FC000007F80000FE000007F800007F000007F000003F800007F0 +00003F80000FF000003FC0000FF000001FC0000FE000001FC0000FE000001FC0001FE000 +001FC0001FE000003FC0001FC000003FC0001FC000003FC0003FC000003FC0003FC00000 +7F80003F8000007F80003F8000007F00007F800000FF00007F800001FE00007F000003FC +00007F000003F80000FF00000FF80000FF00001FE00000FE00003FC00001FE0001FF8000 +FFFFFFFFFE0000FFFFFFFFF80000FFFFFFFFC0000037397BB83A>I<00000003FE000E00 +00003FFF801E000000FFFFE03C000003FE01F03C00000FF000787C00003FC0003CFC0000 +7F00001FF80000FE00000FF80003FC00000FF80007F8000007F8000FF0000007F0001FE0 +000003F0003FC0000003F0003F80000003F0007F00000003E000FF00000003E001FE0000 +0003E001FC00000003E003FC00000003C007F800000003C007F800000003C00FF0000000 +03C00FF000000003801FE000000003801FE000000000001FE000000000003FC000000000 +003FC000000000003FC000000000007FC000000000007F8000000000007F800000000000 +7F800000000000FF800000000000FF000000000000FF000000000000FF000000000000FF +000000000000FF000000003800FF000000003800FF000000007800FE000000007000FF00 +0000007000FF00000000F0007F00000000E0007F00000001E0007F00000001C0007F0000 +0003C0003F8000000780003F8000000700001F8000000E00001FC000001E00000FC00000 +3C00000FE0000078000007F00001F0000003F80003C0000001FE000F800000007F807E00 +0000003FFFFC000000000FFFE00000000000FF00000000373D74BA3B>I<0003FFFFFFFE +00000003FFFFFFFFC0000003FFFFFFFFF000000007F8000FF800000007F00003FC000000 +07F00000FE0000000FF000007F0000000FF000003F8000000FE000001F8000000FE00000 +1FC000001FE000000FC000001FE000000FE000001FC000000FE000001FC0000007E00000 +3FC0000007E000003FC0000007F000003F80000007F000003F80000007F000007F800000 +07F000007F80000007F000007F00000007F000007F00000007F00000FF00000007F00000 +FF0000000FF00000FE0000000FF00000FE0000000FF00001FE0000000FF00001FE000000 +0FE00001FC0000001FE00001FC0000001FE00003FC0000001FE00003FC0000001FC00003 +F80000003FC00003F80000003FC00007F80000003F800007F80000007F800007F0000000 +7F000007F00000007F00000FF0000000FE00000FF0000000FE00000FE0000001FC00000F +E0000001F800001FE0000003F800001FE0000007F000001FC0000007E000001FC000000F +C000003FC000001F8000003FC000003F8000003F8000007F0000003F800000FC0000007F +800003F80000007F800007F00000007F00001FC0000000FF0001FF8000007FFFFFFFFE00 +0000FFFFFFFFF0000000FFFFFFFF800000003C397CB83F>I<0007FFFFFFFFFF0007FFFF +FFFFFF0007FFFFFFFFFF00000FF00003FF00000FE000007F00000FE000003E00001FE000 +003E00001FE000001E00001FC000001E00001FC000001E00003FC000001E00003FC00000 +1E00003F8000001E00003F8000001C00007F8000001C00007F8000001C00007F0003801C +00007F0003801C0000FF0007801C0000FF000780000000FE000700000000FE000F000000 +01FE000F00000001FE001F00000001FC003E00000001FC007E00000003FFFFFE00000003 +FFFFFE00000003FFFFFC00000003F800FC00000007F8007C00000007F8003C00000007F0 +003800000007F000380000000FF000780000000FF0007800E0000FE0007000E0000FE000 +7001E0001FE0007001C0001FE0000001C0001FC0000003C0001FC000000380003FC00000 +0780003FC000000700003F8000000F00003F8000000F00007F8000001E00007F8000003E +00007F0000003C00007F0000007C0000FF000000FC0000FF000001F80000FE000007F800 +01FE00007FF000FFFFFFFFFFF000FFFFFFFFFFF000FFFFFFFFFFE00038397BB838>I<00 +07FFFFFFFFFE0007FFFFFFFFFE0007FFFFFFFFFE00000FF00007FE00000FE00000FE0000 +0FE000007C00001FE000003C00001FE000003C00001FC000003C00001FC000003C00003F +C000003C00003FC000003C00003F8000003C00003F8000003800007F8000003800007F80 +00003800007F0000003800007F000380380000FF000780380000FF000780000000FE0007 +00000000FE000700000001FE000F00000001FE000F00000001FC001E00000001FC003E00 +000003FC00FE00000003FFFFFE00000003FFFFFC00000003FFFFFC00000007F800FC0000 +0007F8007C00000007F0007800000007F000780000000FF000780000000FF00078000000 +0FE000700000000FE000700000001FE000F00000001FE000F00000001FC000000000001F +C000000000003FC000000000003FC000000000003F8000000000003F8000000000007F80 +00000000007F8000000000007F0000000000007F000000000000FF000000000000FF0000 +00000000FE000000000001FF0000000000FFFFFF00000000FFFFFF00000000FFFFFF0000 +000037397BB836>I<00000003FE000E0000003FFF801E000000FFFFE03C000003FE01F0 +3C00000FF000787C00003FC0003CFC00007F00001FF80000FE00000FF80003FC00000FF8 +0007F8000007F8000FF0000007F0001FE0000003F0003FC0000003F0003F80000003F000 +7F00000003E000FF00000003E001FE00000003E001FC00000003E003FC00000003C007F8 +00000003C007F800000003C00FF000000003C00FF000000003801FE000000003801FE000 +000000001FE000000000003FC000000000003FC000000000003FC000000000007FC00000 +0000007F8000000000007F8000000000007F800000000000FF800000000000FF00000000 +0000FF000007FFFFE0FF000007FFFFE0FF000007FFFFE0FF00000007FC00FF00000003F8 +00FF00000007F800FF00000007F000FF00000007F000FF00000007F0007F0000000FF000 +7F0000000FE0007F0000000FE0007F0000000FE0003F8000001FE0003F8000001FE0001F +8000001FC0001FC000003FC0000FE000003FC0000FE000007FC00007F00000FF800003F8 +0003EF800001FE0007C78000007FC03F078000003FFFFC030000000FFFF00000000000FF +80000000373D74BA40>I<0003FFFFF80FFFFFE00003FFFFF80FFFFFE00003FFFFF80FFF +FFE0000007F800001FE000000007F000001FC000000007F000001FC00000000FF000003F +C00000000FF000003F800000000FE000003F800000000FE000003F800000001FE000007F +800000001FE000007F000000001FC000007F000000001FC000007F000000003FC00000FF +000000003FC00000FE000000003F800000FE000000003F800000FE000000007F800001FE +000000007F800001FC000000007F000001FC000000007F000001FC00000000FF000003FC +00000000FF000003F800000000FE000003F800000000FE000003F800000001FFFFFFFFF8 +00000001FFFFFFFFF000000001FFFFFFFFF000000001FC000007F000000003FC00000FF0 +00000003FC00000FE000000003F800000FE000000003F800000FE000000007F800001FE0 +00000007F800001FC000000007F000001FC000000007F000001FC00000000FF000003FC0 +0000000FF000003F800000000FE000003F800000000FE000003F800000001FE000007F80 +0000001FE000007F000000001FC000007F000000001FC000007F000000003FC00000FF00 +0000003FC00000FE000000003F800000FE000000003F800000FE000000007F800001FE00 +0000007F800001FC000000007F000001FC00000000FF000003FC0000007FFFFE01FFFFF8 +0000FFFFFE03FFFFF80000FFFFFE03FFFFF8000043397CB83E>I<0003FFFFF80003FFFF +F80003FFFFF8000007F800000007F000000007F00000000FF00000000FF00000000FE000 +00000FE00000001FE00000001FE00000001FC00000001FC00000003FC00000003FC00000 +003F800000003F800000007F800000007F800000007F000000007F00000000FF00000000 +FF00000000FE00000000FE00000001FE00000001FE00000001FC00000001FC00000003FC +00000003FC00000003F800000003F800000007F800000007F800000007F000000007F000 +00000FF00000000FF00000000FE00000000FE00000001FE00000001FE00000001FC00000 +001FC00000003FC00000003FC00000003F800000003F800000007F800000007F80000000 +7F00000000FF800000FFFFFF0000FFFFFF0000FFFFFE000025397CB820>I<0007FFFFFC +000007FFFFFC000007FFFFF80000000FF8000000000FF0000000000FE0000000001FE000 +0000001FE0000000001FC0000000001FC0000000003FC0000000003FC0000000003F8000 +0000003F80000000007F80000000007F80000000007F00000000007F0000000000FF0000 +000000FF0000000000FE0000000000FE0000000001FE0000000001FE0000000001FC0000 +000001FC0000000003FC0000000003FC0000000003F80000000003F80000000007F80000 +000007F80000000007F00000000007F0000000000FF0000000000FF000000C000FE00000 +1C000FE000001C001FE000003C001FE0000038001FC0000078001FC0000078003FC00000 +70003FC00000F0003F800000E0003F800001E0007F800003E0007F800003C0007F000007 +C0007F00000FC000FF00001F8000FF00003F8000FE0000FF8001FE0007FF00FFFFFFFFFF +00FFFFFFFFFF00FFFFFFFFFE002E397BB834>76 D<0007FFF800000007FFF00007FFF800 +00000FFFF00007FFF80000001FFFE000000FF80000001FF00000000FF80000003FE00000 +000FF80000003FE00000001FF80000007FE00000001FF8000000EFC00000001DF8000000 +EFC00000001CFC000001CFC00000003CFC000001DFC00000003CFC0000039F8000000038 +FC0000071F8000000038FC0000071F8000000078FC00000E3F8000000078FC00000E3F00 +00000070FC00001C3F0000000070FC00001C3F00000000F0FC0000387F00000000F0FC00 +00707E00000000E0FC0000707E00000000E07E0000E07E00000001E07E0000E0FE000000 +01E07E0001C0FC00000001C07E000380FC00000001C07E000380FC00000003C07E000701 +FC00000003C07E000701F800000003807E000E01F800000003807E000E01F80000000780 +7E001C03F800000007807E003803F000000007007E003803F000000007003F007003F000 +00000F003F007007F00000000F003F00E007E00000000E003F01C007E00000000E003F01 +C007E00000001E003F03800FE00000001E003F03800FC00000001C003F07000FC0000000 +1C003F07000FC00000003C003F0E001FC00000003C003F1C001F8000000038003F1C001F +8000000038001FB8001F8000000078001FB8003F8000000078001FF0003F000000007000 +1FE0003F0000000070001FE0003F00000000F0001FC0007F00000000F0001FC0007E0000 +0001F0001F80007E00000007F8001F8000FE000000FFFFC01F007FFFFC0000FFFFC01E00 +7FFFFC0000FFFFC00E007FFFFC00004C397AB84A>I<0003FFF80000FFFFE00003FFF800 +00FFFFE00003FFFC0000FFFFE0000007FC000007F800000007FE000003F000000007FE00 +0003E00000000FFE000003C00000000FFF000003C00000000E7F000003800000000E7F00 +0003800000001E7F800007800000001E3F800007000000001C3F800007000000001C3FC0 +0007000000003C1FC0000F000000003C1FE0000E00000000380FE0000E00000000380FE0 +000E00000000780FF0001E000000007807F0001C000000007007F0001C000000007007F8 +001C00000000F003F8003C00000000F003FC003800000000E003FC003800000000E001FC +003800000001E001FE007800000001E000FE007000000001C000FE007000000001C000FF +007000000003C0007F00F000000003C0007F00E00000000380007F80E00000000380003F +80E00000000780003FC1E00000000780001FC1C00000000700001FC1C00000000700001F +E1C00000000F00000FE3C00000000F00000FE3800000000E00000FF3800000000E000007 +F3800000001E000007FF800000001E000007FF000000001C000003FF000000001C000003 +FF000000003C000001FF000000003C000001FE0000000038000001FE0000000038000000 +FE0000000078000000FE0000000078000000FC00000000F80000007C00000003FC000000 +7C0000007FFFE000003C000000FFFFE0000038000000FFFFE000003800000043397CB83E +>I<0007FFFFFFF8000007FFFFFFFF000007FFFFFFFF8000000FF0003FE000000FE0000F +F000000FE00003F800001FE00003F800001FE00001FC00001FC00001FC00001FC00001FC +00003FC00001FE00003FC00001FE00003F800001FE00003F800001FE00007F800001FE00 +007F800003FC00007F000003FC00007F000003FC0000FF000003F80000FF000007F80000 +FE000007F00000FE00000FE00001FE00000FE00001FE00001FC00001FC00003F800001FC +0000FE000003FC0001FC000003FC000FF0000003FFFFFFC0000003FFFFFE00000007F800 +0000000007F8000000000007F0000000000007F000000000000FF000000000000FF00000 +0000000FE000000000000FE000000000001FE000000000001FE000000000001FC0000000 +00001FC000000000003FC000000000003FC000000000003F8000000000003F8000000000 +007F8000000000007F8000000000007F0000000000007F000000000000FF000000000000 +FF000000000000FE000000000001FE0000000000FFFFFC00000000FFFFFC00000000FFFF +FC0000000037397BB838>80 D<00000003FE00000000003FFFC000000000FC07F0000000 +03E001F80000000FC0007C0000003F00003E0000007E00001F000000FC00001F800001F0 +00000FC00007F000000FC0000FE0000007E0001FC0000007E0001F80000007F0003F0000 +0007F0007F00000003F000FE00000003F801FC00000003F801FC00000003F803F8000000 +03F803F800000003F807F000000003F807F000000003F80FF000000003F80FE000000007 +F81FE000000007F81FE000000007F83FC000000007F83FC000000007F83FC000000007F8 +7F800000000FF07F800000000FF07F800000000FF07F800000000FF0FF000000001FE0FF +000000001FE0FF000000001FE0FF000000003FC0FF000000003FC0FF000000003F80FF00 +0000007F80FE000000007F00FE00000000FF00FE00000000FE00FE00000001FE00FE0000 +0001FC007F00000003F8007F00000003F0007F000F8007F0007F003FE00FE0003F007060 +1FC0003F80E0301F80001F81C0303F00001F8180187E00000FC38018FC000007E30019F0 +000003E3001FE0000001FB001F80000000FF803F000000003F81FC001800001FFFF80018 +000001FF380038000000003C0030000000003C0070000000003C00F0000000003C00E000 +0000003E03E0000000003F07E0000000003FFFC0000000003FFF80000000003FFF800000 +00003FFF00000000003FFE00000000001FFC00000000000FF8000000000007E00000354B +74BA40>I<0003FFFFFFF0000003FFFFFFFE000003FFFFFFFF80000007F8003FC0000007 +F0000FF0000007F00007F000000FF00003F800000FF00001FC00000FE00001FC00000FE0 +0001FC00001FE00001FE00001FE00001FE00001FC00001FE00001FC00001FE00003FC000 +01FE00003FC00003FC00003F800003FC00003F800003FC00007F800007F800007F800007 +F000007F00000FF000007F00000FE00000FF00001FC00000FF00003F000000FE0000FE00 +0000FE0001F8000001FE000FE0000001FFFFFF80000001FFFFFC00000001FC003F000000 +03FC000F80000003FC000FC0000003F80007E0000003F80007F0000007F80003F0000007 +F80003F0000007F00003F0000007F00003F800000FF00007F800000FF00007F000000FE0 +0007F000000FE00007F000001FE0000FF000001FE0000FF000001FC0000FF000001FC000 +0FF000003FC0000FF000003FC0001FF000003F80001FE007003F80001FE007007F80001F +E00F007F80001FE00E007F00001FE00E00FF00000FE01C7FFFFE000FE03CFFFFFE0007F0 +78FFFFFE0003F0F00000000000FFE000000000003F80383B7CB83D>I<0000003FC00E00 +0001FFF01C000007FFFC1C00001FC07E3C00003F001F7C00007C000FF80000F80007F800 +01F00003F80003E00003F80007C00001F00007C00001F0000F800001F0000F800001F000 +1F800001E0001F000001E0001F000001E0001F000001E0003F000001C0003F000001C000 +3F000001C0003F80000000003F80000000003FC0000000001FE0000000001FFC00000000 +1FFF800000000FFFF00000000FFFFE00000007FFFF80000003FFFFE0000000FFFFF00000 +003FFFF800000007FFF8000000007FFC000000000FFC0000000003FC0000000001FC0000 +000001FC0000000000FC0000000000FC00000000007C000E0000007C000E0000007C000E +0000007C001E000000FC001E000000F8001E000000F8001E000000F8003E000001F0003E +000001F0003E000003E0003E000003E0007F000007C0007F00000F80007F80001F00007F +C0003E0000F9F000FC0000F8FC03F80000F07FFFE00000E01FFF800000C003FC0000002F +3D7ABA2F>I<07FFFFFFFFFFE007FFFFFFFFFFE00FFFFFFFFFFFE00FF800FF001FE00FC0 +00FE0007C01F8000FE0007C01F0001FE0003C01E0001FE0003C01C0001FC0003C03C0001 +FC0003803C0003FC000380380003FC000380780003F8000380700003F8000780700007F8 +000780F00007F8000700E00007F0000700E00007F0000700E0000FF000070000000FF000 +000000000FE000000000000FE000000000001FE000000000001FE000000000001FC00000 +0000001FC000000000003FC000000000003FC000000000003F8000000000003F80000000 +00007F8000000000007F8000000000007F0000000000007F000000000000FF0000000000 +00FF000000000000FE000000000000FE000000000001FE000000000001FE000000000001 +FC000000000001FC000000000003FC000000000003FC000000000003F8000000000003F8 +000000000007F8000000000007F8000000000007F0000000000007F000000000000FF000 +000000000FF000000000000FE000000000003FF0000000007FFFFFF8000000FFFFFFF800 +0000FFFFFFF8000000333971B83B>I86 DI<0001FFFFF007FFFF0001 +FFFFF007FFFF0001FFFFF007FFFF000007FF0000FFE0000003FC00007F00000003FC0000 +7C00000001FC00007800000001FE0000F000000001FE0001E000000000FE0001C0000000 +00FF00038000000000FF000700000000007F000F00000000007F801E00000000007F803C +00000000003F807800000000003FC07000000000003FC0E000000000001FC1C000000000 +001FE3C000000000001FE78000000000000FEF0000000000000FFE00000000000007FC00 +000000000007F800000000000007F800000000000003F800000000000003FC0000000000 +0003FC00000000000007FC00000000000007FE0000000000000FFE0000000000001CFE00 +00000000003CFF00000000000078FF000000000000F07F000000000001E07F8000000000 +01C03F800000000003803FC00000000007003FC0000000000E001FC0000000001E001FE0 +000000003C001FE00000000078000FE00000000070000FF000000000E0000FF000000001 +C00007F000000003800007F800000007800007F80000000F000003F80000001E000003FC +0000003E000003FC000000FE000003FE000007FF000007FE0000FFFFE0007FFFFC00FFFF +E000FFFFFC00FFFFE000FFFFF80040397CB83E>I<0000F800000007FE0000001F871C00 +003E03FE00007C03FE0000F801FE0001F801FE0003F000FC0007E000FC000FE000FC000F +C001FC001FC001F8001FC001F8003F8001F8003F8003F8007F8003F0007F0003F0007F00 +03F0007F0007F000FF0007E000FE0007E000FE0007E000FE000FE000FE000FC000FC000F +C1C0FC000FC1C0FC001FC1C0FC001F83C0FC001F8380FC003F8380FC003F87807C007F87 +007C00FF07003E01FF0F003E038F8E001F0F079E0007FE03FC0001F000F000222677A42A +>97 D<003F00001FFF00001FFF00001FFF0000007F0000007E0000007E0000007E000000 +FE000000FC000000FC000000FC000001FC000001F8000001F8000001F8000003F8000003 +F0000003F0000003F0000007F0000007E0F80007E7FE0007EF0F800FFC07C00FF807C00F +F003E00FE003E01FC003F01FC003F01F8003F01F8003F03F8003F03F0003F03F0003F03F +0007F07F0007F07E0007F07E0007F07E000FF0FE000FF0FC000FE0FC000FE0FC001FE0FC +001FC0F8001FC0F8003F80F8003F80F8003F00F8007F00F8007E00F800FC007801F8007C +01F0003C03E0003E07C0001E1F80000FFE000001F000001C3B77B926>I<00007F000003 +FFC0000FC1E0001F0070007E007800FC003801F801F803F003F807F003F807E003F80FE0 +03F81FC003F01FC000003F8000003F8000007F8000007F0000007F0000007F000000FF00 +0000FE000000FE000000FE000000FE000000FC000000FC000000FC000000FC000030FC00 +0038FC0000787C0000F07E0001E03E0003C03E000F801F003E000F81F80003FFE00000FF +00001D2677A426>I<00000001F8000000FFF8000000FFF8000000FFF800000003F80000 +0003F000000003F000000007F000000007F000000007E000000007E00000000FE0000000 +0FE00000000FC00000000FC00000001FC00000001FC00000001F800000001F800000003F +800000003F800000F83F000007FE3F00001F877F00003E03FF00007C03FE0000F801FE00 +01F801FE0003F000FE0007E000FC000FE000FC000FC001FC001FC001FC001FC001F8003F +8001F8003F8003F8007F8003F8007F0003F0007F0003F0007F0007F000FF0007F000FE00 +07E000FE0007E000FE000FE000FE000FE000FC000FC1C0FC000FC1C0FC001FC1C0FC001F +C3C0FC001F8380FC003F8380FC003F87807C007F87007C00FF07003E01FF0F003E038F8E +001F0F079E0007FE03FC0001F000F000253B77B92A>I<00007F000003FFC0000FC1E000 +3F00F0007E007800FC007801F8007803F0007807E000780FE000780FC000F81FC000F03F +8001F03F8007E03F801F807F81FF007FFFF8007FFF00007F000000FF000000FE000000FE +000000FE000000FE000000FE000000FC000000FC000000FC0000307C0000387C0000787E +0000F03E0001E03E0003C01F000F800F003E000781F80003FFE00000FF00001D2677A426 +>I<00000007C00000001FF00000003E380000007C3C000000F8FC000000F9FC000001F9 +FC000001F1FC000003F1F8000003F0F0000003F000000007F000000007E000000007E000 +000007E000000007E00000000FE00000000FC00000000FC00000000FC00000000FC00000 +001FC00000001F8000000FFFFFC0001FFFFFC0001FFFFF8000003F800000003F00000000 +3F000000003F000000003F000000007F000000007E000000007E000000007E000000007E +00000000FE00000000FC00000000FC00000000FC00000000FC00000001FC00000001F800 +000001F800000001F800000001F800000003F800000003F000000003F000000003F00000 +0003F000000007F000000007E000000007E000000007E000000007E00000000FE0000000 +0FC00000000FC00000000FC00000001FC00000001F800000001F800000001F800000001F +000000003F0000001C3F0000007E3E0000007E3E000000FE3C000000FE7C000000FE7800 +0000F8F000000078F00000003FC00000000F80000000264C82BA19>I<000007C0000000 +3FF0000000FC38E00001F01FF00003E01FF00007C00FF0000F800FF0001F8007F0003F00 +07E0007F0007E0007E000FE000FE000FE000FC000FC001FC000FC001FC001FC003FC001F +C003F8001F8003F8001F8003F8003F8007F8003F8007F0003F0007F0003F0007F0007F00 +07F0007F0007E0007E0007E0007E0007E000FE0007E000FE0007E000FC0003E001FC0003 +E003FC0003E007FC0001F00FF80000F01FF80000787BF800003FF3F800000FC3F0000000 +03F000000007F000000007F000000007E000000007E00000000FE00000000FC0001C000F +C0007E001FC0007E001F8000FE003F0000FE007E0000FE00FC00007801F800007C07E000 +001FFF80000003FE00000024367CA426>I<0003F0000001FFF0000001FFF0000001FFF0 +00000007F000000007E000000007E000000007E00000000FE00000000FC00000000FC000 +00000FC00000001FC00000001F800000001F800000001F800000003F800000003F000000 +003F000000003F000000007F000000007E07F000007E1FFC00007E783E0000FFE01F0000 +FFC01F8000FF800F8000FF000F8001FE000F8001FE000FC001FC000FC001F8001F8003F8 +001F8003F0001F8003F0001F8003F0003F8007F0003F0007E0003F0007E0003F0007E000 +7F000FE0007E000FC0007E000FC000FE000FC000FC001FC000FC001F8001FC1C1F8001F8 +1C1F8001F83C3F8003F8383F0003F0383F0003F0383F0003F0707F0003E0707E0003E0F0 +7E0003E0E07E0003E1C0FE0001E380FC0000FF003800003C00263B7BB92A>I<0001C000 +07E00007F0000FF0000FE00007E000038000000000000000000000000000000000000000 +000000000000000000000000000000F00003FC00071E000E1F001C1F001C1F00381F0038 +3F00703F00703F00707F00F07E00E07E00E0FE0000FC0000FC0001FC0001F80003F80003 +F80003F00007F00007E00007E0000FE0E00FC0E00FC1E01FC1C01F81C01F81C01F83801F +03801F07001F07001F0E000F1C0007F80001E000143879B619>I<0000000E0000003F00 +00007F0000007F0000007F0000007E0000001C0000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000001F8000007FC000 +00F1F00001C0F0000380F8000780F8000701F8000F01F8000E01F8001E01F8001C03F800 +3C03F8003803F0003803F0000007F0000007F0000007E0000007E000000FE000000FE000 +000FC000000FC000001FC000001FC000001F8000001F8000003F8000003F8000003F0000 +003F0000007F0000007F0000007E0000007E000000FE000000FE000000FC000000FC0000 +01FC000001FC000001F8000001F8000003F8000003F0001C03F0007E07E0007E07E000FE +0FC000FE0F8000FE1F0000F83E0000787C00003FF000000FC00000204883B619>I<0003 +F0000001FFF0000001FFF0000001FFF000000007F000000007E000000007E000000007E0 +0000000FE00000000FC00000000FC00000000FC00000001FC00000001F800000001F8000 +00001F800000003F800000003F000000003F000000003F000000007F000000007E000F80 +007E003FE0007E00F0E000FE01C1F000FC0387F000FC0707F000FC0E07F001FC1C07E001 +F83807E001F830038001F870000003F8E0000003F1C0000003F380000003FF00000007FC +00000007FE00000007FFC0000007E7F800000FE1FC00000FC07E00000FC07F00000FC03F +00001FC03F80001F801F81C01F801F81C01F801F83C03F803F83803F003F03803F003F03 +803F003F07807F003F07007E003E07007E001E0E007E001E1E00FE000F3C00FC0007F800 +380001E000243B7BB926>I<000FC007FFC007FFC007FFC0001FC0001F80001F80003F80 +003F80003F00003F00007F00007F00007E00007E0000FE0000FE0000FC0000FC0001FC00 +01FC0001F80001F80003F80003F80003F00003F00007F00007F00007E00007E0000FE000 +0FE0000FC0000FC0001FC0001FC0001F80001F80003F80003F80003F00003F00007F0000 +7F00007E0E007E0E00FE0E00FE1E00FC1C00FC1C00FC3C00FC3800F83800F87800787000 +7CE0001FE0000F8000123B79B915>I<01E000FE0007F00007F803FF801FFC000E3C0F07 +C0783E001E3E3C03E1E01F001C1F7803F3C01F80383FF001F7800F80383FE001F7000F80 +783FC001FE000F80703FC001FE000FC0703F8001FC000FC0703F0003F8001F80F07F0003 +F8001F80E07E0003F0001F80E07E0003F0001F80007E0007F0003F8000FE0007F0003F00 +00FC0007E0003F0000FC0007E0003F0000FC000FE0007F0001FC000FE0007E0001F8000F +C0007E0001F8000FC000FE0001F8001FC000FC0003F8001FC000FC0003F0001F8001FC1C +03F0001F8001F81C03F0003F8001F83C07F0003F8003F83807E0003F0003F03807E0003F +0003F03807E0007F0003F0700FE0007F0003E0700FC0007E0003E0F00FC0007E0003E0E0 +0FC000FE0003E1C01FC000FE0001E3C01F8000FC0000FF000700003800003C003E2679A4 +44>I<01E000FE000007F803FF80000E3C0F07C0001E3E3C03E0001C1F7803F000383FF0 +01F000383FE001F000783FC001F000703FC001F800703F8001F800703F0003F000F07F00 +03F000E07E0003F000E07E0003F000007E0007F00000FE0007E00000FC0007E00000FC00 +07E00000FC000FE00001FC000FC00001F8000FC00001F8001FC00001F8001F800003F800 +1F800003F0003F838003F0003F038003F0003F078007F0007F070007E0007E070007E000 +7E070007E0007E0E000FE0007C0E000FC0007C1E000FC0007C1C000FC0007C38001FC000 +3C78001F80001FE000070000078000292679A42F>I<00007F000003FFC0000FC1F0001F +00F8007E007C00FC007C01F8007E03F0003E07F0003F07E0003F0FE0003F1FC0003F1FC0 +003F3F80003F3F80007F7F80007F7F00007F7F00007F7F0000FFFF0000FFFE0000FEFE00 +00FEFE0001FEFE0001FCFC0001FCFC0003F8FC0003F8FC0007F0FC0007E0FC000FE07C00 +0FC07E001F803E003F003E007E001F00F8000F83F00003FFC00000FE0000202677A42A> +I<00078007C000001FE03FF000003CF0787C000038F8E03E0000787FC03E0000707F801F +000070FF001F0000F0FE001F8000E0FE001F8000E0FC001F8001E1FC001F8001C1FC001F +8001C1F8001F8001C1F8001F800003F8003F800003F8003F800003F0003F800003F0003F +800007F0007F800007F0007F800007E0007F000007E0007F00000FE000FF00000FE000FE +00000FC000FE00000FC001FC00001FC001FC00001FC001F800001F8003F800001F8003F0 +00003F8007E000003FC00FC000003FC00F8000003FE01F0000007FE03E0000007F70FC00 +00007E3FF00000007E0F80000000FE0000000000FE0000000000FC0000000000FC000000 +0001FC0000000001FC0000000001F80000000001F80000000003F80000000003F8000000 +0003F00000000007F000000000FFFFC0000000FFFFC0000000FFFFC0000000293580A42A +>I<0000F8030007FE07001F871F003E03BF007C03FE00F801FE01F801FE03F000FE07E0 +00FC0FE000FC0FC000FC1FC001FC1FC001F83F8001F83F8001F87F8003F87F0003F07F00 +03F07F0003F0FF0007F0FE0007E0FE0007E0FE0007E0FE000FE0FC000FC0FC000FC0FC00 +0FC0FC001FC0FC001F80FC003F80FC003F807C007F807C00FF003E01FF003E03BF001F0F +7F0007FE7E0001F07E0000007E000000FE000000FC000000FC000000FC000001FC000001 +F8000001F8000001F8000003F8000003F0000007F00001FFFFC001FFFFC001FFFFC02035 +77A426>I<03C003F0000FF01FFC001E783C0F001C7C700F003C3EE03F80383FC03F8038 +7F803F80787F803F00707F003F00707F001C00F07E000000E0FE000000E0FC000000E0FC +00000000FC00000001FC00000001F800000001F800000001F800000003F800000003F000 +000003F000000003F000000007F000000007E000000007E000000007E00000000FE00000 +000FC00000000FC00000000FC00000001FC00000001F800000001F800000001F80000000 +3F800000003F000000000E00000000212679A423>I<0000FE000007FF80000F83C0003E +00E0007C00F00078007000F800F001F803F001F003F001F003F001F003E003F001C003F8 +000003FC000003FFC00001FFF80001FFFE0000FFFF00007FFF80003FFF80000FFFC00000 +FFC000003FC000001FC000000FC03E000FC07E000FC0FE000F80FE000F80FE000F80FC00 +1F00E0001F00F0003E0070007C003800F8001E03E0000FFFC00001FE00001C267AA422> +I<0003800007C0000FC0000FC0000FC0000FC0001FC0001F80001F80001F80003F80003F +00003F00003F00007F00007E007FFFFF7FFFFFFFFFFF00FC0000FC0000FC0001FC0001F8 +0001F80001F80003F80003F00003F00003F00007F00007E00007E00007E0000FE0000FC0 +000FC0000FC0001FC0001F801C1F801C1F803C3F80383F00783F00703F00F03F00E03F01 +C03E03C01F07800F0F0007FC0001F000183579B31C>I<00F800000003FE0001C0078F00 +03E00E0F8007E01E0F8007E01C0F8007E0380F800FE0381F800FE0781F800FC0701F800F +C0703F801FC0F03F001FC0E03F001F80E07F001F80007E003F80007E003F8000FE003F00 +00FC003F0000FC007F0001FC007F0001F8007E0001F8007E0001F800FE0003F800FE0003 +F000FC0E03F000FC0E03F001FC1E03F001FC1C03F001F81C03E001F81C03E001F83C03F0 +03F83803F007F83801F007F07001F01EF8F000F83C78E0003FF03FC0000FC00F00272679 +A42D>I<00F0000E0003FC003F00071E007F800E1F007F801C1F007F803C1F007F80381F +003F80383F001F80703F000F80703F000F80707F000F80F07E000F00E07E000700E0FE00 +070000FC000F0000FC000E0001FC000E0001F8000E0001F8001E0003F8001C0003F0001C +0003F0001C0003F0003C0007F000380007E000380007E000700007E000700007E0007000 +07E000E00007E000E00007E001C00007E003C00003E003800003F007000001F00E000000 +F83C0000007FF80000000FC00000212679A426>I<00F0000000070003FC0003801F8007 +1E0007C03FC00E1F000FC03FC01C1F000FC03FC03C1F000FC03FC0381F001FC01FC0383F +001F800FC0703F001F8007C0703F001F8007C0707F003F8007C0F07E003F800780E07E00 +3F000380E0FE003F00038000FC007F00078000FC007F00070001FC007E00070001F8007E +00070001F800FE000F0003F800FE000E0003F000FC000E0003F000FC000E0003F000FC00 +1E0007F001FC001C0007E001F8001C0007E001F8003C0007E001F800380007E001F80038 +0007E001F800780007E001F800700007E003F800F00007E003F800E00003E007F801E000 +03F00FFC03C00001F01E7C07800000FC3C3E0F0000003FF81FFE0000000FE003F0000032 +2679A437>I<0007E007C0001FF81FF800787C383C00F03E703C01E01EE0FE03C01FE0FE +03801FC0FE07001FC0FC0F001F80FC0E001F80700E003F80001E003F00001C003F00001C +003F000000007F000000007F000000007E000000007E00000000FE00000000FE00000000 +FC00000000FC00000001FC00000001FC00000001F800700001F800700003F800F00003F8 +00E01C03F000E07E03F001E07E07F001C0FE07F00380FE0FF00780FE0EF00F00781CF81E +0078387C3C003FF03FF00007C00FC00027267CA427>I<00F000000003FC0001C0071E00 +03E00E1F0007E01C1F0007E03C1F0007E0381F000FE0383F000FC0703F000FC0703F000F +C0707F001FC0F07E001F80E07E001F80E0FE001F8000FC003F8000FC003F0001FC003F00 +01F8003F0001F8007F0003F8007E0003F0007E0003F0007E0003F000FE0007F000FC0007 +E000FC0007E000FC0007E001FC0007E001F80007E001F80007E001F80007E003F80007E0 +03F00007E007F00003E00FF00003F01FF00001F87FE000007FF7E000001FC7E00000000F +E00000000FC00000000FC00000001FC0003F001F80007F003F80007F003F00007F007E00 +007F007C00007E00FC00007001F800007003E000003807C000003C1F8000000FFE000000 +03F0000000233679A428>I<0003C00380000FF00780001FF80700003FFC0F00007FFC0E +0000FFFE1E0000F83FFC0001F007F80001E000F00001C000E00001C001E000000003C000 +000007800000000F000000001E000000003C000000007800000000F000000001E0000000 +03C000000007800000000F000000001E000000003C0000000078001C0000F0001C0001E0 +003C0003C00038000380007800078000F8000FF801F0001FFF07E0003E1FFFE0003C0FFF +C000780FFF80007007FF0000F003FC0000E000F0000021267BA422>I +E /Fx 22 91 df<78FCFCFEFE7E060606060C0C181830604007117A8513>44 +D<000018000000003C000000003C000000003C000000007E000000007E000000007E0000 +0000DF00000000DF00000000DF000000018F800000018F800000018F8000000307C00000 +0307C000000707E000000603E000000603E000000E03F000000C01F000000C01F0000018 +01F800001800F800001800F8000030007C000030007C000030007C00007FFFFE00007FFF +FE000060003E0000C0001F0000C0001F0000C0001F000180000F800180000F800380000F +C003000007C003000007C007000007E01FC00007E0FFF0007FFFFFF0007FFF282A7DA92F +>65 DI<00007F800800 +07FFE018001FC07838003E000C3800F800067801F00003F803E00001F807C00000F80F80 +0000780F800000781F000000383F000000383E000000387E000000387E000000187C0000 +00187C00000018FC00000000FC00000000FC00000000FC00000000FC00000000FC000000 +00FC00000000FC000000007C000000007C000000187E000000187E000000183E00000018 +3F000000301F000000300F800000300F8000006007C000006003E00000C001F000018000 +F8000300003E000E00001FC03C000007FFF00000007F8000252A7CA82E>III<0000FF00100007FFE030001FC07070007E001C7000F800 +0EF001F00003F003E00003F007C00001F00F800000F01F000000F01F000000703F000000 +703E000000707E000000307E000000307C00000030FC00000030FC00000000FC00000000 +FC00000000FC00000000FC00000000FC00000000FC00000000FC0000FFFFFC0000FFFF7C +000003F07E000001F07E000001F03E000001F03F000001F01F000001F01F800001F00F80 +0001F007C00001F003E00001F001F00003F000F80003F0007E000E70001FC03C300007FF +F0100000FF8000282A7CA831>71 DII75 DIII<0000FF00000007FFE000001F81F800007C003E0000F8001F0001E000078003C00003 +C007C00003E00F800001F01F000000F81F000000F83E0000007C3E0000007C7E0000007E +7E0000007E7C0000003EFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC +0000003FFC0000003FFC0000003FFC0000003FFC0000003F7E0000007E7E0000007E7E00 +00007E3E0000007C3F000000FC1F000000F81F800001F80F800001F007C00003E007E000 +07E003F0000FC000F8001F00007C003E00001F81F8000007FFE0000000FF0000282A7CA8 +31>I82 D<00FF008003FFC1800780F3801E003B803C001F8038000F8078000780700003 +80F0000380F0000380F0000180F0000180F8000180F80000007C0000007E0000003FC000 +003FFC00001FFFC0000FFFF80003FFFC0000FFFE00001FFF000000FF8000001FC000000F +C0000007C0000003E0000003E0C00001E0C00001E0C00001E0C00001E0E00001C0E00001 +C0F00003C0F0000380FC000700EE000E00E7C03C00C1FFF800803FC0001B2A7CA824>I< +7FFFFFFFFC7FFFFFFFFC7E007C00FC78007C003C70007C001C60007C000C60007C000CE0 +007C000EC0007C0006C0007C0006C0007C0006C0007C0006C0007C000600007C00000000 +7C000000007C000000007C000000007C000000007C000000007C000000007C000000007C +000000007C000000007C000000007C000000007C000000007C000000007C000000007C00 +0000007C000000007C000000007C000000007C000000007C000000007C000000007C0000 +00007C00000000FE0000007FFFFC00007FFFFC0027287DA72E>III<7FFF003FFE007FFF003FFE00 +03FC000FE00001F80007800000FC00070000007C00060000007E000C0000003F001C0000 +001F00180000001F80300000000FC07000000007C0E000000007E0C000000003F1800000 +0001F38000000001FB0000000000FE00000000007E00000000003E00000000003F000000 +00003F80000000003F80000000006FC000000000E7E000000001C3E00000000183F00000 +000381F80000000700F80000000600FC0000000C007E0000001C003E00000018003F0000 +0030001F80000070000F80000060000FC00000C00007E00001E00003F0000FF00007F800 +FFFC003FFFC0FFFC003FFFC02A287EA72F>88 DI<3FFFFFFC3FFFFFFC3FC000F83F0001F83C0003F038 +0003E0380007E0700007C070000F8070001F8060001F0060003E0060007E0000007C0000 +00F8000001F8000001F0000003E0000007E0000007C000000F8000001F8000001F000000 +3E0000007E000C007C000C00F8000C01F8000C01F0000C03E0001C07E0001C07C0001C0F +8000181F8000381F0000783F0000F87E0001F87C000FF8FFFFFFF8FFFFFFF81E287CA727 +>I E /Fy 89 128 df0 +D<00000FF800FC0000007FFF07FF000001F807DF83C00007E001FF0FC0001F8007FE1FE0 +003F000FFC1FE0007E000FFC1FE0007E000FF81FE000FC000FF81FE000FC000FF0078001 +F80007F0000001F80003F0000001F80003F0000001F80003F0000001F80003F0000001F8 +0003F0000001F80003F0000001F80003F0000001F80003F0000001F80003F0000001F800 +03F0000001F80003F0000001F80003F00000FFFFFFFFFFF800FFFFFFFFFFF800FFFFFFFF +FFF80001F80003F0000001F80003F0000001F80003F0000001F80003F0000001F80003F0 +000001F80003F0000001F80003F0000001F80003F0000001F80003F0000001F80003F000 +0001F80003F0000001F80003F0000001F80003F0000001F80003F0000001F80003F00000 +01F80003F0000001F80003F0000001F80003F0000001F80003F0000001F80003F0000001 +F80003F0000001F80003F0000001F80003F0000001F80003F0000001F80003F0000001F8 +0003F0000001F80003F0000001F80003F0000001F80003F0000003FC0007F800007FFFE0 +FFFFF0007FFFE0FFFFF0007FFFE0FFFFF000333B7FBA30>11 D<00000FF8000000007FFE +00000001F80780000007E001C000001F8000E000003F0007E000007E000FF000007E000F +F00000FC000FF00000FC000FF00001F8000FF00001F80007E00001F80001800001F80000 +000001F80000000001F80000000001F80000000001F80000000001F80000000001F80000 +000001F80000000001F80000000001F80003F000FFFFFFFFF000FFFFFFFFF000FFFFFFFF +F00001F8000FF00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00003FC0007 +F8007FFFE0FFFFC07FFFE0FFFFC07FFFE0FFFFC02A3B7FBA2E>I<00000FFC000000007F +FF70000001F803F0000007E007F000001F800FF000003F000FF000007E000FF000007E00 +0FF00000FC000FF00000FC0007F00001F80003F00001F80003F00001F80003F00001F800 +03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 +03F00001F80003F00001F80003F00001F80003F000FFFFFFFFF000FFFFFFFFF000FFFFFF +FFF00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 +03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 +03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 +03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 +03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00003FC00 +07F8007FFFE0FFFFC07FFFE0FFFFC07FFFE0FFFFC02A3B7FBA2E>I<00000FF0001FF000 +0000007FFE00FFFC00000001F80F83F00F00000007E001CFC0038000001F8000FF0001C0 +00003F0007FE000FC000007E000FFC001FE000007E000FFC001FE00000FC000FF8001FE0 +0000FC000FF8001FE00001F8000FF0001FE00001F80007F0000FC00001F80003F0000300 +0001F80003F00000000001F80003F00000000001F80003F00000000001F80003F0000000 +0001F80003F00000000001F80003F00000000001F80003F00000000001F80003F0000000 +0001F80003F00000000001F80003F00007E000FFFFFFFFFFFFFFE000FFFFFFFFFFFFFFE0 +00FFFFFFFFFFFFFFE00001F80003F0001FE00001F80003F00007E00001F80003F00007E0 +0001F80003F00007E00001F80003F00007E00001F80003F00007E00001F80003F00007E0 +0001F80003F00007E00001F80003F00007E00001F80003F00007E00001F80003F00007E0 +0001F80003F00007E00001F80003F00007E00001F80003F00007E00001F80003F00007E0 +0001F80003F00007E00001F80003F00007E00001F80003F00007E00001F80003F00007E0 +0001F80003F00007E00001F80003F00007E00001F80003F00007E00001F80003F00007E0 +0001F80003F00007E00001F80003F00007E00001F80003F00007E00001F80003F00007E0 +0001F80003F00007E00001F80003F00007E00003FC0007F8000FF0007FFFE0FFFFC1FFFF +807FFFE0FFFFC1FFFF807FFFE0FFFFC1FFFF80413B7FBA45>I<001FE00007F00000FFFC +003FFC0003E03F00F81F0007000F81F00F800F8007E3E007C01FC003F7C007E01FE003FF +8003F01FE001FF0003F01FE001FF0001F81FE000FF0001F80FC000FE0001F8078000FE00 +01F8000000FE0000FC000000FC0000FC000000FC0000FC000000FC0000FC000000FC0000 +FC00003FFFFFFFFC0007FFFFFFFFFC003FF0FC00000001FE00FC00000007F800FC000000 +0FE000FC0000001FC000FC0000003F8000FC0000007F80007E0000007F00007E000000FF +00007E000000FE00007E00000CFE00007F00000CFE0000FF00001CFE0000FF800018FE00 +01FFC000387F0003E7C000707F8007C3E000E03FC00F81F001C00FE03E007C078003FFF8 +001FFE00007FC00003F80036277DA53C>26 D<1C007F00FF80FF80FF80FF80FF80FF80FF +80FF807F007F007F007F007F007F007F007F007F007F007F003E003E003E003E003E003E +003E003E003E003E003E001C001C001C001C001C001C001C001C001C001C001C00000000 +000000000000000000000000001C007F00FF80FF80FF80FF80FF807F001C00093C79BB17 +>33 D<1C001C007F007F00FF80FF80FF80FF80FFC0FFC0FFC0FFC0FFC0FFC07FC07FC01C +C01CC000C000C000C000C000C000C000C000C001C001C001800180018001800380038003 +00030007000700060006000E000E001C001C003800380070007000600060001A197DB92A +>I<0000000C000300000000001E000780000000001E000780000000003E000F80000000 +003E000F80000000003C000F00000000003C000F00000000007C001F00000000007C001F +000000000078001E000000000078001E000000000078001E0000000000F8003E00000000 +00F8003E0000000000F0003C0000000000F0003C0000000001F0007C0000000001F0007C +0000000001E000780000000001E000780000000003E000F80000000003E000F800000000 +03C000F00000000003C000F00000000003C000F00000000007C001F000007FFFFFFFFFFF +FF80FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC07FFFFFFFFFFFFF8000001F0007C000000000 +1E000780000000001E000780000000001E000780000000003E000F80000000003E000F80 +000000003C000F00000000003C000F00000000007C001F00000000007C001F0000000000 +78001E000000000078001E000000000078001E0000000000F8003E0000007FFFFFFFFFFF +FF80FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC07FFFFFFFFFFFFF800003E000F80000000003 +C000F00000000003C000F00000000003C000F00000000007C001F00000000007C001F000 +000000078001E000000000078001E0000000000F8003E0000000000F8003E0000000000F +0003C0000000000F0003C0000000001F0007C0000000001F0007C0000000001E00078000 +0000001E000780000000001E000780000000003E000F80000000003E000F80000000003C +000F00000000003C000F00000000007C001F00000000007C001F000000000078001E0000 +00000078001E000000000030000C000000003A4A7BB945>I<1C007F00FF80FF80FFC0FF +C0FFC07FC01CC000C000C000C000C001C00180018003800300070006000E001C00380070 +0060000A1979B917>39 D<0000600000E00001C0000380000700000E00001E00003C0000 +780000780000F00001E00001E00003C00003C00007C0000780000F80000F00000F00001F +00001E00001E00003E00003E00003E00007C00007C00007C00007C00007C00007C0000F8 +0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8 +0000F80000F80000F80000F80000F800007C00007C00007C00007C00007C00007C00003E +00003E00003E00001E00001E00001F00000F00000F00000F800007800007C00003C00003 +C00001E00001E00000F000007800007800003C00001E00000E000007000003800001C000 +00E0000060135278BD20>II<000380000007C0000007C0000007C0000007C0000007C0 +000007C0000007C0007803803CFC03807EFE0380FE7F8383FC3FC387F80FE38FE003FBBF +8000FFFE00003FF800000FE000000FE000003FF80000FFFE0003FBBF800FE38FE03FC387 +F87F8383FCFE0380FEFC03807E7803803C0007C0000007C0000007C0000007C0000007C0 +000007C0000007C000000380001F247BBD2A>I<00000030000000000000780000000000 +007800000000000078000000000000780000000000007800000000000078000000000000 +780000000000007800000000000078000000000000780000000000007800000000000078 +000000000000780000000000007800000000000078000000000000780000000000007800 +000000000078000000000000780000000000007800000000000078000000000000780000 +0000000078000000000000780000007FFFFFFFFFFFF8FFFFFFFFFFFFFCFFFFFFFFFFFFFC +7FFFFFFFFFFFF80000007800000000000078000000000000780000000000007800000000 +000078000000000000780000000000007800000000000078000000000000780000000000 +007800000000000078000000000000780000000000007800000000000078000000000000 +780000000000007800000000000078000000000000780000000000007800000000000078 +000000000000780000000000007800000000000078000000000000780000000000003000 +000036367BAF41>I<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C000C000C001 +C00180018003800300070006000E001C003800700060000A19798817>II<1C007F00FF80FF80FF80FF80FF807F001C000909 +798817>I<0000000C0000001E0000003E0000003E0000003C0000007C0000007C000000 +78000000F8000000F8000000F0000001F0000001F0000001E0000003E0000003E0000003 +C0000007C0000007C00000078000000F8000000F8000000F0000001F0000001F0000001E +0000003E0000003E0000003C0000007C0000007C00000078000000F8000000F8000000F0 +000001F0000001F0000001E0000003E0000003E0000007C0000007C00000078000000F80 +00000F8000000F0000001F0000001F0000001E0000003E0000003E0000003C0000007C00 +00007C00000078000000F8000000F8000000F0000001F0000001F0000001E0000003E000 +0003E0000003C0000007C0000007C00000078000000F8000000F8000000F0000001F0000 +001F0000001E0000003E0000003E0000003C0000007C0000007C00000078000000F80000 +00F8000000F0000000600000001F537BBD2A>I<0003F80000001FFF0000007E0FC00000 +F803E00001E000F00003C000780007C0007C000F80003E000F80003E001F00001F001F00 +001F003F00001F803F00001F803F00001F807E00000FC07E00000FC07E00000FC07E0000 +0FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F +E0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0 +FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E +00000FC07E00000FC07E00000FC07E00000FC07F00001FC03F00001F803F00001F803F00 +001F801F00001F001F80003F000F80003E000F80003E0007C0007C0003E000F80001F001 +F00000F803E000007E0FC000001FFF00000003F80000233A7DB72A>I<0001C0000003C0 +000007C000001FC00000FFC000FFFFC000FFFFC000FF1FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000003FE0007FFFFFF07FFFFFF07FFFFF +F01C3879B72A>I<000FF00000007FFE000001FFFF800003E03FE0000F000FF0000E0007 +F8001C0003FC00380001FE00300001FE00700000FF00600000FF00FC0000FF00FF00007F +80FF80007F80FF80007F80FF80007F80FF80007F80FF80007F807F00007F801C00007F80 +0000007F80000000FF00000000FF00000000FF00000001FE00000001FC00000003FC0000 +0003F800000007F000000007E00000000FE00000001FC00000003F800000003F00000000 +7C00000000F800000001F000000003E000000007C00000000F800000000F000000001E00 +0180003C000180007800018000F000038001E000030003C000030007800003000E000007 +000FFFFFFF001FFFFFFF003FFFFFFF007FFFFFFE00FFFFFFFE00FFFFFFFE00FFFFFFFE00 +21387CB72A>I<0007F80000003FFF0000007FFFC00001F80FF00003C007F800078003FC +000E0001FC000F0001FE001FE000FE001FF000FF001FF000FF001FF000FF001FF000FF00 +1FF000FF000FE000FF0007C000FF00000000FE00000001FE00000001FE00000001FC0000 +0003F800000003F800000007F000000007E00000000F800000007E0000001FFC0000001F +FF800000000FE000000007F000000001FC00000001FE00000000FF000000007F80000000 +7F800000007FC00000007FC00000003FC00000003FE00000003FE01E00003FE07F80003F +E0FFC0003FE0FFC0003FE0FFC0003FE0FFC0003FE0FFC0003FC0FF80007FC07F80007F80 +7E00007F80700000FF00380001FE001E0001FE000F8003F80007F00FF00001FFFFC00000 +7FFF0000000FF80000233A7DB72A>I<000000380000000038000000007800000000F800 +000000F800000001F800000003F800000007F800000007F80000000FF80000001FF80000 +001BF800000033F800000073F800000063F8000000C3F8000001C3F800000183F8000003 +03F800000703F800000603F800000C03F800001C03F800001803F800003003F800007003 +F800006003F80000C003F80001C003F800038003F800030003F800070003F8000E0003F8 +000C0003F800180003F800380003F800300003F800600003F800E00003F800FFFFFFFFF8 +FFFFFFFFF8FFFFFFFFF8000003F800000003F800000003F800000003F800000003F80000 +0003F800000003F800000003F800000003F800000003F800000003F800000007FC000003 +FFFFF80003FFFFF80003FFFFF825397EB82A>I<0600000C000780003C0007F003F80007 +FFFFF80007FFFFF00007FFFFE00007FFFF800007FFFF000007FFFC0000067FE000000600 +000000060000000006000000000600000000060000000006000000000600000000060000 +00000600000000060000000006000000000607F80000063FFE000006780F800007E007E0 +00078003F000070001F800060001F800060000FC00000000FE00000000FE00000000FF00 +0000007F000000007F000000007F800000007F800000007F800000007F803E00007F807F +00007F80FF80007F80FF80007F80FF80007F80FF80007F80FF00007F00FE0000FF00E000 +00FF00600000FE00700000FE00300001FC00380001F8001C0003F8001E0007F0000F800F +E00007E03F800001FFFF0000007FFC0000001FE00000213A7CB72A>I<00003FC0000001 +FFF0000007FFFC00000FE03E00003F800700007E001F0000FC003F8001F8007F8003F000 +7F8003F0007F8007E0007F800FE0003F000FC0001E001FC00000001FC00000003F800000 +003F800000003F800000007F800000007F000000007F01FC00007F07FF8000FF1E07E000 +FF3801F000FF7000F800FF6000FC00FFE0007E00FFC0003F00FFC0003F00FF80003F80FF +80003FC0FF80001FC0FF80001FC0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00 +001FE07F00001FE07F00001FE07F00001FE07F00001FE07F00001FE03F80001FE03F8000 +1FC03F80001FC01F80001FC01F80003F801FC0003F800FC0003F0007E0007F0007E000FE +0003F000FC0001F801F80000FE07F000003FFFC000001FFF00000003FC0000233A7DB72A +>I<300000000038000000003E000000003FFFFFFFE03FFFFFFFE03FFFFFFFE03FFFFFFF +C07FFFFFFFC07FFFFFFF807FFFFFFF0070000006006000000E006000001C006000001800 +E000003800C000007000C00000E000C00000C000000001C0000000038000000003000000 +0007000000000E000000000C000000001C00000000380000000038000000007000000000 +7000000000F000000001E000000001E000000003E000000003E000000003C000000007C0 +00000007C00000000FC00000000FC00000000FC00000001F800000001F800000001F8000 +00003F800000003F800000003F800000003F800000003F800000007F800000007F800000 +007F800000007F800000007F800000007F800000007F800000007F800000007F80000000 +3F000000001E000000233B7BB82A>I<0003F80000001FFF0000007FFFC00000FC07F000 +01E001F80003C000FC000780007C000700003E000F00001E000E00001F001E00000F001E +00000F001E00000F001F00000F001F00000F001F80000F001F80001F001FE0001E000FF0 +003E000FFC003C000FFE00780007FF80F00007FFC1E00003FFF3C00001FFFF000000FFFE +0000003FFF0000001FFFC000001FFFE000007FFFF80000F0FFFC0003E07FFE0007801FFF +000F000FFF801F0003FF803E0001FFC03C00007FC07C00003FC07800000FE0F8000007E0 +F0000007E0F0000003E0F0000003E0F0000001E0F0000001E0F0000001E0F8000001C078 +000001C078000003C07C000003803E000007001F00000F000F80001E0007E0007C0003F8 +03F00000FFFFE000003FFF80000007FC0000233A7DB72A>I<0003F80000001FFF000000 +7FFFC00000FC07E00003F803F00007F001F8000FE000FC000FC0007E001FC0007E003F80 +003F003F80003F007F80003F807F00003F807F00003F80FF00001FC0FF00001FC0FF0000 +1FC0FF00001FC0FF00001FC0FF00001FC0FF00001FE0FF00001FE0FF00001FE0FF00001F +E0FF00001FE07F00003FE07F00003FE07F80003FE03F80003FE01F80007FE01F80007FE0 +0FC000FFE007E000DFE003E001DFE001F0039FE000FC0F1FE0003FFC1FC00007F01FC000 +00001FC00000003FC00000003F800000003F800000003F800000003F000000007F000F00 +007E001F80007E003FC000FC003FC000FC003FC001F8003FC003F0003F8007E0001F000F +C0001C001F80000F807F000007FFFC000001FFF00000003FC00000233A7DB72A>I<1C00 +7F00FF80FF80FF80FF80FF807F001C000000000000000000000000000000000000000000 +000000000000000000000000000000001C007F00FF80FF80FF80FF80FF807F001C000924 +79A317>I<1C007F00FF80FF80FF80FF80FF807F001C0000000000000000000000000000 +00000000000000000000000000000000000000000000001C007F00FF00FF80FF80FF80FF +807F801D8001800180018001800380030003000700060006000E001C0018003800700060 +00093479A317>I<7FFFFFFFFFFFF8FFFFFFFFFFFFFCFFFFFFFFFFFFFC7FFFFFFFFFFFF8 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000007FFFFFFFFFFFF8FFFFFF +FFFFFFFCFFFFFFFFFFFFFC7FFFFFFFFFFFF836167B9F41>61 D<00000038000000000000 +38000000000000380000000000007C0000000000007C0000000000007C000000000000FE +000000000000FE000000000000FE000000000001FF000000000001FF000000000001FF00 +00000000037F8000000000037F8000000000077FC000000000063FC000000000063FC000 +0000000E3FE0000000000C1FE0000000000C1FE0000000001C1FF000000000180FF00000 +0000180FF000000000380FF8000000003007F8000000003007F8000000007007FC000000 +006003FC000000006003FC00000000C003FE00000000C001FE00000000C001FE00000001 +8001FF000000018000FF000000018000FF000000030000FF8000000300007F8000000300 +007F8000000600007FC0000007FFFFFFC0000007FFFFFFC000000FFFFFFFE000000C0000 +1FE000000C00001FE000001800000FF000001800000FF000001800000FF0000030000007 +F8000030000007F8000030000007F8000060000003FC000060000003FC0000E0000003FC +0000E0000001FE0001E0000001FE0003F0000001FF000FFC000007FF80FFFF8000FFFFFE +FFFF8000FFFFFEFFFF8000FFFFFE373C7DBB3E>65 DI<000001FF +80018000000FFFE0038000007FFFF803800001FF807E07800003FC000F0F80000FF00003 +9F80001FE00001DF80003F800000FF80007F0000007F8000FE0000003F8001FE0000003F +8003FC0000001F8007F80000000F8007F80000000F800FF000000007800FF00000000780 +1FE000000007801FE000000003803FE000000003803FC000000003807FC000000001807F +C000000001807FC000000001807F800000000180FF800000000000FF800000000000FF80 +0000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000 +00000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000 +0000007F8000000000007FC000000001807FC000000001807FC000000001803FC0000000 +01803FE000000001801FE000000003801FE000000003000FF000000003000FF000000007 +0007F8000000070007F8000000060003FC0000000E0001FE0000001C0000FE0000001800 +007F0000003800003F8000007000001FE00000E000000FF00003C0000003FC000F800000 +01FF803F000000007FFFFC000000000FFFF00000000001FF800000313D7BBA3C>IIII<000000FF8000C000000FFFF001C000003FFFFC01C00000FF803F03C000 +03FC000787C0000FF00003CFC0001FE00000EFC0003FC000007FC0007F8000003FC000FF +0000001FC001FE0000001FC003FC0000000FC007F800000007C007F800000007C00FF000 +000003C00FF000000003C01FE000000003C01FE000000001C03FE000000001C03FC00000 +0001C07FC000000000C07FC000000000C07FC000000000C07FC000000000C0FF80000000 +0000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000 +00FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000 +FF800000FFFFFFFF800000FFFFFF7FC00000FFFFFF7FC00000007FE07FC00000003FC07F +C00000003FC03FC00000003FC03FE00000003FC01FE00000003FC01FE00000003FC00FF0 +0000003FC00FF00000003FC007F80000003FC007F80000003FC003FC0000003FC001FE00 +00003FC000FF0000007FC0007F8000007FC0003FC00000FFC0001FE00000EFC0000FF800 +03C7C00003FE000783C00000FFC03F01C000003FFFFC00C000000FFFF00000000000FF80 +0000383D7CBA41>III<003FFFFFE0003FFFFFE0003FFFFFE000001FFC00000007F800000007F800000007F8 +00000007F800000007F800000007F800000007F800000007F800000007F800000007F800 +000007F800000007F800000007F800000007F800000007F800000007F800000007F80000 +0007F800000007F800000007F800000007F800000007F800000007F800000007F8000000 +07F800000007F800000007F800000007F800000007F800000007F800000007F800000007 +F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8 +003F0007F8007F8007F800FFC007F800FFC007F800FFC007F800FFC007F800FFC00FF000 +FF800FF0007F000FE00070001FE00038001FC0001C003F80000E007F00000781FC000001 +FFF00000007F800000233B7DB82B>III< +FFFF0000000007FFF8FFFF800000000FFFF8FFFF800000000FFFF801FF800000000FFC00 +00DFC00000001BF80000DFC00000001BF80000CFE000000033F80000CFE000000033F800 +00CFE000000033F80000C7F000000063F80000C7F000000063F80000C7F000000063F800 +00C3F8000000C3F80000C3F8000000C3F80000C1FC00000183F80000C1FC00000183F800 +00C1FC00000183F80000C0FE00000303F80000C0FE00000303F80000C07F00000603F800 +00C07F00000603F80000C07F00000603F80000C03F80000C03F80000C03F80000C03F800 +00C03F80000C03F80000C01FC0001803F80000C01FC0001803F80000C00FE0003003F800 +00C00FE0003003F80000C00FE0003003F80000C007F0006003F80000C007F0006003F800 +00C003F800C003F80000C003F800C003F80000C003F800C003F80000C001FC018003F800 +00C001FC018003F80000C001FC018003F80000C000FE030003F80000C000FE030003F800 +00C0007F060003F80000C0007F060003F80000C0007F060003F80000C0003F8C0003F800 +00C0003F8C0003F80000C0001FD80003F80000C0001FD80003F80000C0001FD80003F800 +00C0000FF00003F80000C0000FF00003F80000C0000FF00003F80001E00007E00003F800 +03F00007E00003F8000FFC0003C00007FC00FFFFC003C003FFFFF8FFFFC003C003FFFFF8 +FFFFC0018003FFFFF845397DB84C>II<000003FF00000000001F +FFE000000000FE01FC00000001F8007E00000007E0001F8000000FC0000FC000003F8000 +07F000007F000003F80000FE000001FC0001FC000000FE0001F80000007E0003F8000000 +7F0007F00000003F8007F00000003F800FE00000001FC00FE00000001FC01FE00000001F +E01FC00000000FE03FC00000000FF03FC00000000FF03FC00000000FF07FC00000000FF8 +7F8000000007F87F8000000007F87F8000000007F8FF8000000007FCFF8000000007FCFF +8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF80 +00000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FC7F8000 +000007F87FC00000000FF87FC00000000FF87FC00000000FF83FC00000000FF03FC00000 +000FF01FE00000001FE01FE00000001FE01FE00000001FE00FF00000003FC007F0000000 +3F8007F80000007F8003F80000007F0001FC000000FE0001FC000000FE0000FE000001FC +00007F000003F800003F800007F000001FC0000FE0000007E0001F80000003F8007F0000 +0000FE01FC000000001FFFE00000000003FF000000363D7BBA41>II<000003FF00000000001FFFE000000000FE01FC +00000001F8007E00000007E0001F8000000FC0000FC000003F800007F000007F000003F8 +0000FE000001FC0001FC000000FE0001FC000000FE0003F80000007F0007F80000007F80 +07F00000003F800FF00000003FC00FE00000001FC01FE00000001FE01FE00000001FE03F +C00000000FF03FC00000000FF03FC00000000FF07FC00000000FF87FC00000000FF87F80 +00000007F87F8000000007F8FF8000000007FCFF8000000007FCFF8000000007FCFF8000 +000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF800000 +0007FCFF8000000007FCFF8000000007FCFF8000000007FC7F8000000007F87F80000000 +07F87FC00000000FF87FC00000000FF83FC00000000FF03FC00000000FF01FE00000001F +E01FE00000001FE01FE00000001FE00FF00000003FC007F0007C003F8007F001FF003F80 +03F80383807F0001FC0701C0FE0001FC0E00C0FE0000FE0C00E1FC00007F0C0063F80000 +3F8C0077F000001FCC003FE0000007EE003F80000003FF007F00000000FF81FC000C0000 +1FFFFC000C000003FF1C000C000000001E001C000000001F001C000000001F003C000000 +001F807C000000001FC0F8000000000FFFF8000000000FFFF8000000000FFFF800000000 +0FFFF00000000007FFF00000000007FFE00000000003FFC00000000001FF800000000000 +7E00364B7BBA41>II<000FF800C0003FFE01C000FFFF81C003 +F807E3C007E000F7C00FC0007FC01F80003FC03F00001FC03E00000FC07E000007C07E00 +0007C07C000003C0FC000003C0FC000001C0FC000001C0FC000001C0FE000000C0FE0000 +00C0FE000000C0FF000000C0FF800000007FC00000007FE00000007FF80000003FFF8000 +001FFFF800001FFFFF80000FFFFFE00007FFFFF80003FFFFFE0000FFFFFF00003FFFFF80 +0007FFFFC000007FFFC0000007FFE00000007FE00000003FF00000001FF00000000FF000 +000007F800000007F8C0000003F8C0000003F8C0000001F8C0000001F8C0000001F8E000 +0001F8E0000001F8E0000001F0F0000001F0F0000003F0F8000003E0FC000007E0FE0000 +07C0FF00000FC0FF80001F80FBF0003F00F0FE00FE00E03FFFF800E00FFFE000C001FF00 +00253D7CBA2E>I<3FFFFFFFFFFFE03FFFFFFFFFFFE03FFFFFFFFFFFE03FC003FF001FE0 +3E0001FE0003E07C0001FE0001F0780001FE0000F0700001FE000070700001FE00007070 +0001FE000070600001FE000030600001FE000030600001FE000030600001FE000030E000 +01FE000038C00001FE000018C00001FE000018C00001FE000018C00001FE000018000001 +FE000000000001FE000000000001FE000000000001FE000000000001FE000000000001FE +000000000001FE000000000001FE000000000001FE000000000001FE000000000001FE00 +0000000001FE000000000001FE000000000001FE000000000001FE000000000001FE0000 +00000001FE000000000001FE000000000001FE000000000001FE000000000001FE000000 +000001FE000000000001FE000000000001FE000000000001FE000000000001FE00000000 +0001FE000000000001FE000000000001FE000000000001FE000000000001FE0000000000 +01FE000000000001FE000000000001FE000000000007FF800000001FFFFFFFE000001FFF +FFFFE000001FFFFFFFE00035397DB83C>IIII<7FFFFF003FFFFC007FFFFF003FFFFC007FFFFF003FFFFC0000FFF80007FF8000007F +E00003FC0000003FE00001F00000001FF00001E00000001FF00001C00000000FF8000180 +00000007FC00038000000007FC00070000000003FE00060000000003FE000E0000000001 +FF001C0000000000FF80180000000000FF803800000000007FC03000000000003FE06000 +000000003FE0E000000000001FF0C000000000000FF18000000000000FFB800000000000 +07FF00000000000007FE00000000000003FE00000000000001FF00000000000001FF0000 +0000000000FF800000000000007FC00000000000007FC0000000000000FFE00000000000 +00DFE00000000000019FF00000000000038FF80000000000030FF800000000000607FC00 +000000000E03FE00000000000C03FE00000000001801FF00000000003800FF0000000000 +3000FF800000000060007FC000000000E0007FC000000000C0003FE00000000180001FF0 +0000000380001FF00000000300000FF800000006000007FC0000000E000007FC0000000C +000003FE0000001C000001FE0000003C000001FF000000FE000001FF800007FF800007FF +E000FFFFE0003FFFFF80FFFFE0003FFFFF80FFFFE0003FFFFF8039397EB83E>II91 D<0180018003800380070007000E00 +0E001C001C00180018003800380030003000700070006000600060006000E000E000C000 +C000C000C000C000C000C000C000CE00CE00FF80FF80FFC0FFC0FFC0FFC0FFC0FFC07FC0 +7FC07FC07FC03F803F800E000E001A1974B92A>II<0180038007000E001C00180038003000700060006000 +E000C000C000C000C000CE00FF80FFC0FFC0FFC07FC07FC03F800E000A197AB917>96 +D<001FE0000000FFFC000003E03F000007000F80000F8007E0001FC003F0001FE003F000 +1FE001F8001FE001F8001FE000FC000FC000FC00078000FC00000000FC00000000FC0000 +0000FC00000000FC0000007FFC000007FFFC00003FE0FC0000FE00FC0003F800FC000FF0 +00FC001FC000FC003FC000FC007F8000FC007F0000FC007F0000FC0CFE0000FC0CFE0000 +FC0CFE0000FC0CFE0001FC0CFE0001FC0CFF0003FC0C7F00077C0C7F80063E183FC01E3E +180FE0781FF003FFF00FE0007F8007C026277DA52A>I<03F0000000FFF0000000FFF000 +0000FFF00000000FF000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F01FE00003F07FF80003F1E03E0003 +F3801F8003F7000FC003FE0007E003FC0003F003F80001F803F00001F803F00000FC03F0 +0000FC03F00000FE03F00000FE03F000007E03F000007F03F000007F03F000007F03F000 +007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F00000 +7E03F00000FE03F00000FE03F00000FC03F00001FC03F80001F803F80003F003FC0003F0 +03EE0007E003C6000FC003C7801F000381E07E000300FFF80000001FC000283B7EB92E> +I<0003FC00001FFF80007E03E001F8007003F000F807E001FC0FC003FC0FC003FC1F8003 +FC3F8003FC3F0001F87F0000F07F0000007F0000007E000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000007F0000 +007F0000003F0000063F8000061F80000E1FC0000C0FC0001C07E0003803F0007001F800 +E0007C07C0001FFF000007F8001F277DA525>I<0000000FC0000003FFC0000003FFC000 +0003FFC00000003FC00000000FC00000000FC00000000FC00000000FC00000000FC00000 +000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000000 +0FC00000000FC00000000FC00000000FC00003F80FC0001FFF0FC0007E078FC000F801EF +C003F0007FC007E0003FC00FC0001FC00FC0001FC01F80000FC03F80000FC03F00000FC0 +7F00000FC07F00000FC07E00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE +00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07E00000FC07F00 +000FC07F00000FC03F00000FC03F00000FC01F80001FC01F80001FC00FC0003FC007E000 +7FC003F000EFF001F801CFFF007C078FFF001FFE0FFF0007F80FC0283B7DB92E>I<0007 +F800001FFF00007C0FC001F803E003F001F007E001F80FC000F81F80007C1F80007C3F00 +007E3F00003E7F00003E7F00003F7E00003FFE00003FFE00003FFE00003FFFFFFFFFFFFF +FFFFFE000000FE000000FE000000FE000000FE0000007E0000007E0000007F0000007F00 +00003F0000033F8000031F8000070FC0000607C0000E07E0001C01F0003800F80070007E +03E0001FFF800003FC0020277EA525>I<00007E000003FF80000FC1E0001F87E0003F0F +F0007E0FF0007E0FF000FC0FF000FC0FF001F803C001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 +00FFFFFC00FFFFFC00FFFFFC0001F8000001F8000001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000003FC00007FFFF8007FFFF8007FFFF8 +001C3B7FBA19>I<00000003F0000FF00FF8003FFC3C3C00F81F707C01F00FE07C03E007 +C07C07C003E0100FC003F0000FC003F0001F8001F8001F8001F8001F8001F8001F8001F8 +001F8001F8001F8001F8001F8001F8001F8001F8000FC003F0000FC003F00007C003E000 +03E007C00003F00F800003F81F0000073FFC0000060FF000000E000000000E000000000E +000000000E000000000F000000000F000000000FC000000007FFFFC00007FFFFF80003FF +FFFE0001FFFFFF8003FFFFFFC00F80007FE01F00000FF03E000003F07C000001F07C0000 +01F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8FC000001F87C000001 +F03E000003E03F000007E00F80000F8007E0003F0001FC01FC00007FFFF0000007FF0000 +26387EA52A>I<03F000000000FFF000000000FFF000000000FFF0000000000FF0000000 +0003F00000000003F00000000003F00000000003F00000000003F00000000003F0000000 +0003F00000000003F00000000003F00000000003F00000000003F00000000003F0000000 +0003F00000000003F00000000003F00000000003F00000000003F00FF0000003F03FFC00 +0003F0F03F000003F1C01F800003F3800FC00003F7000FC00003FE000FC00003FC0007E0 +0003FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003F00007E0 +0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 +0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 +0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 +0003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF80293A7EB92E +>I<0380000FE0001FF0001FF0001FF0001FF0001FF0000FE00003800000000000000000 +000000000000000000000000000000000000000000000003F000FFF000FFF000FFF00007 +F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 +F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 +F00003F00003F00003F00003F00007F800FFFFC0FFFFC0FFFFC012387EB717>I<0001C0 +0007F0000FF8000FF8000FF8000FF8000FF80007F00001C0000000000000000000000000 +0000000000000000000000000000000000000001F800FFF800FFF800FFF80007F80001F8 +0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 +0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 +0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 +0001F83C01F87E01F8FF01F0FF03F0FF03F0FF03E0FE07C07C07C03C0F000FFE0003F800 +154984B719>I<03F0000000FFF0000000FFF0000000FFF00000000FF000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F001FFFC03F001FFFC03F001FFFC03F0007FC003F0007F0003F0 +007C0003F000700003F000E00003F001C00003F003800003F007000003F01E000003F038 +000003F078000003F0FC000003F1FC000003F3FE000003F73F000003FE3F800003F81F80 +0003F00FC00003F00FE00003F007E00003F003F00003F001F80003F001FC0003F000FC00 +03F0007E0003F0007F0003F0003F0003F0003F8003F0001FC007F8003FF0FFFFC0FFFFFF +FFC0FFFFFFFFC0FFFF283A7EB92C>I<03F000FFF000FFF000FFF0000FF00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00007F8 +00FFFFC0FFFFC0FFFFC0123A7EB917>I<03F00FF0001FE000FFF03FFC007FF800FFF0F0 +3F01E07E00FFF1C01F83803F000FF3800FC7001F8003F7000FCE001F8003FE000FDC001F +8003FC0007F8000FC003FC0007F8000FC003F80007F0000FC003F80007F0000FC003F800 +07F0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000F +C003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F000 +07E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000F +C003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F000 +07E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC007F8000FF0001F +E0FFFFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40257EA445>I<03F00FF0 +0000FFF03FFC0000FFF0F03F0000FFF1C01F80000FF3800FC00003F7000FC00003FE000F +C00003FC0007E00003FC0007E00003F80007E00003F80007E00003F80007E00003F00007 +E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007 +E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007 +E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007 +E00003F00007E00003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FF +FF8029257EA42E>I<0003FE0000000FFF8000003E03E00000F800F80001F0007C0003E0 +003E0007C0001F000F80000F801F80000FC01F000007C03F000007E03F000007E07E0000 +03F07E000003F07E000003F07E000003F0FE000003F8FE000003F8FE000003F8FE000003 +F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F87E000003F07E000003F0 +7F000007F03F000007E03F000007E01F80000FC00F80000F800FC0001F8007E0003F0003 +F0007E0000F800F800007E03F000001FFFC0000003FE000025277EA52A>I<03F01FE000 +FFF07FF800FFF1E07E00FFF3801F8007F7000FC003FE0007E003FC0003F003F80003F803 +F00001F803F00001FC03F00000FC03F00000FE03F00000FE03F00000FE03F000007F03F0 +00007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000 +007F03F000007F03F00000FE03F00000FE03F00000FE03F00001FC03F00001FC03F80003 +F803F80003F003FC0007F003FE000FE003F6000FC003F7803F0003F1E07E0003F0FFF800 +03F01FC00003F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000007F8000000FFFFC00000FFFF +C00000FFFFC0000028357EA42E>I<0003F800C0001FFE01C0007E0781C000FC01C3C003 +F000E3C007F00077C00FE00037C00FC0003FC01FC0001FC03F80001FC03F80000FC07F00 +000FC07F00000FC07F00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE0000 +0FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07F00000FC07F00000F +C07F00000FC03F00000FC03F80001FC01F80001FC01FC0003FC00FC0003FC007E0007FC0 +03F000EFC001F801CFC0007E078FC0001FFE0FC00007F80FC00000000FC00000000FC000 +00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000 +000FC00000000FC00000001FE0000003FFFF000003FFFF000003FFFF28357DA42C>I<07 +E01F00FFE07FC0FFE1E3E0FFE387F00FE707F003E607F003EE07F003EC03E003FC008003 +F8000003F8000003F8000003F8000003F0000003F0000003F0000003F0000003F0000003 +F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 +F0000003F0000003F0000003F0000003F0000003F0000007F80000FFFFF000FFFFF000FF +FFF0001C257EA421>I<00FF030003FFE7000F80FF001E003F003C001F0078000F007000 +0700F0000700F0000700F0000300F8000300F8000300FC000300FF0000007FE000007FFF +00003FFFE0001FFFF8000FFFFC0003FFFE0000FFFF000007FF8000007F8000001F80C000 +0FC0C00007C0C00007C0E00003C0E00003C0E00003C0F00003C0F0000380F8000780FC00 +0780FC000F00FF001E00F3C07C00E1FFF000C03F80001A277DA521>I<00180000001800 +000018000000180000001800000038000000380000003800000078000000780000007800 +0000F8000001F8000003F8000007F800001FFFFF00FFFFFF00FFFFFF0001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800C001F800 +C001F800C001F800C001F800C001F800C001F800C001F800C001F800C000FC01C000FC01 +80007C0380007E0300003F0700000FFE000001F8001A347FB220>I<03F00007E000FFF0 +01FFE000FFF001FFE000FFF001FFE0000FF0001FE00003F00007E00003F00007E00003F0 +0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0 +0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0 +0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0 +0007E00003F00007E00003F0000FE00003F0000FE00003F0000FE00003F0001FE00001F0 +001FE00001F8003FE00000F80077F80000FC00E7FF80003F03C7FF80001FFF87FF800003 +FC07E00029267EA42E>II +III<3FFFFFFC3FFFFFFC +3F8003FC3E0003F83C0007F038000FE030000FE070001FC070003F8060007F8060007F00 +6000FE006001FC006001FC000003F8000007F0000007F000000FE000001FC000003F8000 +003F8000007F000600FE000600FE000601FC000603F8000607F8000E07F0000E0FE0000C +1FC0001C1FC0001C3F80003C7F00007CFF0003FCFFFFFFFCFFFFFFFC1F247EA325>III<1C001C007F007F00FF80FF80FF80FF80FF80FF80FF80FF80FF +80FF807F007F001C001C00190978B72A>127 D E /Fz 22 119 df<0070000000000000 +700000FE000000000001F80000FF80000000000FF80000FFF8000000007FF80000FFFF80 +000007FFF80000FFFFFE0001FFFFF80000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFE000 +00FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFF800000FFFFFFFFFF +FFFF000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFC000000FFFFFFFFFFFFF8000000FF +FFFFFFFFFFE0000000FFFFFFFFFFFFC0000000FFFFFFFFFFFF80000000FFFFFFFFFFFE00 +000000FFFFFFFFFFF800000000FFFFFFFFFFF000000000FFFFFFFFFFC000000000FFFFFF +FFFF0000000000FFFFFFFFF80000000000FFFFFFFFC00000000000FF07FFF80000000000 +00FF000000000000000000FF000000000000000000FF000000000000000000FF00000000 +0000000000FF000000000000000000FF000000000000000000FF000000000000000000FF +000000000000000000FF000000000000000000FF000000000000000000FF000000000000 +000000FF000000000000000000FF000000000000000000FF000000000000000000FF0000 +00000000000000FF000000000000000000FF0001FFFC0000000000FF001FFFFFE0000000 +00FF00FFFFFFFC00000000FF03FFFFFFFF00000000FF0FFFFFFFFFC0000000FF1FFFFFFF +FFF0000000FF7FFF003FFFF8000000FFFFF0000FFFFE000000FFFF800003FFFF000000FF +FE000001FFFF800000FFF8000000FFFFC00000FFF00000007FFFE00000FFE00000003FFF +F00000FFC00000003FFFF80000FF800000001FFFFC0000FF000000001FFFFE00007E0000 +00001FFFFE00007C000000000FFFFF000000000000000FFFFF000000000000000FFFFF80 +0000000000000FFFFF800000000000000FFFFFC00000000000000FFFFFC0000000000000 +07FFFFC000000000000007FFFFE000000000000007FFFFE000000000000007FFFFE00000 +0000000007FFFFE000000000000007FFFFE000000000000007FFFFF000000000000007FF +FFF000000000000007FFFFF000FE0000000007FFFFF003FF8000000007FFFFF00FFFC000 +000007FFFFF01FFFF000000007FFFFF03FFFF800000007FFFFF07FFFF800000007FFFFF0 +7FFFFC00000007FFFFF0FFFFFC00000007FFFFF0FFFFFC00000007FFFFF0FFFFFC000000 +07FFFFF0FFFFFC00000007FFFFF0FFFFFC00000007FFFFE0FFFFFC00000007FFFFE0FFFF +FC00000007FFFFE0FFFFFC00000007FFFFE0FFFFFC0000000FFFFFC0FFFFF80000000FFF +FFC07FFFF80000000FFFFFC07FFFF00000000FFFFF807FFFE00000000FFFFF807FFFC000 +00001FFFFF803FFF000000001FFFFF003FE0000000001FFFFE001FF0000000003FFFFE00 +1FF8000000003FFFFC000FFC000000007FFFF8000FFE000000007FFFF80007FE00000000 +FFFFF00003FF80000001FFFFE00001FFC0000003FFFFC00001FFE0000007FFFF8000007F +F800001FFFFE0000003FFF00007FFFFC0000001FFFF007FFFFF80000000FFFFFFFFFFFE0 +00000003FFFFFFFFFF8000000001FFFFFFFFFE00000000007FFFFFFFF800000000001FFF +FFFFC0000000000003FFFFFE000000000000003FFF80000000004C7376F061>53 +D<0000000000000003F800000000000000000000000000000007FC000000000000000000 +0000000000000FFE0000000000000000000000000000000FFE0000000000000000000000 +000000001FFF0000000000000000000000000000001FFF00000000000000000000000000 +00001FFF0000000000000000000000000000003FFF800000000000000000000000000000 +3FFF8000000000000000000000000000007FFFC000000000000000000000000000007FFF +C000000000000000000000000000007FFFC00000000000000000000000000000FFFFE000 +00000000000000000000000000FFFFE00000000000000000000000000001FFFFF0000000 +0000000000000000000001FFFFF00000000000000000000000000001FFFFF00000000000 +000000000000000003FFFFF80000000000000000000000000003FFFFF800000000000000 +00000000000007FFFFFC0000000000000000000000000007FFFFFC000000000000000000 +0000000007FFFFFC000000000000000000000000000FFFFFFE0000000000000000000000 +00000FFFFFFE000000000000000000000000001FFFFFFF00000000000000000000000000 +1FFFFFFF000000000000000000000000001FFFFFFF000000000000000000000000003FFF +FFFF800000000000000000000000003FFFFFFF800000000000000000000000007FFFFFFF +C00000000000000000000000007FFFFFFFC00000000000000000000000007FBFFFFFC000 +0000000000000000000000FF9FFFFFE0000000000000000000000000FF1FFFFFE0000000 +000000000000000001FF0FFFFFF0000000000000000000000001FF0FFFFFF00000000000 +00000000000001FE0FFFFFF0000000000000000000000003FE07FFFFF800000000000000 +0000000003FC07FFFFF8000000000000000000000007FC03FFFFFC000000000000000000 +000007FC03FFFFFC000000000000000000000007F803FFFFFC0000000000000000000000 +0FF801FFFFFE00000000000000000000000FF001FFFFFE00000000000000000000001FF0 +00FFFFFF00000000000000000000001FF000FFFFFF00000000000000000000001FE000FF +FFFF00000000000000000000003FE0007FFFFF80000000000000000000003FC0007FFFFF +80000000000000000000007FC0003FFFFFC0000000000000000000007FC0003FFFFFC000 +0000000000000000007F80003FFFFFC000000000000000000000FF80001FFFFFE0000000 +00000000000000FF00001FFFFFE000000000000000000001FF00000FFFFFF00000000000 +0000000001FF00000FFFFFF000000000000000000001FE00000FFFFFF000000000000000 +000003FE000007FFFFF800000000000000000003FC000007FFFFF8000000000000000000 +07FC000003FFFFFC00000000000000000007FC000003FFFFFC00000000000000000007F8 +000003FFFFFC0000000000000000000FF8000001FFFFFE0000000000000000000FF00000 +01FFFFFE0000000000000000001FF0000000FFFFFF0000000000000000001FF0000000FF +FFFF0000000000000000001FE0000000FFFFFF0000000000000000003FE00000007FFFFF +8000000000000000003FC00000007FFFFF8000000000000000007FC00000003FFFFFC000 +000000000000007FC00000003FFFFFC000000000000000007F800000003FFFFFC0000000 +0000000000FF800000001FFFFFE00000000000000000FF000000001FFFFFE00000000000 +000001FF000000000FFFFFF00000000000000001FF000000000FFFFFF000000000000000 +01FE000000000FFFFFF00000000000000003FE0000000007FFFFF80000000000000003FC +0000000007FFFFF80000000000000007FFFFFFFFFFFFFFFFFC0000000000000007FFFFFF +FFFFFFFFFFFC0000000000000007FFFFFFFFFFFFFFFFFC000000000000000FFFFFFFFFFF +FFFFFFFE000000000000000FFFFFFFFFFFFFFFFFFE000000000000001FFFFFFFFFFFFFFF +FFFF000000000000001FFFFFFFFFFFFFFFFFFF000000000000001FFFFFFFFFFFFFFFFFFF +000000000000003FE000000000007FFFFF800000000000003FC000000000007FFFFF8000 +00000000007FC000000000003FFFFFC00000000000007FC000000000003FFFFFC0000000 +0000007F8000000000003FFFFFC0000000000000FF8000000000001FFFFFE00000000000 +00FF8000000000001FFFFFE0000000000001FF0000000000000FFFFFF0000000000001FF +0000000000000FFFFFF0000000000001FE0000000000000FFFFFF0000000000003FE0000 +0000000007FFFFF8000000000003FE00000000000007FFFFF8000000000007FC00000000 +000003FFFFFC000000000007FC00000000000003FFFFFC000000000007F8000000000000 +03FFFFFC00000000000FF800000000000001FFFFFE00000000000FF800000000000001FF +FFFE00000000000FF000000000000000FFFFFE00000000001FF000000000000000FFFFFF +00000000001FE000000000000000FFFFFF00000000003FE0000000000000007FFFFF8000 +0000003FE0000000000000007FFFFF80000000003FC0000000000000003FFFFF80000000 +007FC0000000000000003FFFFFC0000000007F80000000000000003FFFFFC000000007FF +FC000000000000001FFFFFE00000FFFFFFFFFF800000001FFFFFFFFFFFFFE0FFFFFFFFFF +800000001FFFFFFFFFFFFFE0FFFFFFFFFF800000001FFFFFFFFFFFFFE0FFFFFFFFFF8000 +00001FFFFFFFFFFFFFE0FFFFFFFFFF800000001FFFFFFFFFFFFFE0FFFFFFFFFF80000000 +1FFFFFFFFFFFFFE0FFFFFFFFFF800000001FFFFFFFFFFFFFE0FFFFFFFFFF800000001FFF +FFFFFFFFFFE0837979F892>65 D76 D82 D<00000003FFF80000000E000000007FFFFFC000003F00000003FFFFFFFC00007F +0000001FFFFFFFFF0000FF0000007FFFFFFFFFC001FF000001FFFFFFFFFFF003FF000003 +FFFFFFFFFFFC07FF00000FFFFF000FFFFE07FF00001FFFF000007FFF8FFF00003FFFC000 +000FFFDFFF00007FFF00000003FFFFFF0000FFFE00000000FFFFFF0001FFF8000000003F +FFFF0003FFF8000000001FFFFF0003FFF0000000000FFFFF0007FFE00000000007FFFF00 +0FFFE00000000003FFFF000FFFC00000000001FFFF001FFFC00000000000FFFF001FFF80 +00000000007FFF003FFF8000000000003FFF003FFF8000000000003FFF003FFF00000000 +00001FFF007FFF0000000000001FFF007FFF0000000000000FFF007FFF0000000000000F +FF007FFF00000000000007FF00FFFF00000000000007FF00FFFF00000000000003FF00FF +FF80000000000003FF00FFFF80000000000003FF00FFFF80000000000001FF00FFFFC000 +0000000001FF00FFFFC0000000000001FF00FFFFE0000000000001FF00FFFFE000000000 +0001FF00FFFFF0000000000000FF00FFFFF8000000000000FF00FFFFFC000000000000FF +00FFFFFE0000000000007E00FFFFFF00000000000000007FFFFF80000000000000007FFF +FFE0000000000000007FFFFFFC000000000000007FFFFFFFC00000000000003FFFFFFFFC +0000000000003FFFFFFFFFE000000000001FFFFFFFFFFF00000000001FFFFFFFFFFFF000 +0000000FFFFFFFFFFFFF800000000FFFFFFFFFFFFFF000000007FFFFFFFFFFFFFE000000 +07FFFFFFFFFFFFFF80000003FFFFFFFFFFFFFFC0000001FFFFFFFFFFFFFFF0000000FFFF +FFFFFFFFFFFC0000007FFFFFFFFFFFFFFE0000003FFFFFFFFFFFFFFF0000001FFFFFFFFF +FFFFFF8000000FFFFFFFFFFFFFFFC0000007FFFFFFFFFFFFFFE0000001FFFFFFFFFFFFFF +F0000000FFFFFFFFFFFFFFF80000003FFFFFFFFFFFFFFC0000001FFFFFFFFFFFFFFE0000 +0007FFFFFFFFFFFFFE00000000FFFFFFFFFFFFFF000000001FFFFFFFFFFFFF8000000000 +FFFFFFFFFFFF80000000000FFFFFFFFFFFC000000000007FFFFFFFFFC0000000000007FF +FFFFFFE00000000000003FFFFFFFE000000000000003FFFFFFE0000000000000007FFFFF +F0000000000000001FFFFFF0000000000000000FFFFFF00000000000000007FFFFF00000 +000000000001FFFFF80000000000000001FFFFF80000000000000000FFFFF80000000000 +0000007FFFF87E000000000000003FFFF8FF000000000000003FFFF8FF00000000000000 +1FFFF8FF000000000000001FFFF8FF000000000000000FFFF8FF000000000000000FFFF8 +FF000000000000000FFFF8FF800000000000000FFFF8FF8000000000000007FFF8FF8000 +000000000007FFF8FF8000000000000007FFF8FFC000000000000007FFF0FFC000000000 +000007FFF0FFC000000000000007FFF0FFE000000000000007FFF0FFE000000000000007 +FFE0FFF00000000000000FFFE0FFF00000000000000FFFE0FFF80000000000000FFFC0FF +FC0000000000001FFFC0FFFE0000000000001FFFC0FFFF0000000000001FFF80FFFF8000 +000000003FFF80FFFFC000000000007FFF00FFFFE000000000007FFE00FFFFF000000000 +00FFFE00FFFFFC0000000001FFFC00FFFFFF0000000003FFF800FFFFFFE000000007FFF0 +00FFFFFFFC0000001FFFE000FFFBFFFF8000007FFFC000FFF1FFFFFE0007FFFF8000FFE0 +7FFFFFFFFFFFFF0000FFE03FFFFFFFFFFFFC0000FFC00FFFFFFFFFFFF80000FF8003FFFF +FFFFFFE00000FF00007FFFFFFFFF800000FE00000FFFFFFFFE000000FC000000FFFFFFF0 +0000007000000003FFFE00000000557A75F76C>I<0000003FFFF80000000000000007FF +FFFFE00000000000007FFFFFFFFC000000000001FFFFFFFFFF800000000007FFFFFFFFFF +E0000000001FFFFFFFFFFFF0000000003FFFF0007FFFFC000000007FFE00000FFFFE0000 +0000FFFF000003FFFF80000001FFFF800001FFFFC0000001FFFFC00000FFFFE0000001FF +FFC000007FFFF0000003FFFFE000003FFFF8000003FFFFE000001FFFF8000003FFFFE000 +001FFFFC000003FFFFE000000FFFFE000003FFFFE000000FFFFE000003FFFFE000000FFF +FF000003FFFFE0000007FFFF000003FFFFE0000007FFFF000001FFFFC0000007FFFF0000 +01FFFFC0000003FFFF800000FFFF80000003FFFF8000007FFF00000003FFFF8000003FFE +00000003FFFF8000000FF800000003FFFF80000003E000000003FFFF8000000000000000 +03FFFF800000000000000003FFFF800000000000000003FFFF800000000000000003FFFF +800000000000000003FFFF800000000000000003FFFF800000000000000003FFFF800000 +0000000007FFFFFF8000000000001FFFFFFFFF800000000003FFFFFFFFFF80000000007F +FFFFFFFFFF8000000003FFFFFFFFFFFF800000001FFFFFFE03FFFF80000000FFFFFF8003 +FFFF80000003FFFFF80003FFFF8000000FFFFFC00003FFFF8000001FFFFF000003FFFF80 +00007FFFFC000003FFFF800000FFFFF0000003FFFF800001FFFFC0000003FFFF800003FF +FF80000003FFFF800007FFFF00000003FFFF80000FFFFE00000003FFFF80001FFFFE0000 +0003FFFF80003FFFFC00000003FFFF80003FFFF800000003FFFF80007FFFF800000003FF +FF80007FFFF000000003FFFF80007FFFF000000003FFFF8000FFFFF000000003FFFF8000 +FFFFE000000003FFFF8000FFFFE000000003FFFF8000FFFFE000000003FFFF8000FFFFE0 +00000007FFFF8000FFFFE000000007FFFF8000FFFFE000000007FFFF8000FFFFF0000000 +0FFFFF8000FFFFF00000000FFFFF80007FFFF00000001FFFFF80007FFFF80000003FFFFF +80007FFFF80000007EFFFF80003FFFFC0000007EFFFFC0003FFFFE000001FCFFFFE0001F +FFFF000003F8FFFFFC000FFFFF80000FF0FFFFFFFC07FFFFE0003FE07FFFFFFE01FFFFFC +03FFC07FFFFFFE00FFFFFFFFFF803FFFFFFE003FFFFFFFFE001FFFFFFE000FFFFFFFFC00 +07FFFFFE0003FFFFFFF00001FFFFFE00003FFFFF8000003FFFFC000001FFF80000000000 +0057507ACE5E>97 D<000000003FFFF000000000000007FFFFFFC000000000003FFFFFFF +F80000000001FFFFFFFFFE0000000007FFFFFFFFFF800000001FFFFFFFFFFFE00000007F +FFFFFFFFFFF0000000FFFFFC001FFFF8000003FFFFC00003FFFC000007FFFF000007FFFE +00000FFFFE00000FFFFE00001FFFFC00000FFFFE00003FFFF000001FFFFF00007FFFF000 +001FFFFF0000FFFFE000001FFFFF0001FFFFC000001FFFFF0001FFFFC000001FFFFF0003 +FFFF8000001FFFFF0007FFFF0000001FFFFF0007FFFF0000001FFFFF000FFFFF0000000F +FFFE000FFFFE0000000FFFFE001FFFFE00000007FFFC001FFFFE00000003FFF8001FFFFC +00000001FFF0003FFFFC000000007FC0003FFFFC000000001F00003FFFFC000000000000 +007FFFFC000000000000007FFFFC000000000000007FFFF8000000000000007FFFF80000 +00000000007FFFF800000000000000FFFFF800000000000000FFFFF800000000000000FF +FFF800000000000000FFFFF800000000000000FFFFF800000000000000FFFFF800000000 +000000FFFFF800000000000000FFFFF800000000000000FFFFF800000000000000FFFFF8 +00000000000000FFFFF800000000000000FFFFF800000000000000FFFFF8000000000000 +00FFFFF800000000000000FFFFF8000000000000007FFFF8000000000000007FFFFC0000 +00000000007FFFFC000000000000007FFFFC000000000000007FFFFC000000000000003F +FFFC000000000000003FFFFE000000000000003FFFFE000000000000001FFFFE00000000 +0000001FFFFF000000000000000FFFFF00000000001F800FFFFF00000000003FC007FFFF +80000000007FC007FFFF80000000007FC003FFFFC000000000FF8003FFFFE000000000FF +8001FFFFE000000001FF8000FFFFF000000001FF00007FFFF800000003FE00003FFFFC00 +000007FE00001FFFFE0000000FFC00000FFFFF8000001FF8000007FFFFE000007FF00000 +03FFFFF80001FFE0000000FFFFFF801FFFC00000007FFFFFFFFFFF000000001FFFFFFFFF +FE0000000007FFFFFFFFF80000000001FFFFFFFFE000000000007FFFFFFF800000000000 +07FFFFFC000000000000003FFF800000004A507ACE56>99 D<00000000000000000FFFE0 +0000000000000007FFFFFFE00000000000000007FFFFFFE00000000000000007FFFFFFE0 +0000000000000007FFFFFFE00000000000000007FFFFFFE00000000000000007FFFFFFE0 +0000000000000007FFFFFFE00000000000000007FFFFFFE0000000000000000003FFFFE0 +000000000000000000FFFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE00000000000000000007FFFE0 +0000000000000000007FFFE00000000000000000007FFFE000000000003FFF80007FFFE0 +0000000007FFFFF8007FFFE0000000003FFFFFFF007FFFE000000001FFFFFFFFC07FFFE0 +00000007FFFFFFFFF07FFFE00000001FFFFFFFFFFC7FFFE00000007FFFFE007FFE7FFFE0 +000000FFFFF0000FFF7FFFE0000003FFFF800001FFFFFFE0000007FFFE0000007FFFFFE0 +00000FFFFC0000003FFFFFE000001FFFF80000001FFFFFE000003FFFF00000000FFFFFE0 +00007FFFE000000007FFFFE00000FFFFC000000003FFFFE00001FFFFC000000001FFFFE0 +0003FFFF8000000000FFFFE00003FFFF0000000000FFFFE00007FFFF0000000000FFFFE0 +0007FFFF0000000000FFFFE0000FFFFE0000000000FFFFE0000FFFFE0000000000FFFFE0 +001FFFFE0000000000FFFFE0001FFFFC0000000000FFFFE0003FFFFC0000000000FFFFE0 +003FFFFC0000000000FFFFE0003FFFFC0000000000FFFFE0007FFFFC0000000000FFFFE0 +007FFFF80000000000FFFFE0007FFFF80000000000FFFFE0007FFFF80000000000FFFFE0 +007FFFF80000000000FFFFE000FFFFF80000000000FFFFE000FFFFF80000000000FFFFE0 +00FFFFF80000000000FFFFE000FFFFF80000000000FFFFE000FFFFF80000000000FFFFE0 +00FFFFF80000000000FFFFE000FFFFF80000000000FFFFE000FFFFF80000000000FFFFE0 +00FFFFF80000000000FFFFE000FFFFF80000000000FFFFE000FFFFF80000000000FFFFE0 +00FFFFF80000000000FFFFE000FFFFF80000000000FFFFE000FFFFF80000000000FFFFE0 +00FFFFF80000000000FFFFE0007FFFF80000000000FFFFE0007FFFF80000000000FFFFE0 +007FFFF80000000000FFFFE0007FFFF80000000000FFFFE0007FFFFC0000000000FFFFE0 +003FFFFC0000000000FFFFE0003FFFFC0000000000FFFFE0003FFFFC0000000000FFFFE0 +001FFFFC0000000000FFFFE0001FFFFC0000000000FFFFE0001FFFFE0000000000FFFFE0 +000FFFFE0000000000FFFFE0000FFFFE0000000000FFFFE00007FFFF0000000000FFFFE0 +0007FFFF0000000001FFFFE00003FFFF8000000003FFFFE00001FFFF8000000007FFFFE0 +0000FFFFC000000007FFFFE00000FFFFC00000000FFFFFE000007FFFE00000001FFFFFE0 +00003FFFF00000003FFFFFE000001FFFF8000000FFFFFFF000000FFFFC000001FFFFFFFC +000003FFFF000007FFFFFFFFFE0001FFFFC0003FFEFFFFFFFE00007FFFFC01FFF8FFFFFF +FE00003FFFFFFFFFF0FFFFFFFE00000FFFFFFFFFC0FFFFFFFE000003FFFFFFFF00FFFFFF +FE0000007FFFFFFC00FFFFFFFE0000000FFFFFE000FFFFFFFE000000007FFE0000FFFE00 +005F797AF76C>I<000000007FFF800000000000000FFFFFFC0000000000007FFFFFFF80 +0000000001FFFFFFFFE00000000007FFFFFFFFF8000000001FFFFFFFFFFE000000007FFF +F807FFFF00000001FFFFC000FFFF80000003FFFF00003FFFE0000007FFFC00000FFFF000 +000FFFF8000007FFF800001FFFF0000003FFF800003FFFE0000001FFFC00007FFFC00000 +00FFFE0000FFFF80000000FFFE0001FFFF800000007FFF0001FFFF000000007FFF8003FF +FF000000003FFF8007FFFE000000003FFF8007FFFE000000003FFFC00FFFFE000000001F +FFC00FFFFE000000001FFFE01FFFFC000000001FFFE01FFFFC000000001FFFE01FFFFC00 +0000000FFFF03FFFFC000000000FFFF03FFFFC000000000FFFF03FFFF8000000000FFFF0 +7FFFF8000000000FFFF07FFFF8000000000FFFF07FFFF8000000000FFFF87FFFF8000000 +0007FFF87FFFF80000000007FFF8FFFFF80000000007FFF8FFFFF80000000007FFF8FFFF +F80000000007FFF8FFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFF +FFF8FFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFF0FFFFF800000000000000FFFFF800 +000000000000FFFFF800000000000000FFFFF800000000000000FFFFF800000000000000 +FFFFF8000000000000007FFFF8000000000000007FFFF8000000000000007FFFF8000000 +000000007FFFFC000000000000003FFFFC000000000000003FFFFC000000000000003FFF +FC000000000000003FFFFC000000000000001FFFFC000000000000001FFFFE0000000000 +00000FFFFE000000000003F00FFFFE000000000007F807FFFF000000000007F807FFFF00 +000000000FF803FFFF80000000000FF001FFFF80000000001FF001FFFFC0000000001FE0 +00FFFFE0000000003FE0007FFFF0000000007FC0003FFFF800000000FFC0001FFFFC0000 +0001FF80000FFFFE00000003FF000007FFFF8000000FFE000003FFFFE000003FFC000001 +FFFFF80000FFF8000000FFFFFFC00FFFF00000003FFFFFFFFFFFE00000000FFFFFFFFFFF +8000000003FFFFFFFFFE0000000000FFFFFFFFF800000000001FFFFFFFE0000000000003 +FFFFFF000000000000000FFFE00000004D507BCE58>I<0000000000000000007F800000 +0007FFFC000007FFE0000000FFFFFFE0001FFFF8000007FFFFFFFC007FFFFC00001FFFFF +FFFF01FFFFFE00007FFFFFFFFFC3FFFFFE0001FFFFFFFFFFF7FFBFFF0003FFFF803FFFFF +F83FFF000FFFFC0007FFFFC03FFF001FFFF00001FFFF007FFF003FFFE00000FFFF807FFF +007FFFC000007FFFC03FFF00FFFFC000007FFFE03FFF00FFFF8000003FFFE03FFE01FFFF +8000003FFFF01FFE03FFFF0000001FFFF80FFC03FFFF0000001FFFF807F003FFFF000000 +1FFFF8000007FFFE0000000FFFFC000007FFFE0000000FFFFC000007FFFE0000000FFFFC +00000FFFFE0000000FFFFE00000FFFFE0000000FFFFE00000FFFFE0000000FFFFE00000F +FFFE0000000FFFFE00000FFFFE0000000FFFFE00000FFFFE0000000FFFFE00000FFFFE00 +00000FFFFE00000FFFFE0000000FFFFE00000FFFFE0000000FFFFE00000FFFFE0000000F +FFFE00000FFFFE0000000FFFFE000007FFFE0000000FFFFC000007FFFE0000000FFFFC00 +0007FFFE0000000FFFFC000003FFFF0000001FFFF8000003FFFF0000001FFFF8000003FF +FF0000001FFFF8000001FFFF8000003FFFF0000000FFFF8000003FFFE0000000FFFFC000 +007FFFE00000007FFFC000007FFFC00000003FFFE00000FFFF800000001FFFF00001FFFF +000000000FFFFC0007FFFE000000000FFFFF803FFFF8000000000FFFFFFFFFFFF0000000 +001FFFFFFFFFFFC0000000003F1FFFFFFFFF00000000003F07FFFFFFFC00000000007E00 +FFFFFFE000000000007E0007FFFC000000000000FE00000000000000000000FE00000000 +000000000000FE00000000000000000000FE00000000000000000001FE00000000000000 +000001FF00000000000000000001FF00000000000000000001FF80000000000000000001 +FF80000000000000000001FFC0000000000000000001FFE0000000000000000001FFF000 +0000000000000001FFFE000000000000000000FFFFFFFFFFFFC000000000FFFFFFFFFFFF +FF00000000FFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFC0000007FFFFFFFFFFFFFFF80 +00007FFFFFFFFFFFFFFFE000003FFFFFFFFFFFFFFFF000003FFFFFFFFFFFFFFFFC00001F +FFFFFFFFFFFFFFFE00000FFFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFF800003FFFFFF +FFFFFFFFFFC00007FFFFFFFFFFFFFFFFC0001FFFFFFFFFFFFFFFFFE0007FFFFFFFFFFFFF +FFFFE001FFFFFFFFFFFFFFFFFFF007FFFC00000000FFFFFFF00FFFE00000000003FFFFF8 +1FFFC000000000007FFFF83FFF8000000000001FFFF83FFF00000000000007FFF87FFF00 +000000000003FFFC7FFE00000000000003FFFCFFFE00000000000001FFFCFFFC00000000 +000001FFFCFFFC00000000000000FFFCFFFC00000000000000FFFCFFFC00000000000000 +FFFCFFFC00000000000000FFFCFFFC00000000000000FFFCFFFE00000000000001FFFC7F +FE00000000000001FFF87FFF00000000000003FFF87FFF00000000000003FFF83FFF8000 +0000000007FFF03FFFC000000000000FFFF01FFFE000000000001FFFE00FFFF000000000 +003FFFC007FFFC0000000000FFFF8003FFFF0000000003FFFF0000FFFFC00000000FFFFC +00007FFFF80000007FFFF800001FFFFFE0001FFFFFE0000007FFFFFFFFFFFFFF80000001 +FFFFFFFFFFFFFE000000007FFFFFFFFFFFF8000000000FFFFFFFFFFFC000000000007FFF +FFFFF800000000000001FFFFFE0000000058727BCE61>103 D<0001FFFC000000000000 +000000FFFFFFFC000000000000000000FFFFFFFC000000000000000000FFFFFFFC000000 +000000000000FFFFFFFC000000000000000000FFFFFFFC000000000000000000FFFFFFFC +000000000000000000FFFFFFFC000000000000000000FFFFFFFC00000000000000000000 +7FFFFC000000000000000000001FFFFC000000000000000000000FFFFC00000000000000 +0000000FFFFC000000000000000000000FFFFC000000000000000000000FFFFC00000000 +0000000000000FFFFC000000000000000000000FFFFC000000000000000000000FFFFC00 +0000000000000000000FFFFC000000000000000000000FFFFC000000000000000000000F +FFFC000000000000000000000FFFFC000000000000000000000FFFFC0000000000000000 +00000FFFFC000000000000000000000FFFFC000000000000000000000FFFFC0000000000 +00000000000FFFFC000000000000000000000FFFFC000000000000000000000FFFFC0000 +00000000000000000FFFFC000000000000000000000FFFFC000000000000000000000FFF +FC000000000000000000000FFFFC000000000000000000000FFFFC000000000000000000 +000FFFFC000000000000000000000FFFFC000000000000000000000FFFFC000000000000 +000000000FFFFC000000000000000000000FFFFC000000000000000000000FFFFC000000 +000000000000000FFFFC000000000000000000000FFFFC000000000000000000000FFFFC +00000FFFE000000000000FFFFC0000FFFFFE00000000000FFFFC0003FFFFFF8000000000 +0FFFFC000FFFFFFFE0000000000FFFFC003FFFFFFFF8000000000FFFFC007FFFFFFFFC00 +0000000FFFFC01FFF01FFFFE000000000FFFFC03FF0007FFFF000000000FFFFC07FC0003 +FFFF800000000FFFFC0FF00001FFFFC00000000FFFFC1FC00000FFFFC00000000FFFFC3F +800000FFFFE00000000FFFFC7F000000FFFFE00000000FFFFC7E0000007FFFF00000000F +FFFCFC0000007FFFF00000000FFFFDF80000007FFFF00000000FFFFDF00000007FFFF000 +00000FFFFFF00000003FFFF80000000FFFFFE00000003FFFF80000000FFFFFE00000003F +FFF80000000FFFFFC00000003FFFF80000000FFFFFC00000003FFFF80000000FFFFF8000 +00003FFFF80000000FFFFF800000003FFFF80000000FFFFF000000003FFFF80000000FFF +FF000000003FFFF80000000FFFFF000000003FFFF80000000FFFFF000000003FFFF80000 +000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFF +F80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000 +003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE +000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF8000000 +0FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF8 +0000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE00000000 +3FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE00 +0000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000F +FFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF800 +00000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003F +FFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE0000 +00003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFF +FE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000 +000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFF +F80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000 +003FFFF80000FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFF +FFE003FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFFFF80FF +FFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFF +FF80617879F76C>I<0001FC0000000007FF000000001FFFC00000003FFFE00000007FFF +F0000000FFFFF8000000FFFFF8000001FFFFFC000001FFFFFC000003FFFFFE000003FFFF +FE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000001FFFF +FC000001FFFFFC000000FFFFF8000000FFFFF80000007FFFF00000003FFFE00000001FFF +C000000007FF0000000001FC000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000001FFFC00007FFFFFFC00007FFFFFFC00007FFFFF +FC00007FFFFFFC00007FFFFFFC00007FFFFFFC00007FFFFFFC00007FFFFFFC0000007FFF +FC0000001FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFF +FC0000FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFF +FFFF80FFFFFFFFFF80FFFFFFFFFF80297979F835>I<0001FFFC0000FFFFFFFC0000FFFF +FFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFF +FFFC0000007FFFFC0000001FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000FFFFC0000000F +FFFC0000000FFFFC0000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFF +FFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02A7879F735>108 +D<0001FFF800000FFFE0000000003FFF80000000FFFFFFF80000FFFFFE00000003FFFFF8 +000000FFFFFFF80003FFFFFF8000000FFFFFFE000000FFFFFFF8000FFFFFFFE000003FFF +FFFF800000FFFFFFF8003FFFFFFFF80000FFFFFFFFE00000FFFFFFF8007FFFFFFFFC0001 +FFFFFFFFF00000FFFFFFF801FFF01FFFFE0007FFC07FFFF80000FFFFFFF803FF0007FFFF +000FFC001FFFFC0000FFFFFFF807FC0003FFFF801FF0000FFFFE0000007FFFF80FF00001 +FFFFC03FC00007FFFF0000001FFFF81FC00000FFFFC07F000003FFFF0000000FFFF83F80 +0000FFFFE0FE000003FFFF8000000FFFF87F000000FFFFE1FC000003FFFF8000000FFFF8 +7E0000007FFFF1F8000001FFFFC000000FFFF8FC0000007FFFF3F0000001FFFFC000000F +FFF9F80000007FFFF7E0000001FFFFC000000FFFF9F00000007FFFF7C0000001FFFFC000 +000FFFFBF00000003FFFFFC0000000FFFFE000000FFFFBE00000003FFFFF80000000FFFF +E000000FFFFFE00000003FFFFF80000000FFFFE000000FFFFFC00000003FFFFF00000000 +FFFFE000000FFFFFC00000003FFFFF00000000FFFFE000000FFFFF800000003FFFFE0000 +0000FFFFE000000FFFFF800000003FFFFE00000000FFFFE000000FFFFF000000003FFFFC +00000000FFFFE000000FFFFF000000003FFFFC00000000FFFFE000000FFFFF000000003F +FFFC00000000FFFFE000000FFFFF000000003FFFFC00000000FFFFE000000FFFFE000000 +003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE00 +0000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFF +FE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE00000 +0FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE0 +00000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FF +FFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF8000000 +00FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800 +000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFF +F800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE00000000 +3FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE0000 +00003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE +000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000F +FFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000 +000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFF +E000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000 +FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF80000 +0000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF8 +00000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000003F +FFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE000000 +003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFFFE00 +0000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000000FFF +FE000000003FFFF800000000FFFFE000000FFFFE000000003FFFF800000000FFFFE000FF +FFFFFFFFE003FFFFFFFFFF800FFFFFFFFFFEFFFFFFFFFFE003FFFFFFFFFF800FFFFFFFFF +FEFFFFFFFFFFE003FFFFFFFFFF800FFFFFFFFFFEFFFFFFFFFFE003FFFFFFFFFF800FFFFF +FFFFFEFFFFFFFFFFE003FFFFFFFFFF800FFFFFFFFFFEFFFFFFFFFFE003FFFFFFFFFF800F +FFFFFFFFFEFFFFFFFFFFE003FFFFFFFFFF800FFFFFFFFFFEFFFFFFFFFFE003FFFFFFFFFF +800FFFFFFFFFFE974E79CDA2>I<0001FFF800000FFFE000000000FFFFFFF80000FFFFFE +00000000FFFFFFF80003FFFFFF80000000FFFFFFF8000FFFFFFFE0000000FFFFFFF8003F +FFFFFFF8000000FFFFFFF8007FFFFFFFFC000000FFFFFFF801FFF01FFFFE000000FFFFFF +F803FF0007FFFF000000FFFFFFF807FC0003FFFF800000007FFFF80FF00001FFFFC00000 +001FFFF81FC00000FFFFC00000000FFFF83F800000FFFFE00000000FFFF87F000000FFFF +E00000000FFFF87E0000007FFFF00000000FFFF8FC0000007FFFF00000000FFFF9F80000 +007FFFF00000000FFFF9F00000007FFFF00000000FFFFBF00000003FFFF80000000FFFFB +E00000003FFFF80000000FFFFFE00000003FFFF80000000FFFFFC00000003FFFF8000000 +0FFFFFC00000003FFFF80000000FFFFF800000003FFFF80000000FFFFF800000003FFFF8 +0000000FFFFF000000003FFFF80000000FFFFF000000003FFFF80000000FFFFF00000000 +3FFFF80000000FFFFF000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE00 +0000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000F +FFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF800 +00000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003F +FFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE0000 +00003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFF +FE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000 +000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFF +F80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000 +003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE +000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF8000000 +0FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF8 +0000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE00000000 +3FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE00 +0000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000F +FFFE000000003FFFF80000000FFFFE000000003FFFF80000FFFFFFFFFFE003FFFFFFFFFF +80FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE003FFFF +FFFFFF80FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFFFF80FFFFFFFFFFE0 +03FFFFFFFFFF80FFFFFFFFFFE003FFFFFFFFFF80614E79CD6C>I<000000001FFFE00000 +000000000003FFFFFF000000000000001FFFFFFFE0000000000000FFFFFFFFFC00000000 +0003FFFFFFFFFF00000000000FFFFFFFFFFFC0000000003FFFFC00FFFFF000000000FFFF +C0000FFFFC00000001FFFF000003FFFE00000003FFFC000000FFFF0000000FFFF8000000 +7FFFC000001FFFF00000003FFFE000003FFFE00000001FFFF000003FFFC00000000FFFF0 +00007FFF8000000007FFF80000FFFF0000000003FFFC0001FFFF0000000003FFFE0001FF +FF0000000003FFFE0003FFFE0000000001FFFF0007FFFE0000000001FFFF8007FFFE0000 +000001FFFF800FFFFC0000000000FFFFC00FFFFC0000000000FFFFC01FFFFC0000000000 +FFFFE01FFFFC0000000000FFFFE01FFFFC0000000000FFFFE03FFFF800000000007FFFF0 +3FFFF800000000007FFFF03FFFF800000000007FFFF07FFFF800000000007FFFF87FFFF8 +00000000007FFFF87FFFF800000000007FFFF87FFFF800000000007FFFF87FFFF8000000 +00007FFFF8FFFFF800000000007FFFFCFFFFF800000000007FFFFCFFFFF800000000007F +FFFCFFFFF800000000007FFFFCFFFFF800000000007FFFFCFFFFF800000000007FFFFCFF +FFF800000000007FFFFCFFFFF800000000007FFFFCFFFFF800000000007FFFFCFFFFF800 +000000007FFFFCFFFFF800000000007FFFFCFFFFF800000000007FFFFCFFFFF800000000 +007FFFFCFFFFF800000000007FFFFC7FFFF800000000007FFFF87FFFF800000000007FFF +F87FFFF800000000007FFFF87FFFF800000000007FFFF83FFFF800000000007FFFF03FFF +FC0000000000FFFFF03FFFFC0000000000FFFFF03FFFFC0000000000FFFFF01FFFFC0000 +000000FFFFE01FFFFC0000000000FFFFE00FFFFE0000000001FFFFC00FFFFE0000000001 +FFFFC007FFFE0000000001FFFF8007FFFF0000000003FFFF8003FFFF0000000003FFFF00 +01FFFF8000000007FFFE0001FFFF8000000007FFFE0000FFFFC00000000FFFFC00007FFF +E00000001FFFF800003FFFF00000003FFFF000001FFFF80000007FFFE000000FFFFC0000 +00FFFFC0000007FFFF000003FFFF80000003FFFFC0000FFFFF00000000FFFFFC00FFFFFC +000000007FFFFFFFFFFFF8000000001FFFFFFFFFFFE00000000007FFFFFFFFFF80000000 +0001FFFFFFFFFE0000000000003FFFFFFFF000000000000003FFFFFF0000000000000000 +1FFFE00000000056507BCE61>I<0001FFFC00007FFE00000000FFFFFFFC000FFFFFF000 +0000FFFFFFFC007FFFFFFE000000FFFFFFFC01FFFFFFFFC00000FFFFFFFC07FFFFFFFFF0 +0000FFFFFFFC1FFFFFFFFFF80000FFFFFFFC7FFFFFFFFFFE0000FFFFFFFCFFFF007FFFFF +0000FFFFFFFFFFF0000FFFFFC000007FFFFFFF800003FFFFE000001FFFFFFE000001FFFF +F000000FFFFFFC000000FFFFF800000FFFFFF00000007FFFFC00000FFFFFE00000003FFF +FE00000FFFFFC00000001FFFFF00000FFFFF800000000FFFFF00000FFFFF000000000FFF +FF80000FFFFE0000000007FFFFC0000FFFFE0000000003FFFFC0000FFFFE0000000003FF +FFE0000FFFFE0000000003FFFFE0000FFFFE0000000001FFFFF0000FFFFE0000000001FF +FFF0000FFFFE0000000000FFFFF8000FFFFE0000000000FFFFF8000FFFFE0000000000FF +FFF8000FFFFE0000000000FFFFF8000FFFFE00000000007FFFFC000FFFFE00000000007F +FFFC000FFFFE00000000007FFFFC000FFFFE00000000007FFFFC000FFFFE00000000007F +FFFC000FFFFE00000000003FFFFE000FFFFE00000000003FFFFE000FFFFE00000000003F +FFFE000FFFFE00000000003FFFFE000FFFFE00000000003FFFFE000FFFFE00000000003F +FFFE000FFFFE00000000003FFFFE000FFFFE00000000003FFFFE000FFFFE00000000003F +FFFE000FFFFE00000000003FFFFE000FFFFE00000000003FFFFE000FFFFE00000000003F +FFFE000FFFFE00000000003FFFFE000FFFFE00000000003FFFFE000FFFFE00000000003F +FFFE000FFFFE00000000007FFFFC000FFFFE00000000007FFFFC000FFFFE00000000007F +FFFC000FFFFE00000000007FFFFC000FFFFE00000000007FFFFC000FFFFE0000000000FF +FFF8000FFFFE0000000000FFFFF8000FFFFE0000000000FFFFF8000FFFFE0000000000FF +FFF0000FFFFE0000000001FFFFF0000FFFFE0000000001FFFFE0000FFFFE0000000003FF +FFE0000FFFFE0000000003FFFFC0000FFFFE0000000007FFFFC0000FFFFE0000000007FF +FF80000FFFFF000000000FFFFF80000FFFFF800000000FFFFF00000FFFFFC00000001FFF +FE00000FFFFFC00000003FFFFC00000FFFFFE00000007FFFF800000FFFFFF0000000FFFF +F000000FFFFFFC000001FFFFE000000FFFFFFE000003FFFFC000000FFFFFFF80000FFFFF +8000000FFFFFFFE0003FFFFE0000000FFFFE7FFC01FFFFFC0000000FFFFE3FFFFFFFFFF0 +0000000FFFFE0FFFFFFFFFC00000000FFFFE03FFFFFFFF000000000FFFFE00FFFFFFF800 +0000000FFFFE003FFFFFC0000000000FFFFE0003FFF000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000000FFFFE000000000000 +0000000FFFFE0000000000000000000FFFFE0000000000000000FFFFFFFFFFE000000000 +0000FFFFFFFFFFE0000000000000FFFFFFFFFFE0000000000000FFFFFFFFFFE000000000 +0000FFFFFFFFFFE0000000000000FFFFFFFFFFE0000000000000FFFFFFFFFFE000000000 +0000FFFFFFFFFFE00000000000005F6F7ACD6C>I<0001FFF80007FE0000FFFFFFF8003F +FFC000FFFFFFF800FFFFF000FFFFFFF803FFFFF800FFFFFFF807FFFFFE00FFFFFFF80FFF +FFFF00FFFFFFF81FFC3FFF80FFFFFFF83FE07FFFC0FFFFFFF87F80FFFFC0007FFFF87F00 +FFFFC0001FFFF8FE01FFFFE0000FFFF9FC01FFFFE0000FFFF9F801FFFFE0000FFFFBF801 +FFFFE0000FFFFBF001FFFFE0000FFFFBE001FFFFE0000FFFFFE001FFFFE0000FFFFFC001 +FFFFE0000FFFFFC000FFFFC0000FFFFF8000FFFFC0000FFFFF80007FFF80000FFFFF8000 +1FFE00000FFFFF00000FFC00000FFFFF000001E000000FFFFF0000000000000FFFFF0000 +000000000FFFFE0000000000000FFFFE0000000000000FFFFE0000000000000FFFFE0000 +000000000FFFFE0000000000000FFFFE0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000000000000FFFFC0000 +000000FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF8 +000000FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF8 +000000434E7ACD4F>114 D<000003FFFC00078000007FFFFFE00FC00003FFFFFFF83FC0 +000FFFFFFFFEFFC0003FFFFFFFFFFFC0007FFF000FFFFFC001FFF00000FFFFC003FF8000 +003FFFC007FF0000000FFFC00FFE00000007FFC01FFC00000003FFC01FF800000001FFC0 +3FF800000001FFC03FF800000000FFC07FF000000000FFC07FF0000000007FC07FF00000 +00007FC0FFF0000000007FC0FFF8000000003FC0FFF8000000003FC0FFF8000000003FC0 +FFFC000000003FC0FFFE000000003FC0FFFF000000001F80FFFFC00000000000FFFFF000 +00000000FFFFFE0000000000FFFFFFF0000000007FFFFFFF800000007FFFFFFFFE000000 +7FFFFFFFFFE000003FFFFFFFFFFC00001FFFFFFFFFFF00001FFFFFFFFFFFC0000FFFFFFF +FFFFE00007FFFFFFFFFFF80003FFFFFFFFFFFC0001FFFFFFFFFFFE0000FFFFFFFFFFFF00 +003FFFFFFFFFFF80001FFFFFFFFFFFC00007FFFFFFFFFFE00001FFFFFFFFFFF000003FFF +FFFFFFF0000007FFFFFFFFF80000001FFFFFFFF800000000FFFFFFFC0000000007FFFFFC +00000000007FFFFC00000000001FFFFE000000000007FFFE7E0000000003FFFEFF000000 +0001FFFEFF0000000000FFFEFF80000000007FFEFF80000000007FFEFF80000000003FFE +FFC0000000003FFEFFC0000000001FFEFFC0000000001FFEFFE0000000001FFEFFE00000 +00001FFCFFF0000000001FFCFFF0000000001FFCFFF8000000003FFCFFFC000000003FF8 +FFFE000000007FF8FFFE000000007FF0FFFF00000000FFF0FFFF80000001FFE0FFFFE000 +0003FFC0FFFFF0000007FF80FFFFFE00003FFF00FFFFFFC003FFFE00FFE7FFFFFFFFFC00 +FFC3FFFFFFFFF000FF80FFFFFFFFC000FE003FFFFFFF0000FC0007FFFFF800007000007F +FF0000003F507ACE4C>I<000000FF00000000000000FF00000000000000FF0000000000 +0000FF00000000000000FF00000000000000FF00000000000000FF00000000000001FF00 +000000000001FF00000000000001FF00000000000001FF00000000000001FF0000000000 +0003FF00000000000003FF00000000000003FF00000000000003FF00000000000007FF00 +000000000007FF0000000000000FFF0000000000000FFF0000000000001FFF0000000000 +001FFF0000000000003FFF0000000000003FFF0000000000007FFF000000000000FFFF00 +0000000000FFFF000000000001FFFF000000000003FFFF000000000007FFFF0000000000 +1FFFFF00000000003FFFFF0000000000FFFFFFFFFFFF000FFFFFFFFFFFFF00FFFFFFFFFF +FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF +FFFFFFFFFFFF000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF00 +0000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF0000000000 +07FFFF000000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF00 +0000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF0000000000 +07FFFF000000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF00 +0000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF0000000000 +07FFFF000000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF00 +0000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF0000000000 +07FFFF000000000007FFFF000000000007FFFF000000000007FFFF000000000007FFFF00 +001FE00007FFFF00001FE00007FFFF00001FE00007FFFF00001FE00007FFFF00001FE000 +07FFFF00001FE00007FFFF00001FE00007FFFF00001FE00007FFFF00001FE00007FFFF00 +001FE00007FFFF00001FE00007FFFF00001FE00007FFFF00001FE00007FFFF00001FE000 +07FFFF00003FE00007FFFF80003FC00003FFFF80003FC00003FFFF80007FC00003FFFFC0 +007F800001FFFFC000FF800001FFFFE000FF800000FFFFE001FF0000007FFFF003FE0000 +007FFFFE0FFE0000003FFFFFFFFC0000000FFFFFFFF800000007FFFFFFF000000001FFFF +FFC0000000007FFFFF80000000001FFFFE000000000001FFF000003B6E7CEC4B>I<0000 +FFFE0000000003FFF80000FFFFFFFE000003FFFFFFF80000FFFFFFFE000003FFFFFFF800 +00FFFFFFFE000003FFFFFFF80000FFFFFFFE000003FFFFFFF80000FFFFFFFE000003FFFF +FFF80000FFFFFFFE000003FFFFFFF80000FFFFFFFE000003FFFFFFF80000FFFFFFFE0000 +03FFFFFFF80000007FFFFE00000001FFFFF80000001FFFFE000000007FFFF80000000FFF +FE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000 +000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFF +F80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000 +003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE +000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF8000000 +0FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF8 +0000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE00000000 +3FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE00 +0000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000F +FFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF800 +00000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003F +FFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE0000 +00003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFF +FE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000 +000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000003FFF +F80000000FFFFE000000003FFFF80000000FFFFE000000003FFFF80000000FFFFE000000 +007FFFF80000000FFFFE000000007FFFF80000000FFFFE000000007FFFF80000000FFFFE +000000007FFFF80000000FFFFE00000000FFFFF80000000FFFFE00000000FFFFF8000000 +0FFFFE00000001FFFFF80000000FFFFE00000001FFFFF80000000FFFFE00000003FFFFF8 +00000007FFFE00000007FFFFF800000007FFFE00000007DFFFF800000007FFFF0000000F +DFFFF800000003FFFF0000001F9FFFF800000003FFFF0000003F9FFFFC00000001FFFF80 +00007F1FFFFF00000000FFFFC00001FE1FFFFFFF800000FFFFE00007FC1FFFFFFF800000 +3FFFFE003FF81FFFFFFF8000001FFFFFFFFFF01FFFFFFF8000000FFFFFFFFFC01FFFFFFF +80000003FFFFFFFF801FFFFFFF80000000FFFFFFFE001FFFFFFF800000001FFFFFF8001F +FFFFFF8000000000FFFF80001FFFC00000614F79CD6C>II +E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%PaperSize: Letter + +%%EndSetup +%%Page: 1 1 +1 0 bop -115 202 a Fz(Revised)544 127 y(5)712 202 y(Rep)5 +b(ort)66 b(on)e(the)h(Algorithmic)i(Language)1554 388 +y(Sc)-5 b(heme)632 684 y Fy(R)p Fx(ICHARD)28 b Fy(K)p +Fx(ELSEY)p Fy(,)f(W)p Fx(ILLIAM)h Fy(C)p Fx(LINGER,)22 +b(AND)28 b Fy(J)p Fx(ONA)-5 b(THAN)29 b Fy(R)p Fx(EES)e +Fy(\()p Fw(Editors)7 b Fy(\))155 784 y(H.)28 b(A)p Fx(BELSON)416 +b Fy(R.)28 b(K.)f(D)p Fx(YBVIG)480 b Fy(C.)27 b(T.)h(H)p +Fx(A)-5 b(YNES)481 b Fy(G.)28 b(J.)g(R)p Fx(OZAS)155 +884 y Fy(N.)g(I.)g(A)p Fx(D)n(AMS)23 b(IV)315 b Fy(D.)28 +b(P)-7 b(.)27 b(F)p Fx(RIEDMAN)402 b Fy(E.)27 b(K)p Fx(OHLBECKER)399 +b Fy(G.)28 b(L.)g(S)p Fx(TEELE)f Fy(J)p Fx(R)p Fy(.)155 +983 y(D.)i(H.)f(B)p Fx(AR)-5 b(TLEY)300 b Fy(R.)28 b(H)p +Fx(ALSTEAD)501 b Fy(D.)28 b(O)p Fx(XLEY)623 b Fy(G.)28 +b(J.)g(S)p Fx(USSMAN)155 1083 y Fy(G.)g(B)p Fx(R)n(OOKS)449 +b Fy(C.)28 b(H)p Fx(ANSON)583 b Fy(K.)27 b(M.)h(P)p Fx(ITMAN)459 +b Fy(M.)28 b(W)p Fx(AND)1139 1333 y Fw(De)l(dic)l(ate)l(d)i(to)g(the)g +(Memory)h(of)g(R)l(ob)l(ert)e(Hieb)391 1542 y Fv(20)i(F)-8 +b(ebruary)33 b(1998)452 1785 y Fu(SUMMAR)-9 b(Y)-300 +1926 y Fy(The)41 b(rep)r(ort)f(giv)n(es)f(a)i(de\014ning)f(description) +g(of)h(the)g(program-)-300 2025 y(ming)29 b(language)e(Sc)n(heme.)41 +b(Sc)n(heme)29 b(is)g(a)f(statically)g(scop)r(ed)h(and)-300 +2125 y(prop)r(erly)45 b(tail-recursiv)n(e)f(dialect)i(of)g(the)g(Lisp)g +(programming)-300 2225 y(language)c(in)n(v)n(en)n(ted)h(b)n(y)g(Guy)h +(Lewis)f(Steele)h(Jr.)f(and)g(Gerald)-300 2324 y(Ja)n(y)37 +b(Sussman.)70 b(It)39 b(w)n(as)f(designed)g(to)h(ha)n(v)n(e)e(an)i +(exceptionally)-300 2424 y(clear)27 b(and)h(simple)g(seman)n(tics)f +(and)h(few)g(di\013eren)n(t)g(w)n(a)n(ys)e(to)i(form)-300 +2523 y(expressions.)33 b(A)21 b(wide)f(v)-5 b(ariet)n(y)20 +b(of)g(programming)f(paradigms,)h(in-)-300 2623 y(cluding)j(imp)r +(erativ)n(e,)h(functional,)g(and)f(message)e(passing)h(st)n(yles,)-300 +2723 y(\014nd)28 b(con)n(v)n(enien)n(t)f(expression)f(in)i(Sc)n(heme.) +-300 2864 y(The)e(in)n(tro)r(duction)g(o\013ers)f(a)g(brief)h(history)f +(of)h(the)h(language)d(and)-300 2963 y(of)k(the)g(rep)r(ort.)-300 +3105 y(The)k(\014rst)g(three)g(c)n(hapters)g(presen)n(t)f(the)i +(fundamen)n(tal)f(ideas)g(of)-300 3204 y(the)26 b(language)e(and)i +(describ)r(e)g(the)g(notational)f(con)n(v)n(en)n(tions)f(used)-300 +3304 y(for)d(describing)g(the)h(language)f(and)g(for)g(writing)h +(programs)d(in)j(the)-300 3403 y(language.)-300 3545 +y(Chapters)40 b(4)g(and)h(5)f(describ)r(e)g(the)i(syn)n(tax)d(and)i +(seman)n(tics)f(of)-300 3644 y(expressions,)26 b(programs,)f(and)j +(de\014nitions.)-300 3785 y(Chapter)37 b(6)g(describ)r(es)g(Sc)n +(heme's)h(built-in)g(pro)r(cedures,)h(whic)n(h)-300 3885 +y(include)j(all)g(of)f(the)i(language's)c(data)j(manipulation)f(and)h +(in-)-300 3985 y(put/output)28 b(primitiv)n(es.)-300 +4126 y(Chapter)g(7)g(pro)n(vides)f(a)h(formal)g(syn)n(tax)g(for)f(Sc)n +(heme)i(written)g(in)-300 4225 y(extended)19 b(BNF,)g(along)e(with)j(a) +e(formal)g(denotational)g(seman)n(tics.)-300 4325 y(An)31 +b(example)g(of)g(the)h(use)e(of)h(the)h(language)d(follo)n(ws)h(the)i +(formal)-300 4425 y(syn)n(tax)27 b(and)g(seman)n(tics.)-300 +4566 y(The)35 b(rep)r(ort)f(concludes)g(with)h(a)f(list)h(of)f +(references)g(and)g(an)h(al-)-300 4665 y(phab)r(etic)28 +b(index.)2672 1542 y Fu(CONTENTS)1933 1662 y Ft(In)n(tro)r(duction)73 +b(.)35 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 b(2)1933 +1754 y(1)50 b(Ov)n(erview)24 b(of)f(Sc)n(heme)i(.)35 +b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f +(.)h(.)g(.)g(.)g(.)115 b(3)2039 1845 y(1.1)72 b(Seman)n(tics)46 +b(.)35 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 b(3)2039 1936 y(1.2)72 +b(Syn)n(tax)32 b(.)j(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.) +h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 +b(3)2039 2028 y(1.3)72 b(Notation)25 b(and)g(terminology)47 +b(.)35 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 +b(3)1933 2119 y(2)50 b(Lexical)24 b(con)n(v)n(en)n(tions)49 +b(.)35 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)f(.)h(.)g(.)g(.)g(.)115 b(5)2039 2210 y(2.1)72 b(Iden)n(ti\014ers) +49 b(.)35 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 b(5)2039 2302 +y(2.2)72 b(Whitespace)26 b(and)e(commen)n(ts)f(.)35 b(.)f(.)h(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 b(5)2039 +2393 y(2.3)72 b(Other)24 b(notations)29 b(.)35 b(.)g(.)g(.)g(.)g(.)g(.) +g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 +b(5)1933 2484 y(3)50 b(Basic)24 b(concepts)33 b(.)i(.)g(.)f(.)h(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) +g(.)g(.)115 b(6)2039 2576 y(3.1)72 b(V)-6 b(ariables,)23 +b(syn)n(tactic)j(k)n(eyw)n(ords,)d(and)i(regions)38 b(.)d(.)f(.)h(.)g +(.)g(.)g(.)115 b(6)2039 2667 y(3.2)72 b(Disjoin)n(tness)24 +b(of)f(t)n(yp)r(es)48 b(.)35 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 b(6)2039 2758 y(3.3)72 +b(External)25 b(represen)n(tations)39 b(.)c(.)g(.)f(.)h(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 b(6)2039 2850 +y(3.4)72 b(Storage)25 b(mo)r(del)c(.)35 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 +b(7)2039 2941 y(3.5)72 b(Prop)r(er)24 b(tail)f(recursion)44 +b(.)35 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) +g(.)g(.)115 b(7)1933 3032 y(4)50 b(Expressions)66 b(.)35 +b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 b(8)2039 3124 +y(4.1)72 b(Primitiv)n(e)22 b(expression)i(t)n(yp)r(es)35 +b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)115 +b(8)2039 3215 y(4.2)72 b(Deriv)n(ed)24 b(expression)g(t)n(yp)r(es)29 +b(.)35 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.) +79 b(10)2039 3306 y(4.3)72 b(Macros)22 b(.)35 b(.)g(.)g(.)f(.)h(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) +g(.)g(.)79 b(13)1933 3397 y(5)50 b(Program)22 b(structure)h(.)34 +b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)f(.)h(.)g(.)g(.)g(.)79 b(16)2039 3489 y(5.1)72 b(Programs)57 +b(.)35 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 b(16)2039 3580 y(5.2)72 +b(De\014nitions)22 b(.)35 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 +b(16)2039 3671 y(5.3)72 b(Syn)n(tax)26 b(de\014nitions)73 +b(.)35 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.) +g(.)g(.)g(.)79 b(17)1933 3763 y(6)50 b(Standard)25 b(pro)r(cedures)64 +b(.)35 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +f(.)h(.)g(.)g(.)g(.)79 b(17)2039 3854 y(6.1)72 b(Equiv)l(alence)26 +b(predicates)39 b(.)c(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f +(.)h(.)g(.)g(.)g(.)79 b(17)2039 3945 y(6.2)72 b(Num)n(b)r(ers)21 +b(.)35 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 b(19)2039 4037 +y(6.3)72 b(Other)24 b(data)h(t)n(yp)r(es)46 b(.)35 b(.)g(.)g(.)g(.)g(.) +g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 +b(25)2039 4128 y(6.4)72 b(Con)n(trol)24 b(features)c(.)35 +b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h +(.)g(.)g(.)g(.)79 b(31)2039 4219 y(6.5)72 b Fs(Eval)49 +b Ft(.)35 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 b(35)2039 +4311 y(6.6)72 b(Input)25 b(and)g(output)35 b(.)g(.)g(.)g(.)g(.)g(.)g(.) +f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 +b(35)1933 4402 y(7)50 b(F)-6 b(ormal)22 b(syn)n(tax)j(and)f(seman)n +(tics)d(.)35 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g +(.)g(.)g(.)79 b(38)2039 4493 y(7.1)72 b(F)-6 b(ormal)23 +b(syn)n(tax)e(.)35 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 b(38)2039 4585 +y(7.2)72 b(F)-6 b(ormal)23 b(seman)n(tics)35 b(.)g(.)g(.)g(.)g(.)g(.)g +(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 +b(40)2039 4676 y(7.3)72 b(Deriv)n(ed)24 b(expression)g(t)n(yp)r(es)29 +b(.)35 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.) +79 b(43)1933 4767 y(Notes)63 b(.)35 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f +(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +f(.)h(.)g(.)g(.)g(.)79 b(45)1933 4859 y(Additional)24 +b(material)70 b(.)34 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 b(45)1933 +4950 y(Example)22 b(.)35 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.) +g(.)79 b(45)1933 5041 y(References)23 b(.)35 b(.)g(.)g(.)g(.)g(.)g(.)f +(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +f(.)h(.)g(.)g(.)g(.)79 b(46)1933 5133 y(Alphab)r(etic)25 +b(index)f(of)f(de\014nitions)i(of)e(concepts,)2183 5212 +y(k)n(eyw)n(ords,)g(and)i(pro)r(cedures)72 b(.)35 b(.)f(.)h(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)79 b(48)p eop +%%Page: 2 2 +2 1 bop -300 -125 a Fy(2)83 b(Revised)106 -156 y Fr(5)170 +-125 y Fy(Sc)n(heme)1413 68 y Fu(INTR)m(ODUCTION)-300 +250 y Fy(Programming)29 b(languages)g(should)j(b)r(e)g(designed)f(not)h +(b)n(y)f(piling)-300 350 y(feature)c(on)h(top)g(of)f(feature,)h(but)g +(b)n(y)f(remo)n(ving)g(the)h(w)n(eaknesses)-300 449 y(and)f +(restrictions)e(that)i(mak)n(e)f(additional)g(features)g(app)r(ear)g +(nec-)-300 549 y(essary)-7 b(.)39 b(Sc)n(heme)28 b(demonstrates)g(that) +h(a)f(v)n(ery)g(small)g(n)n(um)n(b)r(er)h(of)-300 649 +y(rules)h(for)g(forming)g(expressions,)g(with)h(no)f(restrictions)f(on) +h(ho)n(w)-300 748 y(they)c(are)e(comp)r(osed,)h(su\016ce)h(to)f(form)g +(a)g(practical)f(and)i(e\016cien)n(t)-300 848 y(programming)31 +b(language)g(that)i(is)f(\015exible)h(enough)f(to)h(supp)r(ort)-300 +948 y(most)27 b(of)h(the)g(ma)5 b(jor)26 b(programming)g(paradigms)g +(in)i(use)f(to)r(da)n(y)-7 b(.)-300 1083 y(Sc)n(heme)28 +b(w)n(as)e(one)i(of)f(the)h(\014rst)g(programming)d(languages)h(to)i +(in-)-300 1182 y(corp)r(orate)f(\014rst)h(class)f(pro)r(cedures)g(as)h +(in)h(the)f(lam)n(b)r(da)g(calculus,)-300 1282 y(thereb)n(y)40 +b(pro)n(ving)e(the)j(usefulness)f(of)g(static)h(scop)r(e)e(rules)h(and) +-300 1382 y(blo)r(c)n(k)29 b(structure)h(in)g(a)f(dynamically)h(t)n(yp) +r(ed)g(language.)42 b(Sc)n(heme)-300 1481 y(w)n(as)19 +b(the)i(\014rst)g(ma)5 b(jor)19 b(dialect)h(of)h(Lisp)f(to)h +(distinguish)f(pro)r(cedures)-300 1581 y(from)28 b(lam)n(b)r(da)g +(expressions)e(and)j(sym)n(b)r(ols,)e(to)i(use)f(a)g(single)f(lex-)-300 +1681 y(ical)j(en)n(vironmen)n(t)f(for)g(all)h(v)-5 b(ariables,)30 +b(and)f(to)h(ev)-5 b(aluate)30 b(the)g(op-)-300 1780 +y(erator)g(p)r(osition)h(of)g(a)g(pro)r(cedure)f(call)h(in)g(the)h +(same)f(w)n(a)n(y)f(as)g(an)-300 1880 y(op)r(erand)35 +b(p)r(osition.)62 b(By)36 b(relying)f(en)n(tirely)h(on)f(pro)r(cedure)g +(calls)-300 1979 y(to)25 b(express)g(iteration,)g(Sc)n(heme)g +(emphasized)g(the)h(fact)f(that)h(tail-)-300 2079 y(recursiv)n(e)38 +b(pro)r(cedure)g(calls)g(are)h(essen)n(tially)f(goto's)g(that)i(pass) +-300 2179 y(argumen)n(ts.)75 b(Sc)n(heme)41 b(w)n(as)e(the)i(\014rst)g +(widely)g(used)f(program-)-300 2278 y(ming)g(language)f(to)h(em)n +(brace)e(\014rst)i(class)f(escap)r(e)h(pro)r(cedures,)-300 +2378 y(from)31 b(whic)n(h)g(all)f(previously)g(kno)n(wn)g(sequen)n +(tial)h(con)n(trol)f(struc-)-300 2478 y(tures)d(can)h(b)r(e)g(syn)n +(thesized.)37 b(A)28 b(subsequen)n(t)g(v)n(ersion)e(of)i(Sc)n(heme)-300 +2577 y(in)n(tro)r(duced)k(the)g(concept)g(of)g(exact)g(and)g(inexact)f +(n)n(um)n(b)r(ers,)i(an)-300 2677 y(extension)d(of)h(Common)f(Lisp's)g +(generic)g(arithmetic.)46 b(More)30 b(re-)-300 2776 y(cen)n(tly)-7 +b(,)29 b(Sc)n(heme)f(b)r(ecame)h(the)f(\014rst)h(programming)d +(language)h(to)-300 2876 y(supp)r(ort)42 b(h)n(ygienic)g(macros,)i +(whic)n(h)e(p)r(ermit)h(the)g(syn)n(tax)e(of)h(a)-300 +2976 y(blo)r(c)n(k-structured)33 b(language)g(to)i(b)r(e)g(extended)g +(in)g(a)f(consisten)n(t)-300 3075 y(and)27 b(reliable)g(manner.)-300 +3324 y Fv(Bac)m(kground)-300 3495 y Fy(The)c(\014rst)g(description)f +(of)h(Sc)n(heme)g(w)n(as)f(written)h(in)h(1975)d([28)o(].)35 +b(A)-300 3595 y(revised)27 b(rep)r(ort)g([25)o(])56 b(app)r(eared)26 +b(in)i(1978,)e(whic)n(h)i(describ)r(ed)f(the)-300 3695 +y(ev)n(olution)j(of)i(the)f(language)f(as)h(its)g(MIT)g(implemen)n +(tation)h(w)n(as)-300 3794 y(upgraded)k(to)h(supp)r(ort)g(an)g(inno)n +(v)-5 b(ativ)n(e)36 b(compiler)g([26)o(].)65 b(Three)-300 +3894 y(distinct)36 b(pro)5 b(jects)35 b(b)r(egan)g(in)h(1981)e(and)h +(1982)f(to)i(use)f(v)-5 b(arian)n(ts)-300 3993 y(of)32 +b(Sc)n(heme)g(for)g(courses)f(at)h(MIT,)g(Y)-7 b(ale,)34 +b(and)e(Indiana)g(Univ)n(er-)-300 4093 y(sit)n(y)h([21)o(,)g(17,)g(10)o +(].)54 b(An)34 b(in)n(tro)r(ductory)e(computer)h(science)g(text-)-300 +4193 y(b)r(o)r(ok)27 b(using)g(Sc)n(heme)h(w)n(as)f(published)h(in)f +(1984)f([1].)-300 4328 y(As)44 b(Sc)n(heme)h(b)r(ecame)f(more)f +(widespread,)48 b(lo)r(cal)c(dialects)g(b)r(e-)-300 4428 +y(gan)g(to)h(div)n(erge)f(un)n(til)h(studen)n(ts)h(and)e(researc)n +(hers)f(o)r(ccasion-)-300 4527 y(ally)29 b(found)i(it)f(di\016cult)h +(to)e(understand)h(co)r(de)g(written)g(at)f(other)-300 +4627 y(sites.)34 b(Fifteen)22 b(represen)n(tativ)n(es)d(of)i(the)g(ma)5 +b(jor)20 b(implemen)n(tations)-300 4727 y(of)32 b(Sc)n(heme)f +(therefore)g(met)h(in)g(Octob)r(er)f(1984)f(to)h(w)n(ork)f(to)n(w)n +(ard)-300 4826 y(a)k(b)r(etter)h(and)f(more)g(widely)g(accepted)g +(standard)g(for)g(Sc)n(heme.)-300 4926 y(Their)22 b(rep)r(ort)g([4)o(]) +h(w)n(as)e(published)i(at)f(MIT)h(and)f(Indiana)g(Univ)n(er-)-300 +5025 y(sit)n(y)27 b(in)h(the)f(summer)g(of)h(1985.)35 +b(F)-7 b(urther)27 b(revision)f(to)r(ok)h(place)g(in)-300 +5125 y(the)i(spring)f(of)h(1986)e([23)o(],)j(and)e(in)h(the)h(spring)e +(of)g(1988)f([6].)41 b(The)-300 5225 y(presen)n(t)34 +b(rep)r(ort)g(re\015ects)f(further)i(revisions)e(agreed)g(up)r(on)i(in) +f(a)-300 5324 y(meeting)28 b(at)f(Xero)n(x)f(P)-7 b(AR)n(C)28 +b(in)g(June)f(1992.)-300 5504 y(W)-7 b(e)26 b(in)n(tend)g(this)g(rep)r +(ort)e(to)i(b)r(elong)f(to)g(the)h(en)n(tire)f(Sc)n(heme)g(com-)1933 +250 y(m)n(unit)n(y)-7 b(,)22 b(and)e(so)f(w)n(e)g(gran)n(t)g(p)r +(ermission)g(to)h(cop)n(y)f(it)h(in)g(whole)g(or)f(in)1933 +350 y(part)h(without)g(fee.)35 b(In)20 b(particular,)g(w)n(e)g +(encourage)e(implemen)n(tors)1933 449 y(of)k(Sc)n(heme)g(to)f(use)h +(this)g(rep)r(ort)f(as)g(a)g(starting)g(p)r(oin)n(t)h(for)f(man)n(uals) +1933 549 y(and)28 b(other)f(do)r(cumen)n(tation,)g(mo)r(difying)h(it)g +(as)f(necessary)-7 b(.)1933 806 y Fv(Ac)m(kno)m(wledgemen)m(ts)1933 +983 y Fy(W)g(e)48 b(w)n(ould)f(lik)n(e)h(to)f(thank)h(the)g(follo)n +(wing)e(p)r(eople)i(for)f(their)1933 1083 y(help:)36 +b(Alan)25 b(Ba)n(wden,)f(Mic)n(hael)h(Blair,)f(George)f(Carrette,)i +(Andy)1933 1182 y(Cromart)n(y)-7 b(,)35 b(P)n(a)n(v)n(el)e(Curtis,)j +(Je\013)f(Dalton,)i(Olivier)c(Dan)n(vy)-7 b(,)36 b(Ken)1933 +1282 y(Dic)n(k)n(ey)-7 b(,)25 b(Bruce)e(Duba,)j(Marc)d(F)-7 +b(eeley)g(,)25 b(Andy)g(F)-7 b(reeman,)24 b(Ric)n(hard)1933 +1382 y(Gabriel,)52 b(Y)-7 b(ekta)48 b(G)r(\177)-44 b(ursel,)52 +b(Ken)47 b(Haase,)52 b(Rob)r(ert)47 b(Hieb,)53 b(P)n(aul)1933 +1481 y(Hudak,)45 b(Morry)40 b(Katz,)k(Chris)d(Lindblad,)k(Mark)40 +b(Mey)n(er,)k(Jim)1933 1581 y(Miller,)28 b(Jim)g(Philbin,)g(John)f +(Ramsdell,)h(Mik)n(e)f(Sha\013,)h(Jonathan)1933 1681 +y(Shapiro,)c(Julie)f(Sussman,)h(P)n(erry)e(W)-7 b(agle,)23 +b(Daniel)h(W)-7 b(eise,)24 b(Henry)1933 1780 y(W)-7 b(u,)36 +b(and)d(Ozan)f(Yigit.)54 b(W)-7 b(e)34 b(thank)f(Carol)f(F)-7 +b(essenden,)35 b(Daniel)1933 1880 y(F)-7 b(riedman,)36 +b(and)e(Christopher)g(Ha)n(ynes)f(for)h(p)r(ermission)g(to)g(use)1933 +1979 y(text)48 b(from)f(the)h(Sc)n(heme)f(311)f(v)n(ersion)g(4)h +(reference)g(man)n(ual.)1933 2079 y(W)-7 b(e)39 b(thank)e(T)-7 +b(exas)37 b(Instrumen)n(ts,)k(Inc.)d(for)f(p)r(ermission)g(to)h(use) +1933 2179 y(text)29 b(from)f(the)h Fw(TI)i(Scheme)h(L)l(anguage)f(R)l +(efer)l(enc)l(e)f(Manual)p Fy([30].)1933 2278 y(W)-7 +b(e)33 b(gladly)f(ac)n(kno)n(wledge)e(the)j(in\015uence)g(of)f(man)n +(uals)g(for)g(MIT)1933 2378 y(Sc)n(heme[17)o(],)42 b(T[22)o(],)g(Sc)n +(heme)c(84[11)n(],Common)h(Lisp[27)o(],)i(and)1933 2478 +y(Algol)27 b(60[18)n(].)1933 2619 y(W)-7 b(e)27 b(also)e(thank)h(Bett)n +(y)g(Dexter)g(for)g(the)g(extreme)g(e\013ort)g(she)g(put)1933 +2718 y(in)n(to)i(setting)g(this)g(rep)r(ort)f(in)h(T)2932 +2736 y(E)2978 2718 y(X,)h(and)e(Donald)h(Kn)n(uth)g(for)f(de-)1933 +2818 y(signing)g(the)h(program)e(that)i(caused)e(her)i(troubles.)1933 +2959 y(The)22 b(Arti\014cial)f(In)n(telligence)g(Lab)r(oratory)e(of)i +(the)h(Massac)n(h)n(usetts)1933 3059 y(Institute)g(of)f(T)-7 +b(ec)n(hnology)g(,)21 b(the)g(Computer)g(Science)g(Departmen)n(t)1933 +3158 y(of)29 b(Indiana)f(Univ)n(ersit)n(y)-7 b(,)29 b(the)g(Computer)g +(and)f(Information)g(Sci-)1933 3258 y(ences)40 b(Departmen)n(t)h(of)f +(the)h(Univ)n(ersit)n(y)f(of)g(Oregon,)i(and)f(the)1933 +3358 y(NEC)28 b(Researc)n(h)f(Institute)h(supp)r(orted)g(the)h +(preparation)d(of)i(this)1933 3457 y(rep)r(ort.)35 b(Supp)r(ort)25 +b(for)f(the)h(MIT)g(w)n(ork)e(w)n(as)g(pro)n(vided)h(in)g(part)g(b)n(y) +1933 3557 y(the)19 b(Adv)-5 b(anced)19 b(Researc)n(h)f(Pro)5 +b(jects)17 b(Agency)h(of)h(the)g(Departmen)n(t)1933 3657 +y(of)h(Defense)g(under)g(O\016ce)f(of)h(Na)n(v)-5 b(al)19 +b(Researc)n(h)f(con)n(tract)h(N00014-)1933 3756 y(80-C-0505.)53 +b(Supp)r(ort)34 b(for)f(the)h(Indiana)g(Univ)n(ersit)n(y)f(w)n(ork)f(w) +n(as)1933 3856 y(pro)n(vided)23 b(b)n(y)g(NSF)i(gran)n(ts)d(NCS)i +(83-04567)c(and)k(NCS)g(83-03325.)p eop +%%Page: 3 3 +3 2 bop 3057 -125 a Fy(1.)64 b(Ov)n(erview)26 b(of)i(Sc)n(heme)83 +b(3)892 68 y Fu(DESCRIPTION)35 b(OF)j(THE)e(LANGUA)m(GE)-300 +250 y(1.)162 b(Ov)m(erview)37 b(of)h(Sc)m(heme)-300 409 +y(1.1.)56 b(Seman)m(tics)-300 623 y Fy(This)34 b(section)f(giv)n(es)g +(an)g(o)n(v)n(erview)f(of)i(Sc)n(heme's)g(seman)n(tics.)54 +b(A)-300 723 y(detailed)41 b(informal)f(seman)n(tics)g(is)h(the)h(sub)5 +b(ject)41 b(of)f(c)n(hapters)g(3)-300 822 y(through)31 +b(6.)51 b(F)-7 b(or)31 b(reference)h(purp)r(oses,)g(section)g(7.2)f +(pro)n(vides)g(a)-300 922 y(formal)c(seman)n(tics)g(of)g(Sc)n(heme.) +-300 1064 y(F)-7 b(ollo)n(wing)38 b(Algol,)j(Sc)n(heme)e(is)g(a)g +(statically)f(scop)r(ed)h(program-)-300 1164 y(ming)26 +b(language.)35 b(Eac)n(h)25 b(use)h(of)h(a)f(v)-5 b(ariable)25 +b(is)h(asso)r(ciated)f(with)i(a)-300 1263 y(lexically)g(apparen)n(t)f +(binding)i(of)g(that)g(v)-5 b(ariable.)-300 1405 y(Sc)n(heme)37 +b(has)g(laten)n(t)g(as)f(opp)r(osed)h(to)g(manifest)g(t)n(yp)r(es.)65 +b(T)n(yp)r(es)-300 1505 y(are)23 b(asso)r(ciated)g(with)i(v)-5 +b(alues)23 b(\(also)h(called)g(ob)5 b(jects\))24 b(rather)f(than)-300 +1605 y(with)45 b(v)-5 b(ariables.)88 b(\(Some)45 b(authors)e(refer)i +(to)f(languages)f(with)-300 1704 y(laten)n(t)d(t)n(yp)r(es)h(as)f(w)n +(eakly)f(t)n(yp)r(ed)i(or)f(dynamically)g(t)n(yp)r(ed)g(lan-)-300 +1804 y(guages.\))95 b(Other)47 b(languages)f(with)i(laten)n(t)f(t)n(yp) +r(es)h(are)e(APL,)-300 1904 y(Snob)r(ol,)30 b(and)f(other)g(dialects)h +(of)f(Lisp.)43 b(Languages)27 b(with)j(mani-)-300 2003 +y(fest)24 b(t)n(yp)r(es)g(\(sometimes)g(referred)f(to)g(as)h(strongly)e +(t)n(yp)r(ed)i(or)f(stat-)-300 2103 y(ically)k(t)n(yp)r(ed)h +(languages\))e(include)i(Algol)f(60,)g(P)n(ascal,)e(and)j(C.)-300 +2245 y(All)c(ob)5 b(jects)23 b(created)g(in)g(the)h(course)e(of)i(a)f +(Sc)n(heme)g(computation,)-300 2345 y(including)e(pro)r(cedures)e(and)i +(con)n(tin)n(uations,)g(ha)n(v)n(e)f(unlimited)h(ex-)-300 +2444 y(ten)n(t.)36 b(No)25 b(Sc)n(heme)g(ob)5 b(ject)24 +b(is)h(ev)n(er)e(destro)n(y)n(ed.)35 b(The)24 b(reason)g(that)-300 +2544 y(implemen)n(tations)39 b(of)f(Sc)n(heme)h(do)g(not)f +(\(usually!\))h(run)g(out)g(of)-300 2643 y(storage)32 +b(is)h(that)h(they)g(are)e(p)r(ermitted)j(to)e(reclaim)g(the)h(storage) +-300 2743 y(o)r(ccupied)j(b)n(y)g(an)h(ob)5 b(ject)37 +b(if)g(they)h(can)f(pro)n(v)n(e)f(that)h(the)h(ob)5 b(ject)-300 +2843 y(cannot)28 b(p)r(ossibly)h(matter)f(to)h(an)n(y)f(future)h +(computation.)40 b(Other)-300 2942 y(languages)25 b(in)i(whic)n(h)f +(most)h(ob)5 b(jects)26 b(ha)n(v)n(e)f(unlimited)j(exten)n(t)f(in-)-300 +3042 y(clude)h(APL)f(and)h(other)f(Lisp)g(dialects.)-300 +3184 y(Implemen)n(tations)42 b(of)g(Sc)n(heme)g(are)f(required)g(to)g +(b)r(e)i(prop)r(erly)-300 3284 y(tail-recursiv)n(e.)75 +b(This)41 b(allo)n(ws)f(the)h(execution)g(of)g(an)g(iterativ)n(e)-300 +3383 y(computation)20 b(in)h(constan)n(t)f(space,)h(ev)n(en)f(if)h(the) +g(iterativ)n(e)e(compu-)-300 3483 y(tation)30 b(is)g(describ)r(ed)g(b)n +(y)g(a)g(syn)n(tactically)f(recursiv)n(e)g(pro)r(cedure.)-300 +3583 y(Th)n(us)35 b(with)g(a)f(prop)r(erly)g(tail-recursiv)n(e)f +(implemen)n(tation,)j(iter-)-300 3682 y(ation)f(can)g(b)r(e)g +(expressed)g(using)f(the)i(ordinary)e(pro)r(cedure-call)-300 +3782 y(mec)n(hanics,)i(so)f(that)g(sp)r(ecial)g(iteration)g(constructs) +f(are)g(useful)-300 3882 y(only)27 b(as)g(syn)n(tactic)g(sugar.)35 +b(See)28 b(section)f(3.5.)-300 4024 y(Sc)n(heme)39 b(pro)r(cedures)e +(are)h(ob)5 b(jects)38 b(in)h(their)f(o)n(wn)g(righ)n(t.)70 +b(Pro-)-300 4123 y(cedures)31 b(can)g(b)r(e)g(created)g(dynamically)-7 +b(,)32 b(stored)e(in)i(data)f(struc-)-300 4223 y(tures,)e(returned)f +(as)h(results)f(of)h(pro)r(cedures,)f(and)h(so)f(on.)40 +b(Other)-300 4323 y(languages)23 b(with)i(these)g(prop)r(erties)f +(include)i(Common)e(Lisp)h(and)-300 4422 y(ML.)-300 4564 +y(One)d(distinguishing)f(feature)h(of)f(Sc)n(heme)h(is)g(that)g(con)n +(tin)n(uations,)-300 4664 y(whic)n(h)41 b(in)g(most)f(other)h +(languages)d(only)j(op)r(erate)f(b)r(ehind)h(the)-300 +4764 y(scenes,)i(also)c(ha)n(v)n(e)g(\\\014rst-class")f(status.)75 +b(Con)n(tin)n(uations)39 b(are)-300 4863 y(useful)25 +b(for)g(implemen)n(ting)g(a)g(wide)g(v)-5 b(ariet)n(y)24 +b(of)h(adv)-5 b(anced)24 b(con)n(trol)-300 4963 y(constructs,)50 +b(including)c(non-lo)r(cal)f(exits,)50 b(bac)n(ktrac)n(king,)e(and)-300 +5062 y(coroutines.)36 b(See)27 b(section)g(6.4.)-300 +5205 y(Argumen)n(ts)43 b(to)g(Sc)n(heme)g(pro)r(cedures)g(are)f(alw)n +(a)n(ys)f(passed)i(b)n(y)-300 5304 y(v)-5 b(alue,)33 +b(whic)n(h)f(means)f(that)h(the)g(actual)g(argumen)n(t)f(expressions) +-300 5404 y(are)e(ev)-5 b(aluated)29 b(b)r(efore)g(the)i(pro)r(cedure)d +(gains)h(con)n(trol,)g(whether)-300 5504 y(the)39 b(pro)r(cedure)e +(needs)i(the)g(result)f(of)g(the)h(ev)-5 b(aluation)38 +b(or)g(not.)1933 250 y(ML,)h(C,)f(and)g(APL)g(are)f(three)h(other)f +(languages)g(that)h(alw)n(a)n(ys)1933 350 y(pass)c(argumen)n(ts)f(b)n +(y)h(v)-5 b(alue.)58 b(This)34 b(is)h(distinct)g(from)f(the)h(lazy-) +1933 449 y(ev)-5 b(aluation)40 b(seman)n(tics)g(of)h(Hask)n(ell,)j(or) +39 b(the)j(call-b)n(y-name)d(se-)1933 549 y(man)n(tics)30 +b(of)g(Algol)g(60,)g(where)f(an)h(argumen)n(t)f(expression)g(is)h(not) +1933 649 y(ev)-5 b(aluated)28 b(unless)f(its)h(v)-5 b(alue)27 +b(is)h(needed)f(b)n(y)h(the)g(pro)r(cedure.)1933 792 +y(Sc)n(heme's)h(mo)r(del)h(of)f(arithmetic)g(is)g(designed)g(to)g +(remain)g(as)f(in-)1933 892 y(dep)r(enden)n(t)23 b(as)e(p)r(ossible)h +(of)g(the)h(particular)d(w)n(a)n(ys)h(in)h(whic)n(h)g(n)n(um-)1933 +991 y(b)r(ers)28 b(are)f(represen)n(ted)g(within)i(a)f(computer.)38 +b(In)28 b(Sc)n(heme,)g(ev)n(ery)1933 1091 y(in)n(teger)j(is)h(a)g +(rational)f(n)n(um)n(b)r(er,)i(ev)n(ery)e(rational)f(is)i(a)g(real,)g +(and)1933 1191 y(ev)n(ery)e(real)g(is)h(a)g(complex)f(n)n(um)n(b)r(er.) +47 b(Th)n(us)31 b(the)h(distinction)f(b)r(e-)1933 1290 +y(t)n(w)n(een)j(in)n(teger)g(and)g(real)g(arithmetic,)i(so)e(imp)r +(ortan)n(t)g(to)h(man)n(y)1933 1390 y(programming)21 +b(languages,)h(do)r(es)h(not)f(app)r(ear)g(in)i(Sc)n(heme.)35 +b(In)23 b(its)1933 1490 y(place)k(is)f(a)g(distinction)h(b)r(et)n(w)n +(een)g(exact)f(arithmetic,)h(whic)n(h)f(cor-)1933 1589 +y(resp)r(onds)20 b(to)h(the)g(mathematical)f(ideal,)i(and)f(inexact)f +(arithmetic)1933 1689 y(on)28 b(appro)n(ximations.)35 +b(As)28 b(in)h(Common)e(Lisp,)h(exact)f(arithmetic)1933 +1788 y(is)h(not)f(limited)i(to)e(in)n(tegers.)1933 2079 +y Fu(1.2.)57 b(Syn)m(tax)1933 2295 y Fy(Sc)n(heme,)31 +b(lik)n(e)f(most)g(dialects)g(of)g(Lisp,)h(emplo)n(ys)f(a)f(fully)i +(paren-)1933 2394 y(thesized)23 b(pre\014x)f(notation)g(for)g(programs) +f(and)h(\(other\))h(data;)h(the)1933 2494 y(grammar)36 +b(of)h(Sc)n(heme)h(generates)e(a)h(sublanguage)f(of)i(the)g(lan-)1933 +2593 y(guage)18 b(used)h(for)g(data.)33 b(An)20 b(imp)r(ortan)n(t)f +(consequence)f(of)h(this)g(sim-)1933 2693 y(ple,)29 b(uniform)f +(represen)n(tation)e(is)i(the)g(susceptibilit)n(y)g(of)g(Sc)n(heme)1933 +2793 y(programs)d(and)h(data)g(to)h(uniform)f(treatmen)n(t)h(b)n(y)f +(other)g(Sc)n(heme)1933 2892 y(programs.)62 b(F)-7 b(or)36 +b(example,)j(the)e Fq(eval)e Fy(pro)r(cedure)h(ev)-5 +b(aluates)36 b(a)1933 2992 y(Sc)n(heme)28 b(program)d(expressed)i(as)g +(data.)1933 3135 y(The)34 b Fq(read)f Fy(pro)r(cedure)g(p)r(erforms)g +(syn)n(tactic)h(as)f(w)n(ell)h(as)g(lexical)1933 3235 +y(decomp)r(osition)g(of)h(the)g(data)g(it)g(reads.)57 +b(The)35 b Fq(read)e Fy(pro)r(cedure)1933 3335 y(parses)27 +b(its)g(input)i(as)e(data)g(\(section)g(7.1.2\),)g(not)g(as)g(program.) +1933 3478 y(The)h(formal)f(syn)n(tax)f(of)i(Sc)n(heme)f(is)h(describ)r +(ed)f(in)h(section)f(7.1.)1933 3768 y Fu(1.3.)57 b(Notation)36 +b(and)i(terminology)1933 3984 y Fv(1.3.1.)46 b(Primitiv)m(e,)29 +b(library)-8 b(,)32 b(and)h(optional)e(features)1933 +4165 y Fy(It)21 b(is)g(required)f(that)h(ev)n(ery)f(implemen)n(tation)h +(of)g(Sc)n(heme)f(supp)r(ort)1933 4264 y(all)29 b(features)f(that)g +(are)g(not)h(mark)n(ed)e(as)h(b)r(eing)h Fw(optional)p +Fy(.)41 b(Imple-)1933 4364 y(men)n(tations)e(are)e(free)i(to)f(omit)h +(optional)f(features)h(of)f(Sc)n(heme)1933 4463 y(or)e(to)g(add)g +(extensions,)i(pro)n(vided)e(the)g(extensions)g(are)f(not)i(in)1933 +4563 y(con\015ict)j(with)h(the)f(language)e(rep)r(orted)h(here.)73 +b(In)40 b(particular,)1933 4663 y(implemen)n(tations)26 +b(m)n(ust)h(supp)r(ort)f(p)r(ortable)f(co)r(de)i(b)n(y)f(pro)n(viding) +1933 4762 y(a)32 b(syn)n(tactic)g(mo)r(de)h(that)f(preempts)h(no)f +(lexical)f(con)n(v)n(en)n(tions)g(of)1933 4862 y(this)d(rep)r(ort.)1933 +5005 y(T)-7 b(o)31 b(aid)g(in)g(understanding)g(and)f(implemen)n(ting)i +(Sc)n(heme,)g(some)1933 5105 y(features)c(are)f(mark)n(ed)g(as)h +Fw(libr)l(ary)p Fy(.)40 b(These)28 b(can)g(b)r(e)h(easily)e(imple-)1933 +5205 y(men)n(ted)c(in)g(terms)g(of)g(the)g(other,)g(primitiv)n(e,)h +(features.)34 b(They)23 b(are)1933 5304 y(redundan)n(t)h(in)g(the)g +(strict)f(sense)g(of)h(the)g(w)n(ord,)f(but)i(they)f(capture)1933 +5404 y(common)32 b(patterns)g(of)h(usage,)f(and)g(are)g(therefore)f +(pro)n(vided)h(as)1933 5504 y(con)n(v)n(enien)n(t)27 +b(abbreviations.)p eop +%%Page: 4 4 +4 3 bop -300 -125 a Fy(4)83 b(Revised)106 -156 y Fr(5)170 +-125 y Fy(Sc)n(heme)-300 82 y Fv(1.3.2.)46 b(Error)32 +b(situations)e(and)j(unsp)s(eci\014ed)e(b)s(eha)m(vior)-300 +255 y Fy(When)h(sp)r(eaking)f(of)g(an)h(error)d(situation,)k(this)e +(rep)r(ort)g(uses)g(the)-300 355 y(phrase)h(\\an)h(error)e(is)i +(signalled")f(to)h(indicate)g(that)h(implemen-)-300 455 +y(tations)c(m)n(ust)g(detect)g(and)g(rep)r(ort)f(the)h(error.)42 +b(If)31 b(suc)n(h)e(w)n(ording)-300 554 y(do)r(es)g(not)h(app)r(ear)e +(in)i(the)g(discussion)e(of)i(an)f(error,)f(then)i(imple-)-300 +654 y(men)n(tations)g(are)f(not)h(required)f(to)i(detect)f(or)g(rep)r +(ort)f(the)i(error,)-300 753 y(though)i(they)g(are)f(encouraged)f(to)i +(do)f(so.)53 b(An)33 b(error)e(situation)-300 853 y(that)d(implemen)n +(tations)g(are)e(not)i(required)f(to)g(detect)i(is)e(usually)-300 +953 y(referred)f(to)i(simply)g(as)e(\\an)h(error.")-300 +1090 y(F)-7 b(or)25 b(example,)h(it)g(is)g(an)f(error)f(for)h(a)h(pro)r +(cedure)e(to)i(b)r(e)g(passed)f(an)-300 1190 y(argumen)n(t)30 +b(that)i(the)f(pro)r(cedure)g(is)g(not)g(explicitly)g(sp)r(eci\014ed)h +(to)-300 1289 y(handle,)h(ev)n(en)e(though)g(suc)n(h)g(domain)h(errors) +d(are)i(seldom)g(men-)-300 1389 y(tioned)e(in)g(this)g(rep)r(ort.)40 +b(Implemen)n(tations)29 b(ma)n(y)f(extend)h(a)g(pro-)-300 +1489 y(cedure's)e(domain)g(of)h(de\014nition)g(to)f(include)h(suc)n(h)f +(argumen)n(ts.)-300 1626 y(This)i(rep)r(ort)g(uses)g(the)g(phrase)f +(\\ma)n(y)g(rep)r(ort)h(a)g(violation)f(of)h(an)-300 +1726 y(implemen)n(tation)h(restriction")e(to)h(indicate)h +(circumstances)f(un-)-300 1825 y(der)k(whic)n(h)g(an)g(implemen)n +(tation)h(is)f(p)r(ermitted)h(to)f(rep)r(ort)g(that)-300 +1925 y(it)26 b(is)g(unable)g(to)g(con)n(tin)n(ue)f(execution)h(of)g(a)f +(correct)g(program)f(b)r(e-)-300 2025 y(cause)29 b(of)h(some)f +(restriction)f(imp)r(osed)i(b)n(y)g(the)g(implemen)n(tation.)-300 +2124 y(Implemen)n(tation)c(restrictions)f(are)g(of)h(course)f +(discouraged,)f(but)-300 2224 y(implemen)n(tations)f(are)f(encouraged)f +(to)h(rep)r(ort)g(violations)g(of)h(im-)-300 2323 y(plemen)n(tation)k +(restrictions.)-300 2461 y(F)-7 b(or)26 b(example,)g(an)h(implemen)n +(tation)f(ma)n(y)g(rep)r(ort)g(a)g(violation)g(of)-300 +2560 y(an)35 b(implemen)n(tation)g(restriction)f(if)h(it)h(do)r(es)f +(not)g(ha)n(v)n(e)e(enough)-300 2660 y(storage)26 b(to)h(run)h(a)f +(program.)-300 2797 y(If)36 b(the)h(v)-5 b(alue)36 b(of)g(an)f +(expression)g(is)h(said)f(to)h(b)r(e)g(\\unsp)r(eci\014ed,")-300 +2897 y(then)29 b(the)f(expression)f(m)n(ust)h(ev)-5 b(aluate)27 +b(to)h(some)g(ob)5 b(ject)27 b(without)-300 2997 y(signalling)35 +b(an)i(error,)f(but)h(the)g(v)-5 b(alue)37 b(dep)r(ends)g(on)f(the)h +(imple-)-300 3096 y(men)n(tation;)e(this)f(rep)r(ort)e(explicitly)h(do) +r(es)f(not)h(sa)n(y)f(what)h(v)-5 b(alue)-300 3196 y(should)27 +b(b)r(e)h(returned.)-300 3448 y Fv(1.3.3.)46 b(En)m(try)32 +b(format)-300 3621 y Fy(Chapters)20 b(4)h(and)g(6)g(are)f(organized)g +(in)n(to)g(en)n(tries.)34 b(Eac)n(h)20 b(en)n(try)h(de-)-300 +3721 y(scrib)r(es)j(one)h(language)e(feature)h(or)g(a)h(group)e(of)i +(related)f(features,)-300 3820 y(where)h(a)g(feature)g(is)g(either)g(a) +g(syn)n(tactic)g(construct)g(or)f(a)h(built-in)-300 3920 +y(pro)r(cedure.)36 b(An)28 b(en)n(try)f(b)r(egins)h(with)g(one)f(or)g +(more)g(header)g(lines)-300 4020 y(of)h(the)g(form)-300 +4157 y Fw(template)1503 b(c)l(ate)l(gory)-300 4294 y +Fy(for)27 b(required,)g(primitiv)n(e)g(features,)g(or)-300 +4432 y Fw(template)1174 b(quali\014er)38 b(c)l(ate)l(gory)-300 +4569 y Fy(where)27 b Fw(quali\014er)37 b Fy(is)28 b(either)f +(\\library")f(or)h(\\optional")e(as)i(de\014ned)-300 +4669 y(in)h(section)f(1.3.1.)-300 4806 y(If)33 b Fw(c)l(ate)l(gory)41 +b Fy(is)32 b(\\syn)n(tax",)g(the)g(en)n(try)g(describ)r(es)g(an)g +(expression)-300 4906 y(t)n(yp)r(e,)f(and)g(the)g(template)f(giv)n(es)g +(the)h(syn)n(tax)e(of)h(the)h(expression)-300 5005 y(t)n(yp)r(e.)59 +b(Comp)r(onen)n(ts)35 b(of)g(expressions)e(are)h(designated)h(b)n(y)f +(syn-)-300 5105 y(tactic)40 b(v)-5 b(ariables,)41 b(whic)n(h)f(are)f +(written)h(using)g(angle)f(brac)n(k)n(ets,)-300 5205 +y(for)c(example,)h Fp(h)p Fy(expression)p Fp(i)o Fy(,)h +Fp(h)p Fy(v)-5 b(ariable)p Fp(i)p Fy(.)59 b(Syn)n(tactic)35 +b(v)-5 b(ariables)-300 5304 y(should)25 b(b)r(e)g(understo)r(o)r(d)g +(to)g(denote)g(segmen)n(ts)f(of)h(program)e(text;)-300 +5404 y(for)31 b(example,)i Fp(h)p Fy(expression)p Fp(i)e +Fy(stands)g(for)g(an)n(y)g(string)g(of)h(c)n(harac-)-300 +5504 y(ters)22 b(whic)n(h)h(is)g(a)g(syn)n(tactically)f(v)-5 +b(alid)22 b(expression.)34 b(The)23 b(notation)2099 82 +y Fp(h)p Fy(thing)2320 94 y Fr(1)2358 82 y Fp(i)28 b +Fo(:)14 b(:)g(:)1933 219 y Fy(indicates)28 b(zero)e(or)h(more)g(o)r +(ccurrences)f(of)h(a)g Fp(h)p Fy(thing)p Fp(i)q Fy(,)h(and)2099 +355 y Fp(h)p Fy(thing)2320 367 y Fr(1)2358 355 y Fp(i)g(h)p +Fy(thing)2639 367 y Fr(2)2677 355 y Fp(i)g Fo(:)14 b(:)g(:)1933 +492 y Fy(indicates)28 b(one)f(or)g(more)f(o)r(ccurrences)g(of)i(a)f +Fp(h)p Fy(thing)p Fp(i)q Fy(.)1933 629 y(If)h Fw(c)l(ate)l(gory)37 +b Fy(is)27 b(\\pro)r(cedure",)f(then)i(the)h(en)n(try)e(describ)r(es)g +(a)g(pro-)1933 728 y(cedure,)21 b(and)f(the)h(header)e(line)h(giv)n(es) +f(a)g(template)h(for)g(a)f(call)h(to)g(the)1933 828 y(pro)r(cedure.)35 +b(Argumen)n(t)23 b(names)f(in)i(the)f(template)h(are)e +Fw(italicize)l(d)11 b Fy(.)1933 928 y(Th)n(us)28 b(the)g(header)e(line) +1933 1064 y Fq(\(vector-ref)39 b Fw(ve)l(ctor)53 b(k)9 +b Fq(\))869 b Fy(pro)r(cedure)1933 1201 y(indicates)21 +b(that)g(the)h(built-in)f(pro)r(cedure)f Fq(vector-ref)d +Fy(tak)n(es)j(t)n(w)n(o)1933 1301 y(argumen)n(ts,)31 +b(a)g(v)n(ector)f Fw(ve)l(ctor)40 b Fy(and)31 b(an)g(exact)g +(non-negativ)n(e)e(in-)1933 1400 y(teger)e Fw(k)37 b +Fy(\(see)27 b(b)r(elo)n(w\).)37 b(The)28 b(header)f(lines)1933 +1537 y Fq(\(make-vector)39 b Fw(k)9 b Fq(\))1093 b Fy(pro)r(cedure)1933 +1636 y Fq(\(make-vector)39 b Fw(k)53 b(\014l)t(l)9 b +Fq(\))947 b Fy(pro)r(cedure)1933 1773 y(indicate)28 b(that)h(the)f +Fq(make-vector)23 b Fy(pro)r(cedure)k(m)n(ust)h(b)r(e)h(de\014ned)1933 +1873 y(to)f(tak)n(e)f(either)g(one)g(or)g(t)n(w)n(o)g(argumen)n(ts.) +1933 2009 y(It)i(is)f(an)h(error)d(for)i(an)g(op)r(eration)f(to)i(b)r +(e)f(presen)n(ted)g(with)h(an)f(ar-)1933 2109 y(gumen)n(t)c(that)g(it)h +(is)f(not)g(sp)r(eci\014ed)g(to)g(handle.)35 b(F)-7 b(or)23 +b(succinctness,)1933 2209 y(w)n(e)28 b(follo)n(w)f(the)h(con)n(v)n(en)n +(tion)e(that)i(if)h(an)e(argumen)n(t)g(name)h(is)f(also)1933 +2308 y(the)36 b(name)e(of)h(a)g(t)n(yp)r(e)g(listed)g(in)g(section)g +(3.2,)h(then)f(that)h(argu-)1933 2408 y(men)n(t)26 b(m)n(ust)f(b)r(e)g +(of)g(the)g(named)g(t)n(yp)r(e.)36 b(F)-7 b(or)25 b(example,)g(the)g +(header)1933 2507 y(line)k(for)e Fq(vector-ref)d Fy(giv)n(en)j(ab)r(o)n +(v)n(e)g(dictates)h(that)g(the)h(\014rst)e(ar-)1933 2607 +y(gumen)n(t)36 b(to)g Fq(vector-ref)c Fy(m)n(ust)k(b)r(e)g(a)g(v)n +(ector.)60 b(The)36 b(follo)n(wing)1933 2707 y(naming)27 +b(con)n(v)n(en)n(tions)f(also)h(imply)h(t)n(yp)r(e)g(restrictions:)2052 +2873 y Fw(obj)812 b Fy(an)n(y)27 b(ob)5 b(ject)2052 2972 +y Fo(l)r(ist)o Fy(,)27 b Fo(l)r(ist)2351 2984 y Fr(1)2387 +2972 y Fy(,)h Fo(:)14 b(:)g(:)28 b(l)r(ist)2688 2984 +y Fn(j)2722 2972 y Fy(,)f Fo(:)14 b(:)g(:)100 b Fy(list)28 +b(\(see)f(section)g(6.3.2\))2052 3072 y Fo(z)s Fy(,)h +Fo(z)2184 3084 y Fr(1)2220 3072 y Fy(,)g Fo(:)14 b(:)g(:)28 +b(z)2435 3084 y Fn(j)2469 3072 y Fy(,)g Fo(:)14 b(:)g(:)352 +b Fy(complex)27 b(n)n(um)n(b)r(er)2052 3172 y Fo(x)p +Fy(,)h Fo(x)2197 3184 y Fr(1)2234 3172 y Fy(,)g Fo(:)14 +b(:)g(:)28 b(x)2457 3184 y Fn(j)2492 3172 y Fy(,)g Fo(:)14 +b(:)g(:)329 b Fy(real)26 b(n)n(um)n(b)r(er)2052 3271 +y Fo(y)r Fy(,)i Fo(y)2187 3283 y Fr(1)2224 3271 y Fy(,)g +Fo(:)14 b(:)g(:)27 b(y)2440 3283 y Fn(j)2475 3271 y Fy(,)h +Fo(:)14 b(:)g(:)346 b Fy(real)26 b(n)n(um)n(b)r(er)2052 +3371 y Fo(q)s Fy(,)h Fo(q)2179 3383 y Fr(1)2217 3371 +y Fy(,)g Fo(:)14 b(:)g(:)28 b(q)2429 3383 y Fn(j)2464 +3371 y Fy(,)g Fo(:)14 b(:)g(:)357 b Fy(rational)26 b(n)n(um)n(b)r(er) +2052 3470 y Fo(n)o Fy(,)i Fo(n)2202 3482 y Fr(1)2239 +3470 y Fy(,)g Fo(:)14 b(:)g(:)28 b(n)2465 3482 y Fn(j)2499 +3470 y Fy(,)g Fo(:)14 b(:)g(:)322 b Fy(in)n(teger)2052 +3570 y Fo(k)r Fy(,)28 b Fo(k)2191 3582 y Fr(1)2229 3570 +y Fy(,)f Fo(:)14 b(:)g(:)28 b(k)2447 3582 y Fn(j)2482 +3570 y Fy(,)g Fo(:)14 b(:)g(:)339 b Fy(exact)27 b(non-negativ)n(e)f(in) +n(teger)1933 3817 y Fv(1.3.4.)46 b(Ev)-5 b(aluation)31 +b(examples)1933 3990 y Fy(The)38 b(sym)n(b)r(ol)g(\\=)-14 +b Fp(\))p Fy(")37 b(used)h(in)g(program)e(examples)i(should)g(b)r(e) +1933 4089 y(read)27 b(\\ev)-5 b(aluates)26 b(to.")37 +b(F)-7 b(or)27 b(example,)2090 4232 y Fm(\(*)40 b(5)f(8\))825 +b Fl(=)-13 b Fk(\))78 b Fm(40)1933 4383 y Fy(means)38 +b(that)g(the)g(expression)e Fq(\(*)43 b(5)g(8\))37 b +Fy(ev)-5 b(aluates)37 b(to)h(the)g(ob-)1933 4482 y(ject)d +Fq(40)p Fy(.)57 b(Or,)36 b(more)d(precisely:)50 b(the)35 +b(expression)e(giv)n(en)h(b)n(y)g(the)1933 4582 y(sequence)d(of)g(c)n +(haracters)e(\\)p Fq(\(*)42 b(5)h(8\))p Fy(")30 b(ev)-5 +b(aluates,)32 b(in)f(the)h(initial)1933 4682 y(en)n(vironmen)n(t,)d(to) +h(an)f(ob)5 b(ject)29 b(that)h(ma)n(y)f(b)r(e)h(represen)n(ted)e +(exter-)1933 4781 y(nally)k(b)n(y)g(the)h(sequence)e(of)h(c)n +(haracters)e(\\)p Fq(40)p Fy(".)49 b(See)32 b(section)g(3.3)1933 +4881 y(for)27 b(a)h(discussion)e(of)i(external)f(represen)n(tations)e +(of)j(ob)5 b(jects.)1933 5132 y Fv(1.3.5.)46 b(Naming)30 +b(con)m(v)m(en)m(tions)1933 5304 y Fy(By)22 b(con)n(v)n(en)n(tion,)g +(the)h(names)f(of)g(pro)r(cedures)f(that)h(alw)n(a)n(ys)f(return)1933 +5404 y(a)33 b(b)r(o)r(olean)g(v)-5 b(alue)33 b(usually)g(end)g(in)g(\\) +p Fq(?)p Fy(".)53 b(Suc)n(h)33 b(pro)r(cedures)f(are)1933 +5504 y(called)c(predicates.)p eop +%%Page: 5 5 +5 4 bop 3083 -125 a Fy(2.)65 b(Lexical)26 b(con)n(v)n(en)n(tions)82 +b(5)-300 82 y(By)31 b(con)n(v)n(en)n(tion,)f(the)h(names)g(of)f(pro)r +(cedures)g(that)h(store)f(v)-5 b(alues)-300 182 y(in)n(to)24 +b(previously)f(allo)r(cated)g(lo)r(cations)g(\(see)h(section)g(3.4\))f +(usually)-300 281 y(end)37 b(in)h(\\)p Fq(!)p Fy(".)63 +b(Suc)n(h)37 b(pro)r(cedures)f(are)g(called)h(m)n(utation)g(pro)r(ce-) +-300 381 y(dures.)59 b(By)35 b(con)n(v)n(en)n(tion,)g(the)h(v)-5 +b(alue)35 b(returned)f(b)n(y)h(a)g(m)n(utation)-300 481 +y(pro)r(cedure)27 b(is)g(unsp)r(eci\014ed.)-300 631 y(By)35 +b(con)n(v)n(en)n(tion,)g(\\)p Fq(->)p Fy(")e(app)r(ears)h(within)i(the) +f(names)g(of)g(pro)r(ce-)-300 730 y(dures)29 b(that)g(tak)n(e)f(an)h +(ob)5 b(ject)29 b(of)g(one)f(t)n(yp)r(e)i(and)f(return)f(an)h(anal-) +-300 830 y(ogous)24 b(ob)5 b(ject)25 b(of)h(another)f(t)n(yp)r(e.)36 +b(F)-7 b(or)25 b(example,)h Fq(list->vector)-300 930 +y Fy(tak)n(es)35 b(a)g(list)i(and)e(returns)g(a)h(v)n(ector)f(whose)g +(elemen)n(ts)h(are)e(the)-300 1029 y(same)27 b(as)g(those)g(of)h(the)g +(list.)-300 1323 y Fu(2.)162 b(Lexical)37 b(con)m(v)m(en)m(tions)-300 +1473 y Fy(This)19 b(section)g(giv)n(es)g(an)g(informal)g(accoun)n(t)f +(of)h(some)g(of)h(the)f(lexical)-300 1572 y(con)n(v)n(en)n(tions)f +(used)i(in)g(writing)f(Sc)n(heme)g(programs.)32 b(F)-7 +b(or)19 b(a)h(formal)-300 1672 y(syn)n(tax)27 b(of)g(Sc)n(heme,)h(see)f +(section)g(7.1.)-300 1822 y(Upp)r(er)37 b(and)g(lo)n(w)n(er)f(case)g +(forms)h(of)g(a)f(letter)h(are)g(nev)n(er)f(distin-)-300 +1922 y(guished)28 b(except)h(within)g(c)n(haracter)d(and)j(string)f +(constan)n(ts.)38 b(F)-7 b(or)-300 2021 y(example,)36 +b Fq(Foo)e Fy(is)g(the)h(same)f(iden)n(ti\014er)h(as)f +Fq(FOO)p Fy(,)g(and)g Fq(#x1AB)f Fy(is)-300 2121 y(the)28 +b(same)f(n)n(um)n(b)r(er)g(as)g Fq(#X1ab)p Fy(.)-300 +2432 y Fu(2.1.)56 b(Iden)m(ti\014ers)-300 2658 y Fy(Most)32 +b(iden)n(ti\014ers)f(allo)n(w)n(ed)g(b)n(y)h(other)f(programming)f +(languages)-300 2757 y(are)d(also)f(acceptable)h(to)h(Sc)n(heme.)37 +b(The)27 b(precise)g(rules)g(for)h(form-)-300 2857 y(ing)23 +b(iden)n(ti\014ers)g(v)-5 b(ary)23 b(among)f(implemen)n(tations)i(of)f +(Sc)n(heme,)h(but)-300 2957 y(in)19 b(all)g(implemen)n(tations)f(a)h +(sequence)f(of)h(letters,)i(digits,)f(and)f(\\ex-)-300 +3056 y(tended)k(alphab)r(etic)g(c)n(haracters")d(that)j(b)r(egins)g +(with)g(a)g(c)n(haracter)-300 3156 y(that)33 b(cannot)f(b)r(egin)h(a)f +(n)n(um)n(b)r(er)g(is)h(an)f(iden)n(ti\014er.)52 b(In)33 +b(addition,)-300 3256 y Fq(+)p Fy(,)i Fq(-)p Fy(,)h(and)e +Fq(...)e Fy(are)i(iden)n(ti\014ers.)55 b(Here)34 b(are)f(some)h +(examples)f(of)-300 3355 y(iden)n(ti\014ers:)-143 3527 +y Fm(lambda)747 b(q)-143 3618 y(list->vector)513 b(soup)-143 +3710 y(+)942 b(V17a)-143 3801 y(<=?)864 b(a34kTMNs)-143 +3892 y(the-word-recursion-has-many-m)q(eanin)q(gs)-300 +4073 y Fy(Extended)30 b(alphab)r(etic)g(c)n(haracters)e(ma)n(y)h(b)r(e) +h(used)g(within)h(iden-)-300 4172 y(ti\014ers)h(as)f(if)i(they)f(w)n +(ere)f(letters.)50 b(The)32 b(follo)n(wing)g(are)f(extended)-300 +4272 y(alphab)r(etic)d(c)n(haracters:)-143 4444 y Fm(!)39 +b($)h(\045)f(&)h(*)f(+)h(-)f(.)h(/)f(:)g(<)h(=)f(>)h(?)f(@)h(^)f(_)h(~) +-300 4624 y Fy(See)28 b(section)f(7.1.1)f(for)h(a)g(formal)g(syn)n(tax) +g(of)g(iden)n(ti\014ers.)-300 4774 y(Iden)n(ti\014ers)g(ha)n(v)n(e)g(t) +n(w)n(o)f(uses)i(within)g(Sc)n(heme)f(programs:)-217 +5000 y Fp(\017)41 b Fy(An)n(y)30 b(iden)n(ti\014er)g(ma)n(y)g(b)r(e)g +(used)g(as)g(a)g(v)-5 b(ariable)29 b(or)g(as)h(a)f(syn-)-134 +5099 y(tactic)f(k)n(eyw)n(ord)d(\(see)j(sections)f(3.1)g(and)g(4.3\).) +-217 5284 y Fp(\017)41 b Fy(When)g(an)f(iden)n(ti\014er)h(app)r(ears)e +(as)h(a)g(literal)g(or)g(within)h(a)-134 5383 y(literal)29 +b(\(see)g(section)f(4.1.2\),)h(it)g(is)g(b)r(eing)g(used)g(to)g(denote) +g(a)-134 5483 y Fw(symb)l(ol)f Fy(\(see)g(section)f(6.3.3\).)1933 +82 y Fu(2.2.)57 b(Whitespace)37 b(and)h(commen)m(ts)1933 +303 y Fw(Whitesp)l(ac)l(e)j Fy(c)n(haracters)d(are)h(spaces)g(and)g +(newlines.)74 b(\(Imple-)1933 403 y(men)n(tations)38 +b(t)n(ypically)f(pro)n(vide)g(additional)h(whitespace)g(c)n(har-)1933 +503 y(acters)29 b(suc)n(h)g(as)g(tab)h(or)f(page)f(break.\))43 +b(Whitespace)29 b(is)h(used)g(for)1933 602 y(impro)n(v)n(ed)i +(readabilit)n(y)g(and)h(as)g(necessary)e(to)i(separate)f(tok)n(ens)1933 +702 y(from)h(eac)n(h)g(other,)h(a)f(tok)n(en)g(b)r(eing)g(an)g +(indivisible)h(lexical)e(unit)1933 801 y(suc)n(h)d(as)f(an)h(iden)n +(ti\014er)g(or)f(n)n(um)n(b)r(er,)i(but)f(is)g(otherwise)g +(insigni\014-)1933 901 y(can)n(t.)38 b(Whitespace)28 +b(ma)n(y)f(o)r(ccur)h(b)r(et)n(w)n(een)g(an)n(y)f(t)n(w)n(o)g(tok)n +(ens,)h(but)1933 1001 y(not)35 b(within)h(a)f(tok)n(en.)59 +b(Whitespace)35 b(ma)n(y)f(also)g(o)r(ccur)g(inside)i(a)1933 +1100 y(string,)27 b(where)g(it)h(is)g(signi\014can)n(t.)1933 +1247 y(A)39 b(semicolon)e(\()p Fq(;)p Fy(\))43 b(indicates)38 +b(the)g(start)g(of)g(a)f(commen)n(t.)68 b(The)1933 1347 +y(commen)n(t)40 b(con)n(tin)n(ues)f(to)h(the)g(end)g(of)g(the)g(line)g +(on)g(whic)n(h)g(the)1933 1447 y(semicolon)22 b(app)r(ears.)34 +b(Commen)n(ts)22 b(are)f(in)n(visible)i(to)f(Sc)n(heme,)i(but)1933 +1546 y(the)g(end)g(of)g(the)g(line)f(is)h(visible)f(as)g(whitespace.)35 +b(This)24 b(prev)n(en)n(ts)f(a)1933 1646 y(commen)n(t)31 +b(from)f(app)r(earing)f(in)h(the)h(middle)g(of)g(an)f(iden)n(ti\014er)g +(or)1933 1745 y(n)n(um)n(b)r(er.)2090 1910 y Fm(;;;)40 +b(The)g(FACT)g(procedure)h(computes)g(the)f(factorial)2090 +2001 y(;;;)g(of)g(a)f(non-negative)j(integer.)2090 2092 +y(\(define)f(fact)2169 2184 y(\(lambda)f(\(n\))2247 2275 +y(\(if)g(\(=)g(n)f(0\))2404 2366 y(1)314 b(;Base)40 b(case:)h(return)f +(1)2404 2458 y(\(*)g(n)f(\(fact)i(\(-)e(n)h(1\)\)\)\)\)\))1933 +2759 y Fu(2.3.)57 b(Other)37 b(notations)1933 2980 y +Fy(F)-7 b(or)36 b(a)g(description)g(of)g(the)h(notations)f(used)g(for)g +(n)n(um)n(b)r(ers,)j(see)1933 3080 y(section)27 b(6.2.)1933 +3319 y Fq(.)43 b(+)h(-)d Fy(These)h(are)f(used)h(in)h(n)n(um)n(b)r +(ers,)j(and)c(ma)n(y)g(also)f(o)r(ccur)2099 3419 y(an)n(ywhere)36 +b(in)h(an)g(iden)n(ti\014er)g(except)g(as)f(the)h(\014rst)g(c)n(harac-) +2099 3518 y(ter.)f(A)27 b(delimited)f(plus)g(or)f(min)n(us)h(sign)f(b)n +(y)h(itself)g(is)g(also)e(an)2099 3618 y(iden)n(ti\014er.)38 +b(A)28 b(delimited)h(p)r(erio)r(d)e(\(not)i(o)r(ccurring)d(within)j(a) +2099 3717 y(n)n(um)n(b)r(er)g(or)f(iden)n(ti\014er\))g(is)h(used)g(in)g +(the)g(notation)f(for)g(pairs)2099 3817 y(\(section)k(6.3.2\),)g(and)g +(to)g(indicate)g(a)g(rest-parameter)d(in)k(a)2099 3917 +y(formal)d(parameter)e(list)i(\(section)g(4.1.4\).)44 +b(A)30 b(delimited)h(se-)2099 4016 y(quence)25 b(of)f(three)h +(successiv)n(e)e(p)r(erio)r(ds)i(is)f(also)g(an)g(iden)n(ti\014er.)1933 +4194 y Fq(\()43 b(\))f Fy(P)n(aren)n(theses)27 b(are)h(used)i(for)f +(grouping)f(and)h(to)h(notate)f(lists)2099 4294 y(\(section)f(6.3.2\).) +1933 4472 y Fq(')41 b Fy(The)22 b(single)e(quote)h(c)n(haracter)e(is)i +(used)g(to)g(indicate)g(literal)g(data)2099 4571 y(\(section)28 +b(4.1.2\).)1933 4749 y Fq(\022)41 b Fy(The)48 b(bac)n(kquote)e(c)n +(haracter)g(is)h(used)h(to)f(indicate)h(almost-)2099 +4849 y(constan)n(t)27 b(data)g(\(section)h(4.2.6\).)1933 +5027 y Fq(,)43 b(,@)e Fy(The)33 b(c)n(haracter)e(comma)i(and)f(the)i +(sequence)e(comma)h(at-)2099 5126 y(sign)48 b(are)g(used)h(in)f +(conjunction)h(with)g(bac)n(kquote)f(\(sec-)2099 5226 +y(tion)28 b(4.2.6\).)1933 5404 y Fq(")41 b Fy(The)f(double)g(quote)g(c) +n(haracter)d(is)j(used)g(to)f(delimit)i(strings)2099 +5504 y(\(section)28 b(6.3.5\).)p eop +%%Page: 6 6 +6 5 bop -300 -125 a Fy(6)83 b(Revised)106 -156 y Fr(5)170 +-125 y Fy(Sc)n(heme)-300 82 y Fq(\\)41 b Fy(Bac)n(kslash)30 +b(is)h(used)h(in)g(the)g(syn)n(tax)f(for)g(c)n(haracter)f(constan)n(ts) +-134 182 y(\(section)19 b(6.3.4\))g(and)g(as)f(an)h(escap)r(e)g(c)n +(haracter)e(within)k(string)-134 281 y(constan)n(ts)27 +b(\(section)g(6.3.5\).)-300 449 y Fq([)43 b(])g({)h(})f(|)e +Fy(Left)21 b(and)g(righ)n(t)f(square)g(brac)n(k)n(ets)f(and)i(curly)f +(braces)-134 549 y(and)j(v)n(ertical)f(bar)h(are)f(reserv)n(ed)g(for)g +(p)r(ossible)h(future)h(exten-)-134 649 y(sions)j(to)g(the)h(language.) +-300 817 y Fq(#)41 b Fy(Sharp)34 b(sign)f(is)h(used)g(for)g(a)f(v)-5 +b(ariet)n(y)33 b(of)h(purp)r(oses)f(dep)r(ending)-134 +916 y(on)27 b(the)h(c)n(haracter)e(that)i(immediately)g(follo)n(ws)e +(it:)-300 1084 y Fq(#t)31 b(#f)41 b Fy(These)27 b(are)g(the)h(b)r(o)r +(olean)f(constan)n(ts)f(\(section)i(6.3.1\).)-300 1252 +y Fq(#\\)41 b Fy(This)27 b(in)n(tro)r(duces)g(a)g(c)n(haracter)f +(constan)n(t)h(\(section)g(6.3.4\).)-300 1420 y Fq(#\()41 +b Fy(This)28 b(in)n(tro)r(duces)g(a)f(v)n(ector)g(constan)n(t)h +(\(section)g(6.3.6\).)38 b(V)-7 b(ec-)-134 1520 y(tor)27 +b(constan)n(ts)g(are)f(terminated)i(b)n(y)f Fq(\))g Fy(.)-300 +1688 y Fq(#e)43 b(#i)g(#b)f(#o)h(#d)g(#x)d Fy(These)i(are)f(used)h(in)g +(the)h(notation)e(for)-134 1788 y(n)n(um)n(b)r(ers)27 +b(\(section)h(6.2.4\).)-300 2140 y Fu(3.)162 b(Basic)37 +b(concepts)-300 2299 y(3.1.)56 b(V)-9 b(ariables,)41 +b(syn)m(tactic)f(k)m(eyw)m(ords,)j(and)e(re-)-70 2415 +y(gions)-300 2629 y Fy(An)30 b(iden)n(ti\014er)g(ma)n(y)f(name)h(a)f(t) +n(yp)r(e)h(of)g(syn)n(tax,)g(or)f(it)h(ma)n(y)f(name)-300 +2729 y(a)g(lo)r(cation)f(where)g(a)h(v)-5 b(alue)28 b(can)h(b)r(e)g +(stored.)40 b(An)30 b(iden)n(ti\014er)f(that)-300 2828 +y(names)24 b(a)g(t)n(yp)r(e)h(of)g(syn)n(tax)f(is)g(called)h(a)f +Fw(syntactic)j(keywor)l(d)f Fy(and)f(is)-300 2928 y(said)j(to)h(b)r(e)g +Fw(b)l(ound)g Fy(to)g(that)g(syn)n(tax.)40 b(An)29 b(iden)n(ti\014er)g +(that)g(names)-300 3028 y(a)34 b(lo)r(cation)g(is)h(called)f(a)g +Fw(variable)j Fy(and)e(is)f(said)h(to)f(b)r(e)h Fw(b)l(ound)g +Fy(to)-300 3127 y(that)h(lo)r(cation.)59 b(The)35 b(set)g(of)g(all)g +(visible)h(bindings)f(in)g(e\013ect)h(at)-300 3227 y(some)c(p)r(oin)n +(t)g(in)h(a)f(program)f(is)h(kno)n(wn)g(as)f(the)i Fw(envir)l(onment)g +Fy(in)-300 3326 y(e\013ect)j(at)f(that)h(p)r(oin)n(t.)61 +b(The)35 b(v)-5 b(alue)36 b(stored)e(in)i(the)g(lo)r(cation)f(to)-300 +3426 y(whic)n(h)40 b(a)g(v)-5 b(ariable)39 b(is)h(b)r(ound)g(is)g +(called)g(the)g(v)-5 b(ariable's)39 b(v)-5 b(alue.)-300 +3526 y(By)39 b(abuse)f(of)h(terminology)-7 b(,)41 b(the)e(v)-5 +b(ariable)38 b(is)h(sometimes)f(said)-300 3625 y(to)e(name)g(the)g(v)-5 +b(alue)37 b(or)e(to)h(b)r(e)g(b)r(ound)h(to)f(the)g(v)-5 +b(alue.)63 b(This)36 b(is)-300 3725 y(not)d(quite)g(accurate,)g(but)h +(confusion)e(rarely)g(results)g(from)h(this)-300 3825 +y(practice.)-300 3967 y(Certain)g(expression)g(t)n(yp)r(es)h(are)f +(used)h(to)g(create)f(new)h(kinds)g(of)-300 4066 y(syn)n(tax)22 +b(and)g(bind)i(syn)n(tactic)e(k)n(eyw)n(ords)e(to)j(those)f(new)h(syn)n +(taxes,)-300 4166 y(while)h(other)f(expression)f(t)n(yp)r(es)i(create)e +(new)i(lo)r(cations)f(and)g(bind)-300 4266 y(v)-5 b(ariables)37 +b(to)h(those)f(lo)r(cations.)68 b(These)37 b(expression)g(t)n(yp)r(es)h +(are)-300 4365 y(called)28 b Fw(binding)j(c)l(onstructs)p +Fy(.)75 b(Those)28 b(that)g(bind)g(syn)n(tactic)g(k)n(ey-)-300 +4465 y(w)n(ords)j(are)g(listed)h(in)g(section)g(4.3.)50 +b(The)32 b(most)g(fundamen)n(tal)g(of)-300 4564 y(the)i(v)-5 +b(ariable)34 b(binding)g(constructs)f(is)h(the)h Fq(lambda)c +Fy(expression,)-300 4664 y(b)r(ecause)38 b(all)g(other)g(v)-5 +b(ariable)37 b(binding)i(constructs)f(can)g(b)r(e)g(ex-)-300 +4764 y(plained)23 b(in)h(terms)f(of)h Fq(lambda)d Fy(expressions.)34 +b(The)23 b(other)g(v)-5 b(ariable)-300 4863 y(binding)30 +b(constructs)f(are)g Fq(let)p Fy(,)h Fq(let*)p Fy(,)f +Fq(letrec)p Fy(,)f(and)i Fq(do)f Fy(expres-)-300 4963 +y(sions)e(\(see)g(sections)g(4.1.4,)g(4.2.2,)f(and)i(4.2.4\).)-300 +5105 y(Lik)n(e)35 b(Algol)g(and)g(P)n(ascal,)h(and)f(unlik)n(e)g(most)h +(other)f(dialects)g(of)-300 5205 y(Lisp)19 b(except)h(for)f(Common)g +(Lisp,)i(Sc)n(heme)f(is)f(a)g(statically)g(scop)r(ed)-300 +5304 y(language)38 b(with)i(blo)r(c)n(k)e(structure.)72 +b(T)-7 b(o)39 b(eac)n(h)f(place)h(where)g(an)-300 5404 +y(iden)n(ti\014er)24 b(is)g(b)r(ound)g(in)g(a)g(program)e(there)i +(corresp)r(onds)e(a)h Fw(r)l(e)l(gion)-300 5504 y Fy(of)38 +b(the)g(program)e(text)i(within)g(whic)n(h)g(the)g(binding)g(is)g +(visible.)1933 82 y(The)g(region)e(is)h(determined)g(b)n(y)h(the)f +(particular)f(binding)i(con-)1933 182 y(struct)27 b(that)g(establishes) +e(the)i(binding;)h(if)f(the)g(binding)f(is)h(estab-)1933 +281 y(lished)e(b)n(y)f(a)h Fq(lambda)d Fy(expression,)i(for)g(example,) +h(then)g(its)f(region)1933 381 y(is)h(the)h(en)n(tire)e +Fq(lambda)f Fy(expression.)34 b(Ev)n(ery)24 b(men)n(tion)h(of)f(an)h +(iden-)1933 481 y(ti\014er)g(refers)g(to)g(the)g(binding)g(of)h(the)f +(iden)n(ti\014er)g(that)g(established)1933 580 y(the)i(innermost)e(of)h +(the)g(regions)f(con)n(taining)g(the)h(use.)36 b(If)26 +b(there)g(is)1933 680 y(no)i(binding)h(of)f(the)h(iden)n(ti\014er)f +(whose)f(region)g(con)n(tains)h(the)g(use,)1933 780 y(then)35 +b(the)f(use)g(refers)f(to)h(the)g(binding)h(for)e(the)h(v)-5 +b(ariable)33 b(in)i(the)1933 879 y(top)26 b(lev)n(el)e(en)n(vironmen)n +(t,)h(if)h(an)n(y)f(\(c)n(hapters)f(4)h(and)g(6\);)h(if)g(there)f(is) +1933 979 y(no)j(binding)f(for)g(the)h(iden)n(ti\014er,)g(it)g(is)f +(said)h(to)f(b)r(e)h Fw(unb)l(ound)p Fy(.)1933 1280 y +Fu(3.2.)57 b(Disjoin)m(tness)36 b(of)i(t)m(yp)s(es)1933 +1501 y Fy(No)d(ob)5 b(ject)35 b(satis\014es)f(more)g(than)h(one)g(of)f +(the)i(follo)n(wing)e(predi-)1933 1600 y(cates:)2090 +1764 y Fm(boolean?)394 b(pair?)2090 1856 y(symbol?)433 +b(number?)2090 1947 y(char?)511 b(string?)2090 2038 y(vector?)433 +b(port?)2090 2130 y(procedure?)1933 2302 y Fy(These)42 +b(predicates)f(de\014ne)i(the)f(t)n(yp)r(es)g Fw(b)l(o)l(ole)l(an)p +Fy(,)47 b Fw(p)l(air)p Fy(,)g Fw(symb)l(ol)p Fy(,)1933 +2401 y Fw(numb)l(er)p Fy(,)31 b Fw(char)h Fy(\(or)e Fw(char)l(acter)p +Fy(\),)k Fw(string)p Fy(,)d Fw(ve)l(ctor)p Fy(,)h Fw(p)l(ort)p +Fy(,)g(and)f Fw(pr)l(o-)1933 2501 y(c)l(e)l(dur)l(e)p +Fy(.)42 b(The)30 b(empt)n(y)f(list)g(is)h(a)e(sp)r(ecial)h(ob)5 +b(ject)30 b(of)f(its)g(o)n(wn)g(t)n(yp)r(e;)1933 2601 +y(it)f(satis\014es)f(none)g(of)h(the)g(ab)r(o)n(v)n(e)e(predicates.) +1933 2748 y(Although)40 b(there)g(is)g(a)g(separate)f(b)r(o)r(olean)g +(t)n(yp)r(e,)44 b(an)n(y)39 b(Sc)n(heme)1933 2847 y(v)-5 +b(alue)30 b(can)f(b)r(e)i(used)e(as)h(a)f(b)r(o)r(olean)g(v)-5 +b(alue)30 b(for)f(the)i(purp)r(ose)e(of)h(a)1933 2947 +y(conditional)j(test.)55 b(As)34 b(explained)f(in)h(section)f(6.3.1,)h +(all)g(v)-5 b(alues)1933 3046 y(coun)n(t)24 b(as)g(true)g(in)h(suc)n(h) +f(a)g(test)g(except)h(for)f Fq(#f)p Fy(.)35 b(This)24 +b(rep)r(ort)g(uses)1933 3146 y(the)35 b(w)n(ord)e(\\true")g(to)i(refer) +e(to)h(an)n(y)g(Sc)n(heme)g(v)-5 b(alue)34 b(except)h +Fq(#f)p Fy(,)1933 3246 y(and)28 b(the)g(w)n(ord)e(\\false")g(to)i +(refer)f(to)g Fq(#f)p Fy(.)1933 3547 y Fu(3.3.)57 b(External)36 +b(represen)m(tations)1933 3768 y Fy(An)28 b(imp)r(ortan)n(t)g(concept)f +(in)h(Sc)n(heme)g(\(and)g(Lisp\))g(is)f(that)h(of)g(the)1933 +3867 y Fw(external)i(r)l(epr)l(esentation)e Fy(of)f(an)g(ob)5 +b(ject)27 b(as)g(a)g(sequence)g(of)h(c)n(har-)1933 3967 +y(acters.)34 b(F)-7 b(or)21 b(example,)i(an)e(external)g(represen)n +(tation)f(of)i(the)g(in)n(te-)1933 4067 y(ger)28 b(28)f(is)i(the)f +(sequence)g(of)h(c)n(haracters)d(\\)p Fq(28)p Fy(",)h(and)h(an)g +(external)1933 4166 y(represen)n(tation)g(of)i(a)f(list)h(consisting)f +(of)h(the)g(in)n(tegers)e(8)h(and)h(13)1933 4266 y(is)e(the)g(sequence) +f(of)g(c)n(haracters)f(\\)p Fq(\(8)42 b(13\))p Fy(".)1933 +4413 y(The)49 b(external)e(represen)n(tation)f(of)j(an)f(ob)5 +b(ject)48 b(is)g(not)g(neces-)1933 4512 y(sarily)d(unique.)92 +b(The)45 b(in)n(teger)g(28)g(also)g(has)g(represen)n(tations)1933 +4612 y(\\)p Fq(#e28.000)p Fy(")21 b(and)k(\\)p Fq(#x1c)p +Fy(",)e(and)i(the)g(list)g(in)g(the)h(previous)e(para-)1933 +4712 y(graph)33 b(also)h(has)f(the)i(represen)n(tations)e(\\)p +Fq(\()42 b(08)h(13)g(\))p Fy(")33 b(and)h(\\)p Fq(\(8)1933 +4811 y(.)43 b(\(13)g(.)g(\(\)\)\))p Fy(")26 b(\(see)h(section)g +(6.3.2\).)1933 4958 y(Man)n(y)i(ob)5 b(jects)28 b(ha)n(v)n(e)g +(standard)h(external)f(represen)n(tations,)g(but)1933 +5058 y(some,)i(suc)n(h)f(as)g(pro)r(cedures,)g(do)h(not)f(ha)n(v)n(e)g +(standard)g(represen-)1933 5157 y(tations)38 b(\(although)g(particular) +f(implemen)n(tations)g(ma)n(y)h(de\014ne)1933 5257 y(represen)n +(tations)26 b(for)h(them\).)1933 5404 y(An)c(external)f(represen)n +(tation)e(ma)n(y)i(b)r(e)h(written)f(in)h(a)f(program)e(to)1933 +5504 y(obtain)25 b(the)h(corresp)r(onding)d(ob)5 b(ject)25 +b(\(see)g Fq(quote)p Fy(,)f(section)h(4.1.2\).)p eop +%%Page: 7 7 +7 6 bop 3267 -125 a Fy(3.)55 b(Basic)27 b(concepts)83 +b(7)-300 82 y(External)38 b(represen)n(tations)e(can)j(also)e(b)r(e)j +(used)e(for)g(input)i(and)-300 182 y(output.)35 b(The)22 +b(pro)r(cedure)f Fq(read)f Fy(\(section)i(6.6.2\))e(parses)h(external) +-300 281 y(represen)n(tations,)38 b(and)f(the)h(pro)r(cedure)f +Fq(write)e Fy(\(section)j(6.6.3\))-300 381 y(generates)g(them.)74 +b(T)-7 b(ogether,)42 b(they)e(pro)n(vide)f(an)g(elegan)n(t)g(and)-300 +481 y(p)r(o)n(w)n(erful)27 b(input/output)h(facilit)n(y)-7 +b(.)-300 626 y(Note)30 b(that)g(the)g(sequence)f(of)h(c)n(haracters)e +(\\)p Fq(\(+)42 b(2)h(6\))p Fy(")29 b(is)h Fw(not)f Fy(an)-300 +725 y(external)18 b(represen)n(tation)f(of)h(the)h(in)n(teger)f(8,)i +(ev)n(en)e(though)h(it)g Fw(is)g Fy(an)-300 825 y(expression)g(ev)-5 +b(aluating)20 b(to)h(the)g(in)n(teger)e(8;)k(rather,)e(it)g(is)f(an)h +(exter-)-300 924 y(nal)31 b(represen)n(tation)f(of)i(a)f(three-elemen)n +(t)g(list,)i(the)f(elemen)n(ts)g(of)-300 1024 y(whic)n(h)24 +b(are)f(the)i(sym)n(b)r(ol)f Fq(+)f Fy(and)h(the)h(in)n(tegers)e(2)h +(and)g(6.)35 b(Sc)n(heme's)-300 1124 y(syn)n(tax)g(has)h(the)h(prop)r +(ert)n(y)e(that)i(an)n(y)e(sequence)h(of)g(c)n(haracters)-300 +1223 y(that)29 b(is)f(an)g(expression)f(is)h(also)f(the)i(external)e +(represen)n(tation)g(of)-300 1323 y(some)i(ob)5 b(ject.)42 +b(This)29 b(can)g(lead)g(to)h(confusion,)f(since)g(it)h(ma)n(y)f(not) +-300 1423 y(b)r(e)21 b(ob)n(vious)f(out)h(of)f(con)n(text)h(whether)g +(a)f(giv)n(en)g(sequence)h(of)f(c)n(har-)-300 1522 y(acters)k(is)h(in)n +(tended)g(to)g(denote)g(data)g(or)f(program,)g(but)h(it)h(is)f(also) +-300 1622 y(a)d(source)e(of)j(p)r(o)n(w)n(er,)f(since)f(it)i +(facilitates)f(writing)f(programs)f(suc)n(h)-300 1721 +y(as)29 b(in)n(terpreters)g(and)g(compilers)g(that)h(treat)g(programs)d +(as)i(data)-300 1821 y(\(or)e(vice)g(v)n(ersa\).)-300 +1966 y(The)j(syn)n(tax)e(of)i(external)f(represen)n(tations)e(of)j(v)-5 +b(arious)28 b(kinds)i(of)-300 2066 y(ob)5 b(jects)34 +b(accompanies)g(the)h(description)g(of)g(the)g(primitiv)n(es)f(for)-300 +2165 y(manipulating)43 b(the)h(ob)5 b(jects)43 b(in)g(the)h +(appropriate)d(sections)i(of)-300 2265 y(c)n(hapter)27 +b(6.)-300 2559 y Fu(3.4.)56 b(Storage)38 b(mo)s(del)-300 +2777 y Fy(V)-7 b(ariables)36 b(and)h(ob)5 b(jects)36 +b(suc)n(h)h(as)f(pairs,)i(v)n(ectors,)g(and)f(strings)-300 +2877 y(implicitly)j(denote)f(lo)r(cations)f(or)h(sequences)f(of)i(lo)r +(cations.)70 b(A)-300 2977 y(string,)43 b(for)d(example,)k(denotes)c +(as)g(man)n(y)g(lo)r(cations)g(as)g(there)-300 3076 y(are)g(c)n +(haracters)e(in)j(the)g(string.)76 b(\(These)41 b(lo)r(cations)f(need)h +(not)-300 3176 y(corresp)r(ond)29 b(to)h(a)g(full)h(mac)n(hine)f(w)n +(ord.\))45 b(A)31 b(new)f(v)-5 b(alue)31 b(ma)n(y)e(b)r(e)-300 +3276 y(stored)j(in)n(to)h(one)f(of)h(these)g(lo)r(cations)f(using)h +(the)g Fq(string-set!)-300 3375 y Fy(pro)r(cedure,)44 +b(but)d(the)h(string)e(con)n(tin)n(ues)h(to)g(denote)g(the)g(same)-300 +3475 y(lo)r(cations)27 b(as)g(b)r(efore.)-300 3620 y(An)19 +b(ob)5 b(ject)19 b(fetc)n(hed)g(from)f(a)g(lo)r(cation,)i(b)n(y)e(a)g +(v)-5 b(ariable)18 b(reference)g(or)-300 3719 y(b)n(y)30 +b(a)f(pro)r(cedure)g(suc)n(h)h(as)f Fq(car)p Fy(,)h Fq(vector-ref)p +Fy(,)d(or)i Fq(string-ref)p Fy(,)-300 3819 y(is)22 b(equiv)-5 +b(alen)n(t)22 b(in)g(the)g(sense)f(of)h Fq(eqv?)f Fy(\(section)h(6.1\)) +f(to)h(the)g(ob)5 b(ject)-300 3919 y(last)27 b(stored)g(in)h(the)g(lo)r +(cation)f(b)r(efore)g(the)h(fetc)n(h.)-300 4063 y(Ev)n(ery)e(lo)r +(cation)i(is)g(mark)n(ed)f(to)h(sho)n(w)f(whether)h(it)g(is)g(in)h +(use.)38 b(No)-300 4163 y(v)-5 b(ariable)19 b(or)g(ob)5 +b(ject)20 b(ev)n(er)f(refers)h(to)g(a)f(lo)r(cation)h(that)g(is)g(not)h +(in)f(use.)-300 4263 y(Whenev)n(er)25 b(this)h(rep)r(ort)f(sp)r(eaks)g +(of)g(storage)f(b)r(eing)i(allo)r(cated)e(for)-300 4362 +y(a)k(v)-5 b(ariable)28 b(or)g(ob)5 b(ject,)28 b(what)h(is)f(mean)n(t)h +(is)f(that)h(an)g(appropriate)-300 4462 y(n)n(um)n(b)r(er)36 +b(of)f(lo)r(cations)g(are)g(c)n(hosen)g(from)h(the)g(set)g(of)g(lo)r +(cations)-300 4562 y(that)d(are)f(not)h(in)g(use,)h(and)f(the)g(c)n +(hosen)f(lo)r(cations)g(are)g(mark)n(ed)-300 4661 y(to)27 +b(indicate)h(that)f(they)h(are)e(no)n(w)h(in)g(use)h(b)r(efore)f(the)g +(v)-5 b(ariable)27 b(or)-300 4761 y(ob)5 b(ject)27 b(is)h(made)f(to)h +(denote)f(them.)-300 4906 y(In)i(man)n(y)f(systems)g(it)h(is)g +(desirable)f(for)g(constan)n(ts)g(\(i.e.)40 b(the)29 +b(v)-5 b(al-)-300 5005 y(ues)35 b(of)h(literal)f(expressions\))f(to)h +(reside)g(in)h(read-only-memory)-7 b(.)-300 5105 y(T)g(o)44 +b(express)f(this,)48 b(it)d(is)f(con)n(v)n(enien)n(t)f(to)h(imagine)g +(that)g(ev)n(ery)-300 5205 y(ob)5 b(ject)48 b(that)g(denotes)f(lo)r +(cations)g(is)h(asso)r(ciated)f(with)h(a)g(\015ag)-300 +5304 y(telling)36 b(whether)f(that)h(ob)5 b(ject)35 b(is)g(m)n(utable)g +(or)g(imm)n(utable.)61 b(In)-300 5404 y(suc)n(h)28 b(systems)g(literal) +g(constan)n(ts)g(and)g(the)h(strings)f(returned)g(b)n(y)-300 +5504 y Fq(symbol->string)e Fy(are)k(imm)n(utable)i(ob)5 +b(jects,)32 b(while)f(all)g(ob)5 b(jects)1933 82 y(created)36 +b(b)n(y)g(the)h(other)f(pro)r(cedures)g(listed)h(in)f(this)h(rep)r(ort) +f(are)1933 182 y(m)n(utable.)63 b(It)37 b(is)f(an)g(error)e(to)i +(attempt)h(to)f(store)f(a)h(new)g(v)-5 b(alue)1933 281 +y(in)n(to)28 b(a)f(lo)r(cation)g(that)h(is)f(denoted)h(b)n(y)f(an)g +(imm)n(utable)h(ob)5 b(ject.)1933 562 y Fu(3.5.)57 b(Prop)s(er)37 +b(tail)e(recursion)1933 772 y Fy(Implemen)n(tations)20 +b(of)g(Sc)n(heme)g(are)g(required)f(to)h(b)r(e)g Fw(pr)l(op)l(erly)25 +b(tail-)1933 872 y(r)l(e)l(cursive)p Fy(.)54 b(Pro)r(cedure)31 +b(calls)h(that)i(o)r(ccur)e(in)h(certain)g(syn)n(tactic)1933 +972 y(con)n(texts)k(de\014ned)h(b)r(elo)n(w)e(are)h(`tail)g(calls'.)65 +b(A)38 b(Sc)n(heme)f(imple-)1933 1071 y(men)n(tation)f(is)g(prop)r +(erly)g(tail-recursiv)n(e)e(if)j(it)f(supp)r(orts)g(an)g(un-)1933 +1171 y(b)r(ounded)41 b(n)n(um)n(b)r(er)g(of)f(activ)n(e)g(tail)h +(calls.)75 b(A)41 b(call)f(is)h Fw(active)h Fy(if)1933 +1270 y(the)35 b(called)g(pro)r(cedure)e(ma)n(y)h(still)h(return.)58 +b(Note)34 b(that)h(this)g(in-)1933 1370 y(cludes)c(calls)f(that)h(ma)n +(y)f(b)r(e)h(returned)f(from)h(either)f(b)n(y)h(the)g(cur-)1933 +1470 y(ren)n(t)i(con)n(tin)n(uation)f(or)g(b)n(y)h(con)n(tin)n(uations) +f(captured)h(earlier)e(b)n(y)1933 1569 y Fq(call-with-current)o(-c)o +(ont)o(in)o(uat)o(io)o(n)12 b Fy(that)19 b(are)f(later)g(in)n(v)n(ok)n +(ed.)1933 1669 y(In)j(the)h(absence)e(of)h(captured)f(con)n(tin)n +(uations,)i(calls)e(could)h(return)1933 1769 y(at)28 +b(most)f(once)g(and)h(the)f(activ)n(e)g(calls)g(w)n(ould)g(b)r(e)h +(those)f(that)h(had)1933 1868 y(not)h(y)n(et)g(returned.)40 +b(A)29 b(formal)f(de\014nition)h(of)g(prop)r(er)f(tail)g(recur-)1933 +1968 y(sion)f(can)h(b)r(e)g(found)g(in)f([8].)1933 2099 +y Fj(R)l(ationale:)1933 2230 y Fl(In)n(tuitiv)n(ely)-6 +b(,)22 b(no)g(space)g(is)h(needed)e(for)i(an)f(activ)n(e)h(tail)g(call) +g(b)r(ecause)f(the)1933 2321 y(con)n(tin)n(uation)h(that)f(is)g(used)g +(in)g(the)g(tail)h(call)h(has)e(the)g(same)g(seman)n(tics)1933 +2412 y(as)h(the)f(con)n(tin)n(uation)g(passed)h(to)g(the)e(pro)r +(cedure)i(con)n(taining)g(the)f(call.)1933 2504 y(Although)34 +b(an)g(improp)r(er)g(implemen)n(tation)f(migh)n(t)g(use)h(a)h(new)f +(con-)1933 2595 y(tin)n(uation)d(in)g(the)f(call,)j(a)e(return)f(to)h +(this)g(new)g(con)n(tin)n(uation)g(w)n(ould)1933 2686 +y(b)r(e)23 b(follo)n(w)n(ed)i(immediately)d(b)n(y)g(a)h(return)g(to)g +(the)g(con)n(tin)n(uation)g(passed)1933 2778 y(to)k(the)g(pro)r +(cedure.)37 b(A)27 b(prop)r(erly)f(tail-recursiv)n(e)i(implemen)n +(tation)d(re-)1933 2869 y(turns)g(to)h(that)g(con)n(tin)n(uation)f +(directly)-6 b(.)1933 3000 y(Prop)r(er)26 b(tail)h(recursion)f(w)n(as)g +(one)g(of)g(the)f(cen)n(tral)h(ideas)g(in)g(Steele)f(and)1933 +3091 y(Sussman's)33 b(original)i(v)n(ersion)f(of)g(Sc)n(heme.)56 +b(Their)34 b(\014rst)g(Sc)n(heme)d(in-)1933 3182 y(terpreter)26 +b(implemen)n(ted)e(b)r(oth)h(functions)h(and)g(actors.)36 +b(Con)n(trol)27 b(\015o)n(w)1933 3274 y(w)n(as)39 b(expressed)e(using)g +(actors,)42 b(whic)n(h)37 b(di\013ered)g(from)g(functions)h(in)1933 +3365 y(that)d(they)f(passed)h(their)g(results)g(on)g(to)g(another)g +(actor)h(instead)f(of)1933 3456 y(returning)c(to)g(a)g(caller.)51 +b(In)31 b(the)f(terminology)h(of)h(this)f(section,)i(eac)n(h)1933 +3548 y(actor)27 b(\014nished)e(with)h(a)g(tail)g(call)h(to)f(another)g +(actor.)1933 3679 y(Steele)g(and)f(Sussman)f(later)i(observ)n(ed)f +(that)g(in)g(their)g(in)n(terpreter)g(the)1933 3770 y(co)r(de)i(for)g +(dealing)h(with)e(actors)i(w)n(as)f(iden)n(tical)g(to)g(that)f(for)i +(functions)1933 3861 y(and)e(th)n(us)f(there)g(w)n(as)i(no)e(need)h(to) +f(include)h(b)r(oth)f(in)h(the)f(language.)1933 4001 +y Fy(A)39 b Fw(tail)i(c)l(al)t(l)e Fy(is)g(a)f(pro)r(cedure)f(call)h +(that)h(o)r(ccurs)f(in)h(a)f Fw(tail)i(c)l(on-)1933 4100 +y(text)p Fy(.)35 b(T)-7 b(ail)24 b(con)n(texts)g(are)f(de\014ned)i +(inductiv)n(ely)-7 b(.)35 b(Note)25 b(that)f(a)g(tail)1933 +4200 y(con)n(text)31 b(is)h(alw)n(a)n(ys)d(determined)j(with)g(resp)r +(ect)f(to)g(a)g(particular)1933 4299 y(lam)n(b)r(da)c(expression.)2016 +4517 y Fp(\017)41 b Fy(The)32 b(last)f(expression)f(within)j(the)f(b)r +(o)r(dy)g(of)f(a)g(lam)n(b)r(da)h(ex-)2099 4616 y(pression,)24 +b(sho)n(wn)g(as)g Fp(h)p Fy(tail)k(expression)p Fp(i)c +Fy(b)r(elo)n(w,)h(o)r(ccurs)f(in)h(a)2099 4716 y(tail)j(con)n(text.) +2099 4911 y Fq(\(lambda)41 b Fp(h)p Fy(formals)p Fp(i)2187 +5010 y(h)p Fy(de\014nition)p Fp(i)p Fy(*)i Fp(h)p Fy(expression)p +Fp(i)p Fy(*)g Fp(h)p Fy(tail)27 b(expression)p Fp(i)o +Fq(\))2016 5304 y Fp(\017)41 b Fy(If)28 b(one)f(of)h(the)g(follo)n +(wing)e(expressions)g(is)h(in)h(a)f(tail)g(con)n(text,)2099 +5404 y(then)d(the)g(sub)r(expressions)d(sho)n(wn)i(as)f +Fp(h)p Fy(tail)28 b(expression)p Fp(i)22 b Fy(are)2099 +5504 y(in)39 b(a)e(tail)h(con)n(text.)68 b(These)38 b(w)n(ere)f(deriv)n +(ed)g(from)g(rules)h(in)p eop +%%Page: 8 8 +8 7 bop -300 -125 a Fy(8)83 b(Revised)106 -156 y Fr(5)170 +-125 y Fy(Sc)n(heme)-134 82 y(the)25 b(grammar)e(giv)n(en)i(in)g(c)n +(hapter)f(7)h(b)n(y)f(replacing)g(some)g(o)r(c-)-134 +182 y(currences)j(of)i Fp(h)p Fy(expression)p Fp(i)f +Fy(with)h Fp(h)p Fy(tail)f(expression)p Fp(i)n Fy(.)40 +b(Only)-134 281 y(those)27 b(rules)g(that)h(con)n(tain)f(tail)h(con)n +(texts)f(are)f(sho)n(wn)h(here.)-134 525 y Fq(\(if)42 +b Fp(h)p Fy(expression)p Fp(i)h(h)p Fy(tail)28 b(expression)p +Fp(i)42 b(h)p Fy(tail)28 b(expression)p Fp(i)o Fq(\))-134 +625 y(\(if)42 b Fp(h)p Fy(expression)p Fp(i)h(h)p Fy(tail)28 +b(expression)p Fp(i)o Fq(\))-134 824 y(\(cond)42 b Fp(h)p +Fy(cond)27 b(clause)p Fp(i)608 794 y Fr(+)663 824 y Fq(\))-134 +923 y(\(cond)42 b Fp(h)p Fy(cond)27 b(clause)p Fp(i)p +Fy(*)43 b Fq(\(else)e Fp(h)p Fy(tail)28 b(sequence)p +Fp(i)p Fq(\)\))-134 1123 y(\(case)42 b Fp(h)p Fy(expression)p +Fp(i)-47 1222 y(h)p Fy(case)27 b(clause)p Fp(i)411 1192 +y Fr(+)466 1222 y Fq(\))-134 1322 y(\(case)42 b Fp(h)p +Fy(expression)p Fp(i)-47 1422 y(h)p Fy(case)27 b(clause)p +Fp(i)p Fy(*)-47 1521 y Fq(\(else)42 b Fp(h)p Fy(tail)28 +b(sequence)p Fp(i)o Fq(\)\))-134 1720 y(\(and)42 b Fp(h)p +Fy(expression)p Fp(i)o Fy(*)h Fp(h)p Fy(tail)28 b(expression)p +Fp(i)o Fq(\))-134 1820 y(\(or)42 b Fp(h)p Fy(expression)p +Fp(i)o Fy(*)i Fp(h)p Fy(tail)27 b(expression)p Fp(i)o +Fq(\))-134 2019 y(\(let)42 b(\()p Fp(h)p Fy(binding)28 +b(sp)r(ec)p Fp(i)p Fy(*)o Fq(\))44 b Fp(h)p Fy(tail)27 +b(b)r(o)r(dy)p Fp(i)q Fq(\))-134 2119 y(\(let)42 b Fp(h)p +Fy(v)-5 b(ariable)p Fp(i)43 b Fq(\()p Fp(h)p Fy(binding)28 +b(sp)r(ec)p Fp(i)p Fy(*)o Fq(\))44 b Fp(h)p Fy(tail)28 +b(b)r(o)r(dy)p Fp(i)p Fq(\))-134 2219 y(\(let*)42 b(\()p +Fp(h)p Fy(binding)27 b(sp)r(ec)p Fp(i)p Fy(*)p Fq(\))43 +b Fp(h)p Fy(tail)28 b(b)r(o)r(dy)p Fp(i)q Fq(\))-134 +2318 y(\(letrec)41 b(\()p Fp(h)p Fy(binding)27 b(sp)r(ec)p +Fp(i)q Fy(*)o Fq(\))43 b Fp(h)p Fy(tail)28 b(b)r(o)r(dy)p +Fp(i)q Fq(\))-134 2517 y(\(let-syntax)39 b(\()p Fp(h)p +Fy(syn)n(tax)27 b(sp)r(ec)p Fp(i)p Fy(*)o Fq(\))44 b +Fp(h)p Fy(tail)27 b(b)r(o)r(dy)p Fp(i)q Fq(\))-134 2617 +y(\(letrec-syntax)38 b(\()p Fp(h)p Fy(syn)n(tax)26 b(sp)r(ec)p +Fp(i)q Fy(*)o Fq(\))43 b Fp(h)p Fy(tail)28 b(b)r(o)r(dy)p +Fp(i)q Fq(\))-134 2816 y(\(begin)41 b Fp(h)p Fy(tail)28 +b(sequence)p Fp(i)p Fq(\))-134 3016 y(\(do)42 b(\()p +Fp(h)p Fy(iteration)27 b(sp)r(ec)p Fp(i)p Fy(*)p Fq(\))40 +3115 y(\()p Fp(h)p Fy(test)p Fp(i)44 b(h)p Fy(tail)28 +b(sequence)p Fp(i)p Fq(\))-47 3215 y Fp(h)p Fy(expression)p +Fp(i)o Fy(*)p Fq(\))-134 3414 y Fy(where)-134 3613 y +Fp(h)p Fy(cond)g(clause)p Fp(i)43 b(\000)-14 b(!)43 b +Fq(\()p Fp(h)p Fy(test)p Fp(i)h(h)p Fy(tail)28 b(sequence)p +Fp(i)p Fq(\))-134 3713 y Fp(h)p Fy(case)f(clause)p Fp(i)43 +b(\000)-14 b(!)44 b Fq(\(\()p Fp(h)p Fy(datum)p Fp(i)o +Fy(*)p Fq(\))f Fp(h)p Fy(tail)28 b(sequence)p Fp(i)p +Fq(\))-134 3912 y Fp(h)p Fy(tail)g(b)r(o)r(dy)p Fp(i)44 +b(\000)-14 b(!)43 b(h)p Fy(de\014nition)p Fp(i)q Fy(*)g +Fp(h)p Fy(tail)28 b(sequence)p Fp(i)-134 4012 y(h)p Fy(tail)g(sequence) +p Fp(i)43 b(\000)-14 b(!)44 b(h)p Fy(expression)p Fp(i)o +Fy(*)f Fp(h)p Fy(tail)28 b(expression)p Fp(i)-217 4355 +y(\017)41 b Fy(If)e(a)f Fq(cond)f Fy(expression)g(is)h(in)h(a)f(tail)g +(con)n(text,)j(and)d(has)g(a)-134 4455 y(clause)i(of)h(the)h(form)f +Fq(\()p Fp(h)p Fy(expression)1049 4467 y Fr(1)1084 4455 +y Fp(i)j Fq(=>)f Fp(h)p Fy(expression)1697 4467 y Fr(2)1733 +4455 y Fp(i)p Fq(\))-134 4554 y Fy(then)35 b(the)f(\(implied\))i(call)d +(to)h(the)h(pro)r(cedure)e(that)h(results)-134 4654 y(from)18 +b(the)i(ev)-5 b(aluation)18 b(of)g Fp(h)p Fy(expression)1069 +4666 y Fr(2)1105 4654 y Fp(i)h Fy(is)g(in)g(a)f(tail)h(con)n(text.)-134 +4754 y Fp(h)p Fy(expression)272 4766 y Fr(2)308 4754 +y Fp(i)28 b Fy(itself)g(is)g(not)f(in)h(a)f(tail)h(con)n(text.)-300 +5005 y(Certain)38 b(built-in)h(pro)r(cedures)e(are)h(also)f(required)h +(to)g(p)r(erform)-300 5105 y(tail)44 b(calls.)87 b(The)44 +b(\014rst)g(argumen)n(t)g(passed)f(to)h Fq(apply)f Fy(and)h(to)-300 +5205 y Fq(call-with-curren)o(t-c)o(on)o(ti)o(nua)o(ti)o(on)p +Fy(,)19 b(and)24 b(the)h(second)f(argu-)-300 5304 y(men)n(t)34 +b(passed)g(to)g Fq(call-with-values)o Fy(,)c(m)n(ust)k(b)r(e)h(called)f +(via)f(a)-300 5404 y(tail)e(call.)46 b(Similarly)-7 b(,)32 +b Fq(eval)d Fy(m)n(ust)i(ev)-5 b(aluate)30 b(its)h(argumen)n(t)f(as)g +(if)-300 5504 y(it)e(w)n(ere)f(in)h(tail)f(p)r(osition)h(within)g(the)g +Fq(eval)e Fy(pro)r(cedure.)1933 82 y(In)j(the)g(follo)n(wing)f(example) +h(the)g(only)f(tail)h(call)f(is)h(the)g(call)g(to)f Fq(f)p +Fy(.)1933 174 y(None)i(of)f(the)h(calls)f(to)h Fq(g)f +Fy(or)f Fq(h)i Fy(are)e(tail)i(calls.)42 b(The)30 b(reference)e(to)1933 +265 y Fq(x)h Fy(is)f(in)h(a)f(tail)h(con)n(text,)g(but)g(it)g(is)g(not) +f(a)h(call)f(and)h(th)n(us)f(is)h(not)g(a)1933 356 y(tail)f(call.)2090 +487 y Fm(\(lambda)41 b(\(\))2169 578 y(\(if)f(\(g\))2326 +670 y(\(let)g(\(\(x)g(\(h\)\)\))2404 761 y(x\))2326 852 +y(\(and)g(\(g\))g(\(f\)\)\)\))1933 1083 y Fj(Note:)64 +b Fl(Implemen)n(tations)18 b(are)j(allo)n(w)n(ed,)i(but)c(not)h +(required,)h(to)f(recog-)1933 1183 y(nize)j(that)f(some)f(non-tail)i +(calls,)h(suc)n(h)e(as)h(the)f(call)h(to)f Fm(h)h Fl(ab)r(o)n(v)n(e,)g +(can)f(b)r(e)1933 1282 y(ev)l(aluated)i(as)g(though)f(they)g(w)n(ere)h +(tail)h(calls.)35 b(In)23 b(the)g(example)g(ab)r(o)n(v)n(e,)1933 +1382 y(the)29 b Fm(let)g Fl(expression)g(could)g(b)r(e)g(compiled)f(as) +h(a)h(tail)f(call)h(to)f Fm(h)p Fl(.)44 b(\(The)1933 +1482 y(p)r(ossibilit)n(y)30 b(of)g Fm(h)f Fl(returning)g(an)g(unexp)r +(ected)f(n)n(um)n(b)r(er)f(of)j(v)l(alues)f(can)1933 +1581 y(b)r(e)19 b(ignored,)j(b)r(ecause)e(in)f(that)g(case)h(the)f +(e\013ect)g(of)h(the)f Fm(let)h Fl(is)g(explicitly)1933 +1681 y(unsp)r(eci\014ed)25 b(and)h(implemen)n(tation-dep)r(enden)n +(t.\))1933 1940 y Fu(4.)162 b(Expressions)1933 2079 y +Fy(Expression)35 b(t)n(yp)r(es)h(are)f(categorized)g(as)h +Fw(primitive)i Fy(or)d Fw(derive)l(d)p Fy(.)1933 2179 +y(Primitiv)n(e)23 b(expression)e(t)n(yp)r(es)j(include)f(v)-5 +b(ariables)22 b(and)h(pro)r(cedure)1933 2278 y(calls.)38 +b(Deriv)n(ed)27 b(expression)g(t)n(yp)r(es)h(are)f(not)h(seman)n +(tically)e(prim-)1933 2378 y(itiv)n(e,)31 b(but)f(can)g(instead)g(b)r +(e)g(de\014ned)h(as)e(macros.)42 b(With)31 b(the)g(ex-)1933 +2478 y(ception)23 b(of)h Fq(quasiquote)p Fy(,)c(whose)i(macro)g +(de\014nition)h(is)g(complex,)1933 2577 y(the)39 b(deriv)n(ed)f +(expressions)f(are)h(classi\014ed)f(as)h(library)g(features.)1933 +2677 y(Suitable)28 b(de\014nitions)g(are)e(giv)n(en)h(in)h(section)f +(7.3.)1933 2957 y Fu(4.1.)57 b(Primitiv)m(e)33 b(expression)38 +b(t)m(yp)s(es)1933 3168 y Fv(4.1.1.)46 b(V)-8 b(ariable)32 +b(references)1933 3381 y Fp(h)p Fy(v)-5 b(ariable)p Fp(i)1522 +b Fy(syn)n(tax)1933 3520 y(An)41 b(expression)e(consisting)g(of)h(a)g +(v)-5 b(ariable)39 b(\(section)h(3.1\))g(is)g(a)1933 +3620 y(v)-5 b(ariable)35 b(reference.)59 b(The)35 b(v)-5 +b(alue)35 b(of)h(the)f(v)-5 b(ariable)35 b(reference)f(is)1933 +3720 y(the)k(v)-5 b(alue)37 b(stored)f(in)i(the)g(lo)r(cation)e(to)h +(whic)n(h)g(the)h(v)-5 b(ariable)36 b(is)1933 3819 y(b)r(ound.)i(It)28 +b(is)f(an)g(error)f(to)h(reference)g(an)g(un)n(b)r(ound)h(v)-5 +b(ariable.)2090 3966 y Fm(\(define)41 b(x)e(28\))2090 +4057 y(x)1060 b Fl(=)-13 b Fk(\))78 b Fm(28)1933 4324 +y Fv(4.1.2.)46 b(Literal)32 b(expressions)1933 4537 y +Fq(\(quote)41 b Fp(h)p Fy(datum)p Fp(i)q Fq(\))1222 b +Fy(syn)n(tax)1933 4636 y Fq(')p Fp(h)p Fy(datum)p Fp(i)1528 +b Fy(syn)n(tax)1933 4736 y Fp(h)p Fy(constan)n(t)p Fp(i)1499 +b Fy(syn)n(tax)1933 4875 y Fq(\(quote)41 b Fp(h)p Fy(datum)p +Fp(i)q Fq(\))28 b Fy(ev)-5 b(aluates)27 b(to)h Fp(h)p +Fy(datum)p Fp(i)q Fy(.)38 b Fp(h)p Fy(Datum)p Fp(i)29 +b Fy(ma)n(y)f(b)r(e)1933 4975 y(an)n(y)36 b(external)h(represen)n +(tation)e(of)i(a)f(Sc)n(heme)h(ob)5 b(ject)37 b(\(see)g(sec-)1933 +5075 y(tion)25 b(3.3\).)36 b(This)25 b(notation)f(is)h(used)g(to)f +(include)i(literal)e(constan)n(ts)1933 5174 y(in)k(Sc)n(heme)g(co)r +(de.)2090 5321 y Fm(\(quote)41 b(a\))746 b Fl(=)-13 b +Fk(\))78 b Fm(a)2090 5412 y(\(quote)41 b(#\(a)f(b)f(c\)\))472 +b Fl(=)-13 b Fk(\))78 b Fm(#\(a)40 b(b)f(c\))2090 5504 +y(\(quote)i(\(+)e(1)h(2\)\))511 b Fl(=)-13 b Fk(\))78 +b Fm(\(+)39 b(1)h(2\))p eop +%%Page: 9 9 +9 8 bop 3373 -125 a Fy(4.)55 b(Expressions)81 b(9)-300 +82 y Fq(\(quote)41 b Fp(h)p Fy(datum)p Fp(i)q Fq(\))32 +b Fy(ma)n(y)f(b)r(e)i(abbreviated)e(as)h Fq(')p Fp(h)p +Fy(datum)p Fp(i)p Fy(.)51 b(The)-300 182 y(t)n(w)n(o)27 +b(notations)g(are)f(equiv)-5 b(alen)n(t)28 b(in)f(all)h(resp)r(ects.) +-143 331 y Fm('a)1020 b Fl(=)-13 b Fk(\))78 b Fm(a)-143 +423 y('#\(a)40 b(b)g(c\))745 b Fl(=)-13 b Fk(\))78 b +Fm(#\(a)40 b(b)g(c\))-143 514 y('\(\))981 b Fl(=)-13 +b Fk(\))78 b Fm(\(\))-143 605 y('\(+)40 b(1)f(2\))785 +b Fl(=)-13 b Fk(\))78 b Fm(\(+)40 b(1)g(2\))-143 697 +y('\(quote)h(a\))706 b Fl(=)-13 b Fk(\))78 b Fm(\(quote)41 +b(a\))-143 788 y(''a)981 b Fl(=)-13 b Fk(\))78 b Fm(\(quote)41 +b(a\))-300 946 y Fy(Numerical)20 b(constan)n(ts,)h(string)f(constan)n +(ts,)g(c)n(haracter)f(constan)n(ts,)-300 1045 y(and)k(b)r(o)r(olean)f +(constan)n(ts)g(ev)-5 b(aluate)23 b(\\to)f(themselv)n(es";)i(they)f +(need)-300 1145 y(not)28 b(b)r(e)g(quoted.)-143 1294 +y Fm('"abc")864 b Fl(=)-13 b Fk(\))78 b Fm("abc")-143 +1386 y("abc")903 b Fl(=)-13 b Fk(\))78 b Fm("abc")-143 +1477 y('145932)825 b Fl(=)-13 b Fk(\))78 b Fm(145932)-143 +1568 y(145932)864 b Fl(=)-13 b Fk(\))78 b Fm(145932)-143 +1660 y('#t)981 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 1751 +y(#t)1020 b Fl(=)-13 b Fk(\))78 b Fm(#t)-300 1909 y Fy(As)33 +b(noted)g(in)h(section)e(3.4,)i(it)g(is)f(an)f(error)f(to)i(alter)g(a)g +(constan)n(t)-300 2008 y(\(i.e.)24 b(the)f(v)-5 b(alue)24 +b(of)f(a)g(literal)g(expression\))f(using)h(a)g(m)n(utation)g(pro-)-300 +2108 y(cedure)k(lik)n(e)g Fq(set-car!)e Fy(or)h Fq(string-set!)p +Fy(.)-300 2365 y Fv(4.1.3.)46 b(Pro)s(cedure)32 b(calls)-300 +2581 y Fq(\()p Fp(h)p Fy(op)r(erator)p Fp(i)42 b(h)p +Fy(op)r(erand)485 2593 y Fr(1)522 2581 y Fp(i)h Fo(:)14 +b(:)g(:)g Fq(\))819 b Fy(syn)n(tax)-300 2714 y(A)33 b(pro)r(cedure)e +(call)h(is)g(written)h(b)n(y)f(simply)g(enclosing)f(in)i(paren-)-300 +2805 y(theses)g(expressions)e(for)h(the)i(pro)r(cedure)e(to)h(b)r(e)g +(called)g(and)f(the)-300 2897 y(argumen)n(ts)f(to)h(b)r(e)g(passed)g +(to)f(it.)51 b(The)32 b(op)r(erator)f(and)h(op)r(erand)-300 +2988 y(expressions)22 b(are)h(ev)-5 b(aluated)23 b(\(in)h(an)f(unsp)r +(eci\014ed)h(order\))f(and)g(the)-300 3079 y(resulting)f(pro)r(cedure)g +(is)h(passed)f(the)i(resulting)e(argumen)n(ts.)-143 3212 +y Fm(\(+)40 b(3)f(4\))824 b Fl(=)-13 b Fk(\))78 b Fm(7)-143 +3304 y(\(\(if)40 b(#f)g(+)f(*\))h(3)f(4\))432 b Fl(=)-13 +b Fk(\))78 b Fm(12)-300 3445 y Fy(A)25 b(n)n(um)n(b)r(er)g(of)g(pro)r +(cedures)e(are)h(a)n(v)-5 b(ailable)24 b(as)g(the)h(v)-5 +b(alues)25 b(of)g(v)-5 b(ari-)-300 3544 y(ables)27 b(in)h(the)h +(initial)f(en)n(vironmen)n(t;)f(for)g(example,)h(the)g(addition)-300 +3644 y(and)35 b(m)n(ultiplication)g(pro)r(cedures)f(in)h(the)h(ab)r(o)n +(v)n(e)d(examples)i(are)-300 3744 y(the)21 b(v)-5 b(alues)19 +b(of)h(the)h(v)-5 b(ariables)19 b Fq(+)g Fy(and)h Fq(*)p +Fy(.)34 b(New)21 b(pro)r(cedures)e(are)g(cre-)-300 3843 +y(ated)25 b(b)n(y)g(ev)-5 b(aluating)24 b Fq(lambda)f +Fy(expressions)g(\(see)i(section)g(4.1.4\).)-300 3984 +y(Pro)r(cedure)45 b(calls)h(ma)n(y)h(return)f(an)n(y)g(n)n(um)n(b)r(er) +h(of)f(v)-5 b(alues)47 b(\(see)-300 4084 y Fq(values)27 +b Fy(in)j(section)f(6.4\).)41 b(With)30 b(the)g(exception)f(of)g +Fq(values)e Fy(the)-300 4184 y(pro)r(cedures)h(a)n(v)-5 +b(ailable)28 b(in)i(the)g(initial)g(en)n(vironmen)n(t)e(return)h(one) +-300 4283 y(v)-5 b(alue)28 b(or,)g(for)g(pro)r(cedures)f(suc)n(h)h(as)f +Fq(apply)p Fy(,)g(pass)g(on)i(the)f(v)-5 b(alues)-300 +4383 y(returned)27 b(b)n(y)g(a)h(call)f(to)g(one)h(of)f(their)h +(argumen)n(ts.)-300 4524 y(Pro)r(cedure)e(calls)h(are)g(also)f(called)h +Fw(c)l(ombinations)p Fy(.)-300 4665 y Fj(Note:)136 b +Fl(In)42 b(con)n(trast)h(to)f(other)h(dialects)h(of)f(Lisp,)k(the)42 +b(order)h(of)-300 4765 y(ev)l(aluation)30 b(is)f(unsp)r(eci\014ed,)h +(and)f(the)g(op)r(erator)h(expression)f(and)g(the)-300 +4864 y(op)r(erand)c(expressions)h(are)g(alw)n(a)n(ys)g(ev)l(aluated)f +(with)h(the)e(same)h(ev)l(alu-)-300 4964 y(ation)h(rules.)-300 +5105 y Fj(Note:)82 b Fl(Although)28 b(the)h(order)g(of)h(ev)l(aluation) +f(is)h(otherwise)g(unsp)r(eci-)-300 5205 y(\014ed,)23 +b(the)f(e\013ect)h(of)g(an)n(y)f(concurren)n(t)h(ev)l(aluation)g(of)g +(the)f(op)r(erator)i(and)-300 5304 y(op)r(erand)29 b(expressions)h(is)f +(constrained)h(to)f(b)r(e)g(consisten)n(t)h(with)f(some)-300 +5404 y(sequen)n(tial)d(order)g(of)h(ev)l(aluation.)35 +b(The)26 b(order)g(of)h(ev)l(aluation)f(ma)n(y)f(b)r(e)-300 +5504 y(c)n(hosen)h(di\013eren)n(tly)f(for)h(eac)n(h)g(pro)r(cedure)g +(call.)1933 82 y Fj(Note:)93 b Fl(In)31 b(man)n(y)f(dialects)j(of)f +(Lisp,)i(the)d(empt)n(y)f(com)n(bination,)j Fm(\(\))p +Fl(,)1933 182 y(is)27 b(a)g(legitimate)g(expression.)37 +b(In)26 b(Sc)n(heme,)f(com)n(binations)i(m)n(ust)e(ha)n(v)n(e)1933 +281 y(at)36 b(least)h(one)f(sub)r(expression,)i(so)f +Fm(\(\))f Fl(is)g(not)g(a)g(syn)n(tactically)g(v)l(alid)1933 +381 y(expression.)1933 593 y Fv(4.1.4.)46 b(Pro)s(cedures)1933 +788 y Fq(\(lambda)41 b Fp(h)p Fy(formals)p Fp(i)i(h)p +Fy(b)r(o)r(dy)p Fp(i)q Fq(\))857 b Fy(syn)n(tax)1933 +917 y Fw(Syntax:)59 b Fp(h)p Fy(F)-7 b(ormals)p Fp(i)38 +b Fy(should)h(b)r(e)g(a)f(formal)g(argumen)n(ts)g(list)h(as)1933 +1016 y(describ)r(ed)32 b(b)r(elo)n(w,)g(and)g Fp(h)p +Fy(b)r(o)r(dy)p Fp(i)h Fy(should)e(b)r(e)h(a)g(sequence)f(of)h(one)1933 +1116 y(or)27 b(more)g(expressions.)1933 1244 y Fw(Semantics:)38 +b Fy(A)26 b Fq(lambda)e Fy(expression)g(ev)-5 b(aluates)26 +b(to)g(a)f(pro)r(cedure.)1933 1344 y(The)e(en)n(vironmen)n(t)f(in)i +(e\013ect)f(when)h(the)f Fq(lambda)e Fy(expression)g(w)n(as)1933 +1444 y(ev)-5 b(aluated)31 b(is)f(remem)n(b)r(ered)g(as)g(part)h(of)f +(the)h(pro)r(cedure.)46 b(When)1933 1543 y(the)31 b(pro)r(cedure)e(is)h +(later)g(called)g(with)h(some)f(actual)f(argumen)n(ts,)1933 +1643 y(the)22 b(en)n(vironmen)n(t)e(in)h(whic)n(h)g(the)g +Fq(lambda)e Fy(expression)h(w)n(as)g(ev)-5 b(alu-)1933 +1743 y(ated)20 b(will)h(b)r(e)f(extended)h(b)n(y)f(binding)g(the)h(v)-5 +b(ariables)19 b(in)h(the)h(formal)1933 1842 y(argumen)n(t)30 +b(list)i(to)f(fresh)g(lo)r(cations,)g(the)g(corresp)r(onding)f(actual) +1933 1942 y(argumen)n(t)e(v)-5 b(alues)28 b(will)g(b)r(e)h(stored)f(in) +h(those)f(lo)r(cations,)f(and)i(the)1933 2041 y(expressions)k(in)h(the) +g(b)r(o)r(dy)g(of)g(the)h Fq(lambda)c Fy(expression)i(will)h(b)r(e)1933 +2141 y(ev)-5 b(aluated)32 b(sequen)n(tially)g(in)g(the)h(extended)f(en) +n(vironmen)n(t.)50 b(The)1933 2241 y(result\(s\))24 b(of)f(the)g(last)g +(expression)f(in)h(the)h(b)r(o)r(dy)g(will)f(b)r(e)h(returned)1933 +2340 y(as)j(the)h(result\(s\))g(of)f(the)h(pro)r(cedure)f(call.)2090 +2471 y Fm(\(lambda)41 b(\(x\))f(\(+)g(x)f(x\)\))315 b +Fl(=)-13 b Fk(\))78 b Fj(a)39 b(pr)l(o)l(c)l(e)l(dur)l(e)2090 +2562 y Fm(\(\(lambda)i(\(x\))f(\(+)g(x)f(x\)\))h(4\))158 +b Fl(=)-13 b Fk(\))78 b Fm(8)2090 2745 y(\(define)41 +b(reverse-subtract)2169 2836 y(\(lambda)f(\(x)g(y\))g(\(-)g(y)f +(x\)\)\))2090 2927 y(\(reverse-subtract)k(7)d(10\))197 +b Fl(=)-13 b Fk(\))78 b Fm(3)2090 3110 y(\(define)41 +b(add4)2169 3201 y(\(let)f(\(\(x)g(4\)\))2247 3293 y(\(lambda)h(\(y\))f +(\(+)g(x)f(y\)\)\)\))2090 3384 y(\(add4)i(6\))785 b Fl(=)-13 +b Fk(\))78 b Fm(10)1933 3523 y Fp(h)p Fy(F)-7 b(ormals)p +Fp(i)27 b Fy(should)h(ha)n(v)n(e)e(one)h(of)h(the)g(follo)n(wing)e +(forms:)2016 3702 y Fp(\017)41 b Fq(\()p Fp(h)p Fy(v)-5 +b(ariable)2460 3714 y Fr(1)2496 3702 y Fp(i)44 b Fo(:)14 +b(:)g(:)g Fq(\))p Fy(:)45 b(The)32 b(pro)r(cedure)f(tak)n(es)g(a)g +(\014xed)h(n)n(um-)2099 3802 y(b)r(er)k(of)g(argumen)n(ts;)j(when)d +(the)g(pro)r(cedure)f(is)h(called,)i(the)2099 3902 y(argumen)n(ts)27 +b(will)h(b)r(e)g(stored)f(in)h(the)g(bindings)f(of)h(the)g(corre-)2099 +4001 y(sp)r(onding)g(v)-5 b(ariables.)2016 4155 y Fp(\017)41 +b(h)p Fy(v)-5 b(ariable)p Fp(i)p Fy(:)64 b(The)42 b(pro)r(cedure)e(tak) +n(es)g(an)n(y)h(n)n(um)n(b)r(er)g(of)g(ar-)2099 4254 +y(gumen)n(ts;)36 b(when)d(the)h(pro)r(cedure)e(is)h(called,)h(the)g +(sequence)2099 4354 y(of)41 b(actual)f(argumen)n(ts)f(is)h(con)n(v)n +(erted)f(in)n(to)i(a)f(newly)g(allo-)2099 4454 y(cated)31 +b(list,)g(and)g(the)g(list)f(is)h(stored)f(in)g(the)h(binding)g(of)g +(the)2099 4553 y Fp(h)p Fy(v)-5 b(ariable)p Fp(i)p Fy(.)2016 +4707 y Fp(\017)41 b Fq(\()p Fp(h)p Fy(v)-5 b(ariable)2460 +4719 y Fr(1)2496 4707 y Fp(i)44 b Fo(:)14 b(:)g(:)57 +b Fp(h)p Fy(v)-5 b(ariable)3043 4719 y Fn(n)3088 4707 +y Fp(i)44 b Fv(.)f Fp(h)p Fy(v)-5 b(ariable)3551 4719 +y Fn(n)p Fr(+1)3679 4707 y Fp(i)q Fq(\))p Fy(:)104 b(If)63 +b(a)2099 4806 y(space-delimited)22 b(p)r(erio)r(d)g(precedes)g(the)g +(last)g(v)-5 b(ariable,)23 b(then)2099 4906 y(the)40 +b(pro)r(cedure)e(tak)n(es)h Fo(n)g Fy(or)g(more)f(argumen)n(ts,)j +(where)e Fo(n)2099 5005 y Fy(is)32 b(the)g(n)n(um)n(b)r(er)f(of)g +(formal)g(argumen)n(ts)f(b)r(efore)h(the)h(p)r(erio)r(d)2099 +5105 y(\(there)e(m)n(ust)f(b)r(e)h(at)f(least)g(one\).)41 +b(The)30 b(v)-5 b(alue)29 b(stored)f(in)i(the)2099 5205 +y(binding)i(of)f(the)h(last)f(v)-5 b(ariable)31 b(will)h(b)r(e)f(a)g +(newly)h(allo)r(cated)2099 5304 y(list)23 b(of)f(the)h(actual)e +(argumen)n(ts)g(left)i(o)n(v)n(er)d(after)i(all)g(the)h(other)2099 +5404 y(actual)34 b(argumen)n(ts)f(ha)n(v)n(e)g(b)r(een)h(matc)n(hed)g +(up)h(against)e(the)2099 5504 y(other)27 b(formal)g(argumen)n(ts.)p +eop +%%Page: 10 10 +10 9 bop -300 -125 a Fy(10)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y(It)29 b(is)f(an)g(error)e(for)i(a)g +Fp(h)p Fy(v)-5 b(ariable)p Fp(i)27 b Fy(to)i(app)r(ear)e(more)g(than)i +(once)f(in)-300 182 y Fp(h)p Fy(formals)p Fp(i)o Fy(.)-143 +338 y Fm(\(\(lambda)41 b(x)e(x\))h(3)g(4)f(5)g(6\))236 +b Fl(=)-13 b Fk(\))78 b Fm(\(3)40 b(4)g(5)f(6\))-143 +429 y(\(\(lambda)i(\(x)f(y)f(.)h(z\))f(z\))-104 521 y(3)h(4)f(5)h(6\)) +745 b Fl(=)-13 b Fk(\))78 b Fm(\(5)40 b(6\))-300 685 +y Fy(Eac)n(h)18 b(pro)r(cedure)g(created)h(as)g(the)g(result)g(of)h(ev) +-5 b(aluating)18 b(a)h Fq(lambda)-300 785 y Fy(expression)h(is)h +(\(conceptually\))g(tagged)f(with)h(a)g(storage)e(lo)r(cation,)-300 +884 y(in)36 b(order)e(to)h(mak)n(e)g Fq(eqv?)f Fy(and)h +Fq(eq?)f Fy(w)n(ork)h(on)g(pro)r(cedures)f(\(see)-300 +984 y(section)27 b(6.1\).)-300 1255 y Fv(4.1.5.)46 b(Conditionals)-300 +1478 y Fq(\(if)c Fp(h)p Fy(test)p Fp(i)j(h)p Fy(consequen)n(t)p +Fp(i)e(h)p Fy(alternate)p Fp(i)p Fq(\))517 b Fy(syn)n(tax)-300 +1578 y Fq(\(if)42 b Fp(h)p Fy(test)p Fp(i)j(h)p Fy(consequen)n(t)p +Fp(i)o Fq(\))949 b Fy(syn)n(tax)-300 1721 y Fw(Syntax:)36 +b Fp(h)p Fy(T)-7 b(est)p Fp(i)q Fy(,)25 b Fp(h)p Fy(consequen)n(t)p +Fp(i)p Fy(,)g(and)f Fp(h)p Fy(alternate)p Fp(i)g Fy(ma)n(y)f(b)r(e)i +(arbi-)-300 1821 y(trary)h(expressions.)-300 1965 y Fw(Semantics:)39 +b Fy(An)27 b Fq(if)g Fy(expression)f(is)h(ev)-5 b(aluated)27 +b(as)g(follo)n(ws:)36 b(\014rst,)-300 2064 y Fp(h)p Fy(test)p +Fp(i)48 b Fy(is)f(ev)-5 b(aluated.)96 b(If)48 b(it)f(yields)g(a)g(true) +g(v)-5 b(alue)47 b(\(see)h(sec-)-300 2164 y(tion)26 b(6.3.1\),)g(then)h +Fp(h)p Fy(consequen)n(t)p Fp(i)f Fy(is)g(ev)-5 b(aluated)26 +b(and)g(its)h(v)-5 b(alue\(s\))-300 2264 y(is\(are\))22 +b(returned.)35 b(Otherwise)21 b Fp(h)p Fy(alternate)p +Fp(i)i Fy(is)f(ev)-5 b(aluated)22 b(and)h(its)-300 2363 +y(v)-5 b(alue\(s\))30 b(is\(are\))f(returned.)42 b(If)30 +b Fp(h)p Fy(test)p Fp(i)g Fy(yields)f(a)g(false)h(v)-5 +b(alue)29 b(and)-300 2463 y(no)23 b Fp(h)p Fy(alternate)p +Fp(i)g Fy(is)h(sp)r(eci\014ed,)g(then)g(the)g(result)f(of)g(the)h +(expression)-300 2563 y(is)j(unsp)r(eci\014ed.)-143 2719 +y Fm(\(if)40 b(\(>)g(3)f(2\))h('yes)g('no\))275 b Fl(=)-13 +b Fk(\))78 b Fm(yes)-143 2810 y(\(if)40 b(\(>)g(2)f(3\))h('yes)g('no\)) +275 b Fl(=)-13 b Fk(\))78 b Fm(no)-143 2901 y(\(if)40 +b(\(>)g(3)f(2\))14 2993 y(\(-)h(3)f(2\))14 3084 y(\(+)h(3)f(2\)\))628 +b Fl(=)-13 b Fk(\))78 b Fm(1)-300 3376 y Fv(4.1.6.)46 +b(Assignmen)m(ts)-300 3599 y Fq(\(set!)c Fp(h)p Fy(v)-5 +b(ariable)p Fp(i)43 b(h)p Fy(expression)p Fp(i)o Fq(\))736 +b Fy(syn)n(tax)-300 3743 y Fp(h)p Fy(Expression)p Fp(i)24 +b Fy(is)h(ev)-5 b(aluated,)25 b(and)g(the)g(resulting)g(v)-5 +b(alue)25 b(is)g(stored)-300 3842 y(in)38 b(the)g(lo)r(cation)f(to)h +(whic)n(h)g Fp(h)p Fy(v)-5 b(ariable)p Fp(i)37 b Fy(is)g(b)r(ound.)68 +b Fp(h)p Fy(V)-7 b(ariable)p Fp(i)-300 3942 y Fy(m)n(ust)36 +b(b)r(e)g(b)r(ound)g(either)f(in)h(some)f(region)f(enclosing)g(the)i +Fq(set!)-300 4041 y Fy(expression)18 b(or)g(at)h(top)h(lev)n(el.)33 +b(The)20 b(result)f(of)g(the)h Fq(set!)d Fy(expression)-300 +4141 y(is)27 b(unsp)r(eci\014ed.)-143 4297 y Fm(\(define)41 +b(x)e(2\))-143 4388 y(\(+)h(x)f(1\))824 b Fl(=)-13 b +Fk(\))78 b Fm(3)-143 4480 y(\(set!)40 b(x)g(4\))706 b +Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +4571 y Fm(\(+)40 b(x)f(1\))824 b Fl(=)-13 b Fk(\))78 +b Fm(5)-300 4889 y Fu(4.2.)56 b(Deriv)m(ed)37 b(expression)h(t)m(yp)s +(es)-300 5105 y Fy(The)g(constructs)f(in)h(this)g(section)g(are)e(h)n +(ygienic,)k(as)d(discussed)-300 5205 y(in)i(section)g(4.3.)70 +b(F)-7 b(or)38 b(reference)g(purp)r(oses,)j(section)e(7.3)f(giv)n(es) +-300 5304 y(macro)28 b(de\014nitions)i(that)g(will)g(con)n(v)n(ert)e +(most)i(of)g(the)g(constructs)-300 5404 y(describ)r(ed)h(in)h(this)f +(section)g(in)n(to)h(the)f(primitiv)n(e)g(constructs)g(de-)-300 +5504 y(scrib)r(ed)c(in)h(the)g(previous)f(section.)1933 +82 y Fv(4.2.1.)46 b(Conditionals)1933 297 y Fq(\(cond)c +Fp(h)p Fy(clause)2445 309 y Fr(1)2482 297 y Fp(i)h(h)p +Fy(clause)2807 309 y Fr(2)2844 297 y Fp(i)h Fo(:)14 b(:)g(:)g +Fq(\))459 b Fy(library)26 b(syn)n(tax)1933 429 y Fw(Syntax:)38 +b Fy(Eac)n(h)27 b Fp(h)p Fy(clause)p Fp(i)g Fy(should)g(b)r(e)h(of)g +(the)g(form)2090 560 y Fm(\()p Fk(h)p Fl(test)p Fk(i)40 +b(h)p Fl(expression)2727 568 y Fi(1)2762 560 y Fk(i)f +Fh(:)13 b(:)g(:)g Fm(\))1933 692 y Fy(where)38 b Fp(h)p +Fy(test)p Fp(i)h Fy(is)g(an)n(y)e(expression.)68 b(Alternativ)n(ely)-7 +b(,)40 b(a)e Fp(h)p Fy(clause)p Fp(i)1933 783 y Fy(ma)n(y)27 +b(b)r(e)h(of)g(the)g(form)2090 915 y Fm(\()p Fk(h)p Fl(test)p +Fk(i)40 b Fm(=>)f Fk(h)p Fl(expression)p Fk(i)q Fm(\))1933 +1047 y Fy(The)33 b(last)g Fp(h)p Fy(clause)p Fp(i)g Fy(ma)n(y)f(b)r(e)h +(an)f(\\else)h(clause,")g(whic)n(h)f(has)h(the)1933 1138 +y(form)2090 1270 y Fm(\(else)41 b Fk(h)p Fl(expression)2700 +1278 y Fi(1)2735 1270 y Fk(i)e(h)p Fl(expression)3178 +1278 y Fi(2)3213 1270 y Fk(i)g Fh(:)13 b(:)g(:)g Fm(\))p +Fl(.)1933 1410 y Fw(Semantics:)49 b Fy(A)34 b Fq(cond)e +Fy(expression)g(is)h(ev)-5 b(aluated)33 b(b)n(y)g(ev)-5 +b(aluating)1933 1510 y(the)29 b Fp(h)p Fy(test)p Fp(i)f +Fy(expressions)f(of)h(successiv)n(e)e Fp(h)p Fy(clause)p +Fp(i)p Fy(s)i(in)g(order)f(un)n(til)1933 1610 y(one)34 +b(of)f(them)i(ev)-5 b(aluates)33 b(to)g(a)h(true)f(v)-5 +b(alue)34 b(\(see)g(section)f(6.3.1\).)1933 1709 y(When)d(a)g +Fp(h)p Fy(test)p Fp(i)g Fy(ev)-5 b(aluates)29 b(to)g(a)h(true)f(v)-5 +b(alue,)30 b(then)g(the)g(remain-)1933 1809 y(ing)44 +b Fp(h)p Fy(expression)p Fp(i)o Fy(s)g(in)g(its)g Fp(h)p +Fy(clause)p Fp(i)g Fy(are)f(ev)-5 b(aluated)44 b(in)g(order,)1933 +1908 y(and)38 b(the)h(result\(s\))f(of)g(the)g(last)g +Fp(h)p Fy(expression)p Fp(i)f Fy(in)i(the)f Fp(h)p Fy(clause)p +Fp(i)1933 2008 y Fy(is\(are\))28 b(returned)h(as)f(the)h(result\(s\))f +(of)h(the)g(en)n(tire)f Fq(cond)f Fy(expres-)1933 2108 +y(sion.)34 b(If)21 b(the)g(selected)g Fp(h)p Fy(clause)p +Fp(i)f Fy(con)n(tains)g(only)g(the)h Fp(h)p Fy(test)p +Fp(i)g Fy(and)f(no)1933 2207 y Fp(h)p Fy(expression)p +Fp(i)o Fy(s,)j(then)f(the)g(v)-5 b(alue)21 b(of)g(the)h +Fp(h)p Fy(test)p Fp(i)h Fy(is)e(returned)g(as)g(the)1933 +2307 y(result.)43 b(If)31 b(the)f(selected)f Fp(h)p Fy(clause)p +Fp(i)h Fy(uses)f(the)h Fq(=>)f Fy(alternate)g(form,)1933 +2407 y(then)23 b(the)g Fp(h)p Fy(expression)p Fp(i)f +Fy(is)g(ev)-5 b(aluated.)35 b(Its)22 b(v)-5 b(alue)23 +b(m)n(ust)f(b)r(e)h(a)f(pro-)1933 2506 y(cedure)32 b(that)g(accepts)f +(one)g(argumen)n(t;)i(this)f(pro)r(cedure)f(is)h(then)1933 +2606 y(called)d(on)f(the)h(v)-5 b(alue)29 b(of)f(the)h +Fp(h)p Fy(test)p Fp(i)h Fy(and)f(the)g(v)-5 b(alue\(s\))29 +b(returned)1933 2706 y(b)n(y)e(this)g(pro)r(cedure)f(is\(are\))g +(returned)g(b)n(y)h(the)g Fq(cond)f Fy(expression.)1933 +2805 y(If)34 b(all)f Fp(h)p Fy(test)p Fp(i)q Fy(s)g(ev)-5 +b(aluate)33 b(to)g(false)g(v)-5 b(alues,)35 b(and)e(there)g(is)g(no)g +(else)1933 2905 y(clause,)28 b(then)h(the)g(result)f(of)g(the)h +(conditional)f(expression)f(is)h(un-)1933 3004 y(sp)r(eci\014ed;)23 +b(if)d(there)g(is)f(an)h(else)f(clause,)i(then)f(its)g +Fp(h)p Fy(expression)p Fp(i)o Fy(s)f(are)1933 3104 y(ev)-5 +b(aluated,)24 b(and)f(the)g(v)-5 b(alue\(s\))23 b(of)g(the)h(last)e +(one)h(is\(are\))g(returned.)2090 3252 y Fm(\(cond)41 +b(\(\(>)e(3)h(2\))g('greater\))2326 3343 y(\(\(<)f(3)h(2\))g('less\)\)) +237 b Fl(=)-13 b Fk(\))78 b Fm(greater)2090 3435 y(\(cond)41 +b(\(\(>)e(3)h(3\))g('greater\))2326 3526 y(\(\(<)f(3)h(3\))g('less\)) +2326 3617 y(\(else)g('equal\)\))316 b Fl(=)-13 b Fk(\))78 +b Fm(equal)2090 3709 y(\(cond)41 b(\(\(assv)f('b)g('\(\(a)g(1\))g(\(b)f +(2\)\)\))h(=>)g(cadr\))2326 3800 y(\(else)g(#f\)\))472 +b Fl(=)-13 b Fk(\))78 b Fm(2)1933 4064 y Fq(\(case)42 +b Fp(h)p Fy(k)n(ey)p Fp(i)h(h)p Fy(clause)2675 4076 y +Fr(1)2712 4064 y Fp(i)h(h)p Fy(clause)3038 4076 y Fr(2)3075 +4064 y Fp(i)f Fo(:)14 b(:)g(:)g Fq(\))229 b Fy(library)26 +b(syn)n(tax)1933 4196 y Fw(Syntax:)75 b Fp(h)p Fy(Key)p +Fp(i)47 b Fy(ma)n(y)g(b)r(e)g(an)n(y)g(expression.)95 +b(Eac)n(h)46 b Fp(h)p Fy(clause)p Fp(i)1933 4287 y Fy(should)28 +b(ha)n(v)n(e)e(the)i(form)2090 4419 y Fm(\(\()p Fk(h)p +Fl(datum)2417 4427 y Fi(1)2451 4419 y Fk(i)39 b Fh(:)13 +b(:)g(:)g Fm(\))40 b Fk(h)p Fl(expression)3075 4427 y +Fi(1)3110 4419 y Fk(i)f(h)p Fl(expression)3553 4427 y +Fi(2)3588 4419 y Fk(i)g Fh(:)13 b(:)g(:)g Fm(\))p Fl(,)1933 +4551 y Fy(where)29 b(eac)n(h)g Fp(h)p Fy(datum)p Fp(i)i +Fy(is)f(an)f(external)g(represen)n(tation)f(of)i(some)1933 +4642 y(ob)5 b(ject.)96 b(All)47 b(the)h Fp(h)p Fy(datum)p +Fp(i)p Fy(s)f(m)n(ust)h(b)r(e)f(distinct.)96 b(The)47 +b(last)1933 4733 y Fp(h)p Fy(clause)p Fp(i)28 b Fy(ma)n(y)f(b)r(e)h(an) +f(\\else)g(clause,")f(whic)n(h)i(has)f(the)h(form)2090 +4865 y Fm(\(else)41 b Fk(h)p Fl(expression)2700 4873 +y Fi(1)2735 4865 y Fk(i)e(h)p Fl(expression)3178 4873 +y Fi(2)3213 4865 y Fk(i)g Fh(:)13 b(:)g(:)g Fm(\))p Fl(.)1933 +5005 y Fw(Semantics:)77 b Fy(A)48 b Fq(case)f Fy(expression)g(is)h(ev) +-5 b(aluated)48 b(as)f(follo)n(ws.)1933 5105 y Fp(h)p +Fy(Key)p Fp(i)28 b Fy(is)f(ev)-5 b(aluated)28 b(and)f(its)h(result)f +(is)h(compared)e(against)h(eac)n(h)1933 5205 y Fp(h)p +Fy(datum)p Fp(i)q Fy(.)77 b(If)41 b(the)h(result)e(of)h(ev)-5 +b(aluating)41 b Fp(h)p Fy(k)n(ey)p Fp(i)g Fy(is)f(equiv)-5 +b(alen)n(t)1933 5304 y(\(in)32 b(the)g(sense)f(of)g Fq(eqv?)p +Fy(;)h(see)f(section)g(6.1\))f(to)i(a)e Fp(h)p Fy(datum)p +Fp(i)q Fy(,)j(then)1933 5404 y(the)24 b(expressions)d(in)i(the)h +(corresp)r(onding)d Fp(h)p Fy(clause)p Fp(i)h Fy(are)g(ev)-5 +b(aluated)1933 5504 y(from)25 b(left)g(to)g(righ)n(t)e(and)i(the)g +(result\(s\))g(of)f(the)h(last)g(expression)e(in)p eop +%%Page: 11 11 +11 10 bop 3322 -125 a Fy(4.)64 b(Expressions)81 b(11)-300 +82 y(the)22 b Fp(h)p Fy(clause)p Fp(i)f Fy(is\(are\))g(returned)g(as)g +(the)h(result\(s\))f(of)h(the)f Fq(case)f Fy(ex-)-300 +182 y(pression.)39 b(If)29 b(the)g(result)g(of)f(ev)-5 +b(aluating)28 b Fp(h)p Fy(k)n(ey)p Fp(i)h Fy(is)f(di\013eren)n(t)h +(from)-300 281 y(ev)n(ery)35 b Fp(h)p Fy(datum)p Fp(i)q +Fy(,)j(then)f(if)f(there)g(is)h(an)e(else)h(clause)g(its)g(expres-)-300 +381 y(sions)26 b(are)g(ev)-5 b(aluated)27 b(and)f(the)i(result\(s\))f +(of)f(the)i(last)e(is\(are\))g(the)-300 481 y(result\(s\))d(of)h(the)g +Fq(case)d Fy(expression;)j(otherwise)e(the)i(result)f(of)g(the)-300 +580 y Fq(case)j Fy(expression)g(is)i(unsp)r(eci\014ed.)-143 +734 y Fm(\(case)40 b(\(*)g(2)f(3\))-65 825 y(\(\(2)h(3)g(5)f(7\))h +('prime\))-65 917 y(\(\(1)g(4)g(6)f(8)h(9\))f('composite\)\))j +Fl(=)-13 b Fk(\))78 b Fm(composite)-143 1008 y(\(case)40 +b(\(car)g('\(c)g(d\)\))-65 1099 y(\(\(a\))h('a\))-65 +1191 y(\(\(b\))g('b\)\))667 b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l +(ci\014e)l(d)-143 1282 y Fm(\(case)40 b(\(car)g('\(c)g(d\)\))-65 +1373 y(\(\(a)g(e)g(i)f(o)h(u\))f('vowel\))-65 1465 y(\(\(w)h(y\))g +('semivowel\))-65 1556 y(\(else)h('consonant\)\))316 +b Fl(=)-13 b Fk(\))78 b Fm(consonant)-300 1834 y Fq(\(and)42 +b Fp(h)p Fy(test)84 1846 y Fr(1)122 1834 y Fp(i)i Fo(:)14 +b(:)g(:)f Fq(\))948 b Fy(library)27 b(syn)n(tax)-300 +1977 y(The)d Fp(h)p Fy(test)p Fp(i)h Fy(expressions)d(are)h(ev)-5 +b(aluated)24 b(from)f(left)i(to)f(righ)n(t,)g(and)-300 +2077 y(the)35 b(v)-5 b(alue)35 b(of)g(the)h(\014rst)e(expression)g +(that)h(ev)-5 b(aluates)35 b(to)g(a)f(false)-300 2176 +y(v)-5 b(alue)37 b(\(see)g(section)f(6.3.1\))g(is)h(returned.)64 +b(An)n(y)37 b(remaining)f(ex-)-300 2276 y(pressions)25 +b(are)h(not)h(ev)-5 b(aluated.)37 b(If)27 b(all)g(the)g(expressions)e +(ev)-5 b(aluate)-300 2376 y(to)27 b(true)g(v)-5 b(alues,)26 +b(the)i(v)-5 b(alue)26 b(of)h(the)g(last)g(expression)e(is)i(returned.) +-300 2475 y(If)h(there)f(are)g(no)g(expressions)f(then)i +Fq(#t)f Fy(is)h(returned.)-143 2629 y Fm(\(and)40 b(\(=)g(2)f(2\))h +(\(>)g(2)f(1\)\))275 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 +2720 y(\(and)40 b(\(=)g(2)f(2\))h(\(<)g(2)f(1\)\))275 +b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 2812 y(\(and)40 b(1)g(2)f('c)h('\(f) +g(g\)\))353 b Fl(=)-13 b Fk(\))78 b Fm(\(f)40 b(g\))-143 +2903 y(\(and\))903 b Fl(=)-13 b Fk(\))78 b Fm(#t)-300 +3181 y Fq(\(or)42 b Fp(h)p Fy(test)40 3193 y Fr(1)78 +3181 y Fp(i)i Fo(:)14 b(:)g(:)g Fq(\))991 b Fy(library)27 +b(syn)n(tax)-300 3324 y(The)d Fp(h)p Fy(test)p Fp(i)h +Fy(expressions)d(are)h(ev)-5 b(aluated)24 b(from)f(left)i(to)f(righ)n +(t,)g(and)-300 3424 y(the)37 b(v)-5 b(alue)36 b(of)g(the)g(\014rst)g +(expression)f(that)i(ev)-5 b(aluates)35 b(to)h(a)g(true)-300 +3523 y(v)-5 b(alue)37 b(\(see)g(section)f(6.3.1\))g(is)h(returned.)64 +b(An)n(y)37 b(remaining)f(ex-)-300 3623 y(pressions)30 +b(are)g(not)h(ev)-5 b(aluated.)48 b(If)32 b(all)f(expressions)e(ev)-5 +b(aluate)31 b(to)-300 3723 y(false)26 b(v)-5 b(alues,)27 +b(the)g(v)-5 b(alue)26 b(of)h(the)g(last)f(expression)f(is)h(returned.) +36 b(If)-300 3822 y(there)27 b(are)g(no)g(expressions)f(then)i +Fq(#f)f Fy(is)h(returned.)-143 3976 y Fm(\(or)40 b(\(=)g(2)f(2\))h(\(>) +f(2)h(1\)\))314 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 4067 +y(\(or)40 b(\(=)g(2)f(2\))h(\(<)f(2)h(1\)\))314 b Fl(=)-13 +b Fk(\))78 b Fm(#t)-143 4159 y(\(or)40 b(#f)g(#f)f(#f\))589 +b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 4250 y(\(or)40 b(\(memq)g('b)g('\(a) +g(b)f(c\)\))14 4341 y(\(/)h(3)f(0\)\))628 b Fl(=)-13 +b Fk(\))78 b Fm(\(b)40 b(c\))-300 4627 y Fv(4.2.2.)46 +b(Binding)30 b(constructs)-300 4806 y Fy(The)h(three)g(binding)g +(constructs)f Fq(let)p Fy(,)g Fq(let*)p Fy(,)h(and)f +Fq(letrec)f Fy(giv)n(e)-300 4906 y(Sc)n(heme)d(a)f(blo)r(c)n(k)g +(structure,)h(lik)n(e)f(Algol)h(60.)35 b(The)26 b(syn)n(tax)f(of)g(the) +-300 5005 y(three)j(constructs)g(is)h(iden)n(tical,)g(but)g(they)g +(di\013er)f(in)h(the)g(regions)-300 5105 y(they)40 b(establish)g(for)g +(their)g(v)-5 b(ariable)39 b(bindings.)74 b(In)41 b(a)e +Fq(let)g Fy(ex-)-300 5205 y(pression,)26 b(the)i(initial)g(v)-5 +b(alues)27 b(are)f(computed)i(b)r(efore)f(an)n(y)g(of)g(the)-300 +5304 y(v)-5 b(ariables)34 b(b)r(ecome)h(b)r(ound;)k(in)c(a)f +Fq(let*)g Fy(expression,)h(the)h(bind-)-300 5404 y(ings)24 +b(and)g(ev)-5 b(aluations)24 b(are)f(p)r(erformed)h(sequen)n(tially;)h +(while)g(in)f(a)-300 5504 y Fq(letrec)d Fy(expression,)i(all)g(the)h +(bindings)f(are)g(in)g(e\013ect)h(while)g(their)1933 +82 y(initial)31 b(v)-5 b(alues)31 b(are)e(b)r(eing)i(computed,)h(th)n +(us)f(allo)n(wing)e(m)n(utually)1933 182 y(recursiv)n(e)d +(de\014nitions.)1933 430 y Fq(\(let)42 b Fp(h)p Fy(bindings)p +Fp(i)i(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))679 b Fy(library)26 +b(syn)n(tax)1933 560 y Fw(Syntax:)38 b Fp(h)p Fy(Bindings)p +Fp(i)28 b Fy(should)f(ha)n(v)n(e)g(the)h(form)2090 690 +y Fm(\(\()p Fk(h)p Fl(v)l(ariable)2460 698 y Fi(1)2496 +690 y Fk(i)39 b(h)p Fl(init)2710 698 y Fi(1)2744 690 +y Fk(i)p Fm(\))h Fh(:)13 b(:)g(:)g Fm(\))p Fl(,)1933 +829 y Fy(where)26 b(eac)n(h)g Fp(h)p Fy(init)p Fp(i)i +Fy(is)e(an)g(expression,)g(and)g Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)h Fy(should)g(b)r(e)g(a)1933 928 y(sequence)34 b(of)g(one)f(or)g +(more)g(expressions.)54 b(It)35 b(is)f(an)f(error)f(for)i(a)1933 +1028 y Fp(h)p Fy(v)-5 b(ariable)p Fp(i)25 b Fy(to)g(app)r(ear)f(more)h +(than)g(once)g(in)g(the)h(list)f(of)g(v)-5 b(ariables)1933 +1128 y(b)r(eing)28 b(b)r(ound.)1933 1266 y Fw(Semantics:)48 +b Fy(The)33 b Fp(h)p Fy(init)p Fp(i)q Fy(s)f(are)g(ev)-5 +b(aluated)32 b(in)h(the)g(curren)n(t)f(en)n(vi-)1933 +1366 y(ronmen)n(t)38 b(\(in)h(some)f(unsp)r(eci\014ed)h(order\),)h(the) +f Fp(h)p Fy(v)-5 b(ariable)p Fp(i)p Fy(s)38 b(are)1933 +1465 y(b)r(ound)29 b(to)e(fresh)h(lo)r(cations)f(holding)g(the)i +(results,)e(the)i Fp(h)p Fy(b)r(o)r(dy)p Fp(i)f Fy(is)1933 +1565 y(ev)-5 b(aluated)23 b(in)f(the)h(extended)g(en)n(vironmen)n(t,)g +(and)f(the)h(v)-5 b(alue\(s\))23 b(of)1933 1665 y(the)30 +b(last)f(expression)e(of)i Fp(h)p Fy(b)r(o)r(dy)p Fp(i)h +Fy(is\(are\))f(returned.)41 b(Eac)n(h)28 b(bind-)1933 +1764 y(ing)g(of)f(a)g Fp(h)p Fy(v)-5 b(ariable)p Fp(i)28 +b Fy(has)f Fp(h)p Fy(b)r(o)r(dy)p Fp(i)h Fy(as)f(its)h(region.)2090 +1910 y Fm(\(let)40 b(\(\(x)g(2\))g(\(y)g(3\)\))2169 2001 +y(\(*)f(x)h(y\)\))707 b Fl(=)-13 b Fk(\))78 b Fm(6)2090 +2184 y(\(let)40 b(\(\(x)g(2\))g(\(y)g(3\)\))2169 2275 +y(\(let)g(\(\(x)g(7\))2404 2367 y(\(z)g(\(+)f(x)h(y\)\)\))2247 +2458 y(\(*)g(z)f(x\)\)\))590 b Fl(=)-13 b Fk(\))78 b +Fm(35)1933 2612 y Fy(See)28 b(also)e(named)i Fq(let)p +Fy(,)e(section)i(4.2.4.)1933 2854 y Fq(\(let*)42 b Fp(h)p +Fy(bindings)p Fp(i)i(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))635 +b Fy(library)26 b(syn)n(tax)1933 2984 y Fw(Syntax:)38 +b Fp(h)p Fy(Bindings)p Fp(i)28 b Fy(should)f(ha)n(v)n(e)g(the)h(form) +2090 3115 y Fm(\(\()p Fk(h)p Fl(v)l(ariable)2460 3123 +y Fi(1)2496 3115 y Fk(i)39 b(h)p Fl(init)2710 3123 y +Fi(1)2744 3115 y Fk(i)p Fm(\))h Fh(:)13 b(:)g(:)g Fm(\))p +Fl(,)1933 3253 y Fy(and)35 b Fp(h)p Fy(b)r(o)r(dy)p Fp(i)g +Fy(should)g(b)r(e)g(a)f(sequence)g(of)h(one)f(or)g(more)f(expres-)1933 +3353 y(sions.)1933 3492 y Fw(Semantics:)57 b Fq(Let*)36 +b Fy(is)h(similar)f(to)i Fq(let)p Fy(,)g(but)g(the)g(bindings)f(are) +1933 3591 y(p)r(erformed)24 b(sequen)n(tially)f(from)h(left)h(to)f +(righ)n(t,)g(and)g(the)g(region)f(of)1933 3691 y(a)35 +b(binding)g(indicated)g(b)n(y)g Fq(\()p Fp(h)p Fy(v)-5 +b(ariable)p Fp(i)42 b(h)p Fy(init)p Fp(i)q Fq(\))35 b +Fy(is)g(that)g(part)f(of)1933 3790 y(the)c Fq(let*)e +Fy(expression)g(to)i(the)f(righ)n(t)g(of)h(the)g(binding.)42 +b(Th)n(us)30 b(the)1933 3890 y(second)22 b(binding)h(is)f(done)g(in)h +(an)f(en)n(vironmen)n(t)f(in)i(whic)n(h)g(the)f(\014rst)1933 +3990 y(binding)28 b(is)g(visible,)f(and)h(so)e(on.)2090 +4135 y Fm(\(let)40 b(\(\(x)g(2\))g(\(y)g(3\)\))2169 4227 +y(\(let*)g(\(\(x)g(7\))2443 4318 y(\(z)g(\(+)g(x)f(y\)\)\))2247 +4409 y(\(*)h(z)f(x\)\)\))590 b Fl(=)-13 b Fk(\))78 b +Fm(70)1933 4667 y Fq(\(letrec)41 b Fp(h)p Fy(bindings)p +Fp(i)j(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))548 b Fy(library)26 +b(syn)n(tax)1933 4797 y Fw(Syntax:)38 b Fp(h)p Fy(Bindings)p +Fp(i)28 b Fy(should)f(ha)n(v)n(e)g(the)h(form)2090 4927 +y Fm(\(\()p Fk(h)p Fl(v)l(ariable)2460 4935 y Fi(1)2496 +4927 y Fk(i)39 b(h)p Fl(init)2710 4935 y Fi(1)2744 4927 +y Fk(i)p Fm(\))h Fh(:)13 b(:)g(:)g Fm(\))p Fl(,)1933 +5066 y Fy(and)35 b Fp(h)p Fy(b)r(o)r(dy)p Fp(i)g Fy(should)g(b)r(e)g(a) +f(sequence)g(of)h(one)f(or)g(more)f(expres-)1933 5166 +y(sions.)50 b(It)32 b(is)g(an)g(error)e(for)h(a)h Fp(h)p +Fy(v)-5 b(ariable)p Fp(i)32 b Fy(to)g(app)r(ear)f(more)g(than)1933 +5265 y(once)c(in)h(the)g(list)g(of)g(v)-5 b(ariables)26 +b(b)r(eing)i(b)r(ound.)1933 5404 y Fw(Semantics:)58 b +Fy(The)38 b Fp(h)p Fy(v)-5 b(ariable)p Fp(i)o Fy(s)38 +b(are)f(b)r(ound)h(to)f(fresh)h(lo)r(cations)1933 5504 +y(holding)c(unde\014ned)g(v)-5 b(alues,)35 b(the)f Fp(h)p +Fy(init)p Fp(i)q Fy(s)g(are)e(ev)-5 b(aluated)34 b(in)g(the)p +eop +%%Page: 12 12 +12 11 bop -300 -125 a Fy(12)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y(resulting)42 b(en)n(vironmen)n(t)f(\(in)i +(some)f(unsp)r(eci\014ed)h(order\),)j(eac)n(h)-300 182 +y Fp(h)p Fy(v)-5 b(ariable)p Fp(i)40 b Fy(is)g(assigned)f(to)h(the)h +(result)f(of)g(the)h(corresp)r(onding)-300 281 y Fp(h)p +Fy(init)p Fp(i)q Fy(,)22 b(the)e Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)h Fy(is)f(ev)-5 b(aluated)20 b(in)h(the)f(resulting)g(en)n +(vironmen)n(t,)-300 381 y(and)k(the)h(v)-5 b(alue\(s\))25 +b(of)g(the)g(last)f(expression)f(in)i Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)h Fy(is\(are\))e(re-)-300 481 y(turned.)36 b(Eac)n(h)24 +b(binding)h(of)g(a)f Fp(h)p Fy(v)-5 b(ariable)p Fp(i)24 +b Fy(has)h(the)g(en)n(tire)f Fq(letrec)-300 580 y Fy(expression)f(as)g +(its)i(region,)e(making)h(it)g(p)r(ossible)g(to)g(de\014ne)h(m)n(utu-) +-300 680 y(ally)i(recursiv)n(e)f(pro)r(cedures.)-143 +832 y Fm(\(letrec)41 b(\(\(even?)249 923 y(\(lambda)g(\(n\))328 +1014 y(\(if)f(\(zero?)g(n\))485 1106 y(#t)485 1197 y(\(odd?)g(\(-)g(n)f +(1\)\)\)\)\))210 1288 y(\(odd?)249 1379 y(\(lambda)i(\(n\))328 +1471 y(\(if)f(\(zero?)g(n\))485 1562 y(#f)485 1653 y(\(even?)g(\(-)g(n) +f(1\)\)\)\)\)\))-65 1745 y(\(even?)i(88\)\))955 1836 +y Fl(=)-13 b Fk(\))78 b Fm(#t)-300 1996 y Fy(One)34 b(restriction)f(on) +h Fq(letrec)e Fy(is)i(v)n(ery)f(imp)r(ortan)n(t:)50 b(it)35 +b(m)n(ust)f(b)r(e)-300 2096 y(p)r(ossible)28 b(to)h(ev)-5 +b(aluate)28 b(eac)n(h)g Fp(h)p Fy(init)p Fp(i)h Fy(without)g(assigning) +e(or)h(refer-)-300 2195 y(ring)37 b(to)g(the)i(v)-5 b(alue)37 +b(of)h(an)n(y)f Fp(h)p Fy(v)-5 b(ariable)p Fp(i)o Fy(.)67 +b(If)38 b(this)g(restriction)f(is)-300 2295 y(violated,)e(then)f(it)h +(is)e(an)h(error.)54 b(The)34 b(restriction)f(is)h(necessary)-300 +2395 y(b)r(ecause)26 b(Sc)n(heme)g(passes)f(argumen)n(ts)g(b)n(y)h(v)-5 +b(alue)26 b(rather)f(than)h(b)n(y)-300 2494 y(name.)39 +b(In)29 b(the)f(most)h(common)e(uses)h(of)h Fq(letrec)p +Fy(,)d(all)i(the)h Fp(h)p Fy(init)p Fp(i)q Fy(s)-300 +2594 y(are)h Fq(lambda)f Fy(expressions)g(and)i(the)h(restriction)e(is) +h(satis\014ed)f(au-)-300 2693 y(tomatically)-7 b(.)-300 +2955 y Fv(4.2.3.)46 b(Sequencing)-300 3174 y Fq(\(begin)41 +b Fp(h)p Fy(expression)411 3186 y Fr(1)447 3174 y Fp(i)j(h)p +Fy(expression)929 3186 y Fr(2)965 3174 y Fp(i)g Fo(:)14 +b(:)g(:)f Fq(\))105 b Fy(library)27 b(syn)n(tax)-300 +3316 y(The)36 b Fp(h)p Fy(expression)p Fp(i)o Fy(s)g(are)g(ev)-5 +b(aluated)36 b(sequen)n(tially)f(from)h(left)h(to)-300 +3415 y(righ)n(t,)d(and)f(the)h(v)-5 b(alue\(s\))34 b(of)f(the)h(last)f +Fp(h)p Fy(expression)p Fp(i)f Fy(is\(are\))h(re-)-300 +3515 y(turned.)53 b(This)32 b(expression)g(t)n(yp)r(e)h(is)f(used)h(to) +g(sequence)f(side)h(ef-)-300 3615 y(fects)28 b(suc)n(h)f(as)g(input)h +(and)g(output.)-143 3766 y Fm(\(define)41 b(x)e(0\))-143 +3949 y(\(begin)i(\(set!)f(x)f(5\))132 4040 y(\(+)g(x)h(1\)\))510 +b Fl(=)-13 b Fk(\))78 b Fm(6)-143 4223 y(\(begin)41 b(\(display)g("4)e +(plus)h(1)g(equals)g("\))132 4314 y(\(display)h(\(+)e(4)h(1\)\)\))118 +b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)288 +4405 y(and)40 b(prints)80 b Fm(4)39 b(plus)h(1)g(equals)g(5)-300 +4685 y Fv(4.2.4.)46 b(Iteration)-300 4863 y Fq(\(do)c(\(\()p +Fp(h)p Fy(v)-5 b(ariable)279 4875 y Fr(1)315 4863 y Fp(i)44 +b(h)p Fy(init)547 4875 y Fr(1)585 4863 y Fp(i)g(h)p Fy(step)841 +4875 y Fr(1)878 4863 y Fp(i)q Fq(\))345 b Fy(library)27 +b(syn)n(tax)-82 4963 y Fo(:)14 b(:)g(:)g Fq(\))-126 5063 +y(\()p Fp(h)p Fy(test)p Fp(i)44 b(h)p Fy(expression)p +Fp(i)f Fo(:)14 b(:)g(:)g Fq(\))-213 5162 y Fp(h)p Fy(command)p +Fp(i)44 b Fo(:)14 b(:)g(:)g Fq(\))-300 5304 y(Do)30 b +Fy(is)h(an)f(iteration)h(construct.)46 b(It)31 b(sp)r(eci\014es)g(a)f +(set)h(of)g(v)-5 b(ariables)-300 5404 y(to)35 b(b)r(e)g(b)r(ound,)i(ho) +n(w)d(they)h(are)f(to)g(b)r(e)i(initialized)f(at)f(the)h(start,)-300 +5504 y(and)23 b(ho)n(w)g(they)g(are)f(to)h(b)r(e)h(up)r(dated)g(on)e +(eac)n(h)h(iteration.)35 b(When)23 b(a)1933 82 y(termination)c +(condition)f(is)h(met,)i(the)e(lo)r(op)f(exits)g(after)h(ev)-5 +b(aluating)1933 182 y(the)28 b Fp(h)p Fy(expression)p +Fp(i)o Fy(s.)1933 319 y Fq(Do)44 b Fy(expressions)e(are)h(ev)-5 +b(aluated)44 b(as)f(follo)n(ws:)69 b(The)44 b Fp(h)p +Fy(init)p Fp(i)i Fy(ex-)1933 419 y(pressions)39 b(are)h(ev)-5 +b(aluated)40 b(\(in)i(some)e(unsp)r(eci\014ed)h(order\),)i(the)1933 +518 y Fp(h)p Fy(v)-5 b(ariable)p Fp(i)p Fy(s)46 b(are)g(b)r(ound)h(to)f +(fresh)h(lo)r(cations,)j(the)d(results)f(of)1933 618 +y(the)e Fp(h)p Fy(init)p Fp(i)h Fy(expressions)d(are)h(stored)g(in)h +(the)g(bindings)g(of)g(the)1933 717 y Fp(h)p Fy(v)-5 +b(ariable)p Fp(i)p Fy(s,)27 b(and)h(then)g(the)g(iteration)f(phase)g(b) +r(egins.)1933 855 y(Eac)n(h)k(iteration)g(b)r(egins)g(b)n(y)h(ev)-5 +b(aluating)31 b Fp(h)p Fy(test)p Fp(i)q Fy(;)j(if)e(the)g(result)f(is) +1933 954 y(false)j(\(see)f(section)g(6.3.1\),)i(then)f(the)g +Fp(h)p Fy(command)p Fp(i)g Fy(expressions)1933 1054 y(are)42 +b(ev)-5 b(aluated)43 b(in)g(order)f(for)g(e\013ect,)48 +b(the)43 b Fp(h)p Fy(step)p Fp(i)h Fy(expressions)1933 +1154 y(are)d(ev)-5 b(aluated)41 b(in)h(some)g(unsp)r(eci\014ed)g +(order,)i(the)e Fp(h)p Fy(v)-5 b(ariable)p Fp(i)o Fy(s)1933 +1253 y(are)28 b(b)r(ound)h(to)g(fresh)f(lo)r(cations,)g(the)h(results)f +(of)h(the)g Fp(h)p Fy(step)p Fp(i)q Fy(s)f(are)1933 1353 +y(stored)c(in)h(the)h(bindings)f(of)f(the)i Fp(h)p Fy(v)-5 +b(ariable)p Fp(i)o Fy(s,)26 b(and)e(the)i(next)f(iter-)1933 +1452 y(ation)i(b)r(egins.)1933 1590 y(If)34 b Fp(h)p +Fy(test)p Fp(i)h Fy(ev)-5 b(aluates)33 b(to)g(a)h(true)f(v)-5 +b(alue,)35 b(then)f(the)g Fp(h)p Fy(expression)p Fp(i)o +Fy(s)1933 1689 y(are)40 b(ev)-5 b(aluated)40 b(from)g(left)h(to)g(righ) +n(t)e(and)i(the)g(v)-5 b(alue\(s\))40 b(of)h(the)1933 +1789 y(last)33 b Fp(h)p Fy(expression)p Fp(i)g Fy(is\(are\))f +(returned.)54 b(If)34 b(no)f Fp(h)p Fy(expression)p Fp(i)o +Fy(s)g(are)1933 1888 y(presen)n(t,)27 b(then)g(the)g(v)-5 +b(alue)26 b(of)h(the)g Fq(do)f Fy(expression)f(is)i(unsp)r(eci\014ed.) +1933 2026 y(The)38 b(region)d(of)j(the)f(binding)h(of)f(a)f +Fp(h)p Fy(v)-5 b(ariable)p Fp(i)37 b Fy(consists)g(of)g(the)1933 +2125 y(en)n(tire)d Fq(do)g Fy(expression)f(except)i(for)f(the)h +Fp(h)p Fy(init)p Fp(i)q Fy(s.)57 b(It)35 b(is)g(an)f(error)1933 +2225 y(for)28 b(a)g Fp(h)p Fy(v)-5 b(ariable)p Fp(i)28 +b Fy(to)g(app)r(ear)g(more)f(than)i(once)f(in)g(the)h(list)g(of)f +Fq(do)1933 2324 y Fy(v)-5 b(ariables.)1933 2462 y(A)36 +b Fp(h)p Fy(step)p Fp(i)f Fy(ma)n(y)f(b)r(e)i(omitted,)h(in)e(whic)n(h) +g(case)f(the)h(e\013ect)h(is)f(the)1933 2561 y(same)30 +b(as)f(if)h Fq(\()p Fp(h)p Fy(v)-5 b(ariable)p Fp(i)43 +b(h)p Fy(init)p Fp(i)i(h)p Fy(v)-5 b(ariable)p Fp(i)o +Fq(\))30 b Fy(had)g(b)r(een)g(written)1933 2661 y(instead)e(of)f +Fq(\()p Fp(h)p Fy(v)-5 b(ariable)p Fp(i)43 b(h)p Fy(init)p +Fp(i)q Fq(\))p Fy(.)2090 2804 y Fm(\(do)d(\(\(vec)g(\(make-vector)i +(5\)\))2286 2896 y(\(i)e(0)f(\(+)h(i)g(1\)\)\))2247 2987 +y(\(\(=)g(i)f(5\))h(vec\))2169 3078 y(\(vector-set!)i(vec)e(i)f(i\)\)) +158 b Fl(=)-13 b Fk(\))78 b Fm(#\(0)40 b(1)f(2)h(3)f(4\))2090 +3261 y(\(let)h(\(\(x)g('\(1)g(3)g(5)f(7)h(9\)\)\))2169 +3352 y(\(do)g(\(\(x)f(x)h(\(cdr)g(x\)\))2365 3444 y(\(sum)g(0)f(\(+)h +(sum)g(\(car)g(x\)\)\)\))2326 3535 y(\(\(null?)g(x\))g(sum\)\)\))198 +b Fl(=)-13 b Fk(\))78 b Fm(25)1933 3795 y Fq(\(let)42 +b Fp(h)p Fy(v)-5 b(ariable)p Fp(i)43 b(h)p Fy(bindings)p +Fp(i)h(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))287 b Fy(library)26 +b(syn)n(tax)1933 3932 y(\\Named)g Fq(let)p Fy(")f(is)h(a)g(v)-5 +b(arian)n(t)26 b(on)g(the)h(syn)n(tax)e(of)i Fq(let)e +Fy(whic)n(h)h(pro-)1933 4032 y(vides)34 b(a)f(more)g(general)f(lo)r +(oping)h(construct)g(than)h Fq(do)f Fy(and)h(ma)n(y)1933 +4131 y(also)g(b)r(e)i(used)e(to)h(express)f(recursions.)57 +b(It)36 b(has)e(the)h(same)g(syn-)1933 4231 y(tax)e(and)f(seman)n(tics) +g(as)g(ordinary)f Fq(let)h Fy(except)h(that)g Fp(h)p +Fy(v)-5 b(ariable)p Fp(i)1933 4331 y Fy(is)26 b(b)r(ound)g(within)h +Fp(h)p Fy(b)r(o)r(dy)p Fp(i)g Fy(to)f(a)f(pro)r(cedure)g(whose)h +(formal)f(argu-)1933 4430 y(men)n(ts)30 b(are)e(the)h(b)r(ound)h(v)-5 +b(ariables)28 b(and)h(whose)g(b)r(o)r(dy)g(is)g Fp(h)p +Fy(b)r(o)r(dy)p Fp(i)q Fy(.)1933 4530 y(Th)n(us)24 b(the)f(execution)h +(of)f Fp(h)p Fy(b)r(o)r(dy)p Fp(i)i Fy(ma)n(y)d(b)r(e)i(rep)r(eated)f +(b)n(y)h(in)n(v)n(oking)1933 4629 y(the)k(pro)r(cedure)f(named)g(b)n(y) +h Fp(h)p Fy(v)-5 b(ariable)p Fp(i)o Fy(.)2090 4773 y +Fm(\(let)40 b(loop)g(\(\(numbers)i('\(3)e(-2)f(1)h(6)f(-5\)\))2522 +4864 y(\(nonneg)i('\(\)\))2522 4956 y(\(neg)f('\(\)\)\))2169 +5047 y(\(cond)g(\(\(null?)h(numbers\))g(\(list)f(nonneg)h(neg\)\))2404 +5138 y(\(\(>=)f(\(car)g(numbers\))h(0\))2443 5230 y(\(loop)g(\(cdr)f +(numbers\))2679 5321 y(\(cons)g(\(car)g(numbers\))h(nonneg\))2679 +5412 y(neg\)\))2404 5504 y(\(\(<)f(\(car)g(numbers\))h(0\))p +eop +%%Page: 13 13 +13 12 bop 3322 -125 a Fy(4.)64 b(Expressions)81 b(13)210 +82 y Fm(\(loop)40 b(\(cdr)g(numbers\))445 174 y(nonneg)445 +265 y(\(cons)h(\(car)f(numbers\))h(neg\)\)\)\)\))249 +356 y Fl(=)-13 b Fk(\))78 b Fm(\(\(6)40 b(1)g(3\))f(\(-5)h(-2\)\))-300 +639 y Fv(4.2.5.)46 b(Dela)m(y)m(ed)32 b(ev)-5 b(aluation)-300 +858 y Fq(\(delay)41 b Fp(h)p Fy(expression)p Fp(i)o Fq(\))814 +b Fy(library)27 b(syn)n(tax)-300 1001 y(The)49 b Fq(delay)e +Fy(construct)h(is)h(used)g(together)f(with)i(the)f(pro)r(ce-)-300 +1100 y(dure)34 b Fq(force)e Fy(to)i(implemen)n(t)h Fw(lazy)h +(evaluation)g Fy(or)d Fw(c)l(al)t(l)k(by)f(ne)l(e)l(d)p +Fy(.)-300 1200 y Fq(\(delay)41 b Fp(h)p Fy(expression)p +Fp(i)o Fq(\))c Fy(returns)f(an)h(ob)5 b(ject)36 b(called)h(a)g +Fw(pr)l(omise)-300 1300 y Fy(whic)n(h)d(at)h(some)f(p)r(oin)n(t)g(in)h +(the)g(future)g(ma)n(y)f(b)r(e)h(ask)n(ed)e(\(b)n(y)h(the)-300 +1399 y Fq(force)20 b Fy(pro)r(cedure\))44 b(to)22 b(ev)-5 +b(aluate)22 b Fp(h)p Fy(expression)p Fp(i)o Fy(,)i(and)e(deliv)n(er)f +(the)-300 1499 y(resulting)k(v)-5 b(alue.)36 b(The)26 +b(e\013ect)g(of)f Fp(h)p Fy(expression)p Fp(i)g Fy(returning)g(m)n +(ulti-)-300 1599 y(ple)j(v)-5 b(alues)27 b(is)g(unsp)r(eci\014ed.)-300 +1741 y(See)g(the)h(description)f(of)g Fq(force)f Fy(\(section)h(6.4\))g +(for)g(a)g(more)f(com-)-300 1841 y(plete)i(description)f(of)h +Fq(delay)p Fy(.)-300 2105 y Fv(4.2.6.)46 b(Quasiquotation)-300 +2324 y Fq(\(quasiquote)39 b Fp(h)p Fy(qq)44 b(template)p +Fp(i)p Fq(\))790 b Fy(syn)n(tax)-300 2424 y Fq(\022)p +Fp(h)p Fy(qq)43 b(template)p Fp(i)1314 b Fy(syn)n(tax)-300 +2566 y(\\Bac)n(kquote")43 b(or)i(\\quasiquote")f(expressions)g(are)h +(useful)h(for)-300 2666 y(constructing)30 b(a)g(list)g(or)g(v)n(ector)f +(structure)h(when)h(most)f(but)h(not)-300 2766 y(all)40 +b(of)h(the)g(desired)f(structure)g(is)g(kno)n(wn)g(in)h(adv)-5 +b(ance.)75 b(If)41 b(no)-300 2865 y(commas)j(app)r(ear)g(within)h(the)g +Fp(h)p Fy(qq)28 b(template)p Fp(i)p Fy(,)49 b(the)c(result)g(of)-300 +2965 y(ev)-5 b(aluating)44 b Fq(\022)p Fp(h)p Fy(qq)27 +b(template)p Fp(i)46 b Fy(is)e(equiv)-5 b(alen)n(t)45 +b(to)f(the)h(result)g(of)-300 3064 y(ev)-5 b(aluating)43 +b Fq(')p Fp(h)p Fy(qq)28 b(template)p Fp(i)p Fy(.)87 +b(If)44 b(a)g(comma)f(app)r(ears)g(within)-300 3164 y(the)38 +b Fp(h)p Fy(qq)28 b(template)p Fp(i)p Fy(,)41 b(ho)n(w)n(ev)n(er,)d +(the)g(expression)f(follo)n(wing)f(the)-300 3264 y(comma)24 +b(is)g(ev)-5 b(aluated)24 b(\(\\unquoted"\))h(and)f(its)h(result)f(is)g +(inserted)-300 3363 y(in)n(to)35 b(the)h(structure)f(instead)g(of)g +(the)h(comma)f(and)g(the)h(expres-)-300 3463 y(sion.)46 +b(If)31 b(a)f(comma)g(app)r(ears)g(follo)n(w)n(ed)g(immediately)g(b)n +(y)h(an)f(at-)-300 3563 y(sign)38 b(\()p Fq(@)p Fy(\),)k(then)d(the)g +(follo)n(wing)f(expression)f(m)n(ust)i(ev)-5 b(aluate)38 +b(to)-300 3662 y(a)32 b(list;)k(the)e(op)r(ening)e(and)h(closing)f +(paren)n(theses)g(of)g(the)i(list)f(are)-300 3762 y(then)g(\\stripp)r +(ed)f(a)n(w)n(a)n(y")e(and)i(the)h(elemen)n(ts)f(of)g(the)h(list)g(are) +e(in-)-300 3861 y(serted)f(in)g(place)f(of)h(the)h(comma)e(at-sign)g +(expression)f(sequence.)-300 3961 y(A)23 b(comma)f(at-sign)g(should)g +(only)g(app)r(ear)g(within)h(a)g(list)f(or)g(v)n(ector)-300 +4061 y Fp(h)p Fy(qq)28 b(template)p Fp(i)p Fy(.)-143 +4213 y Fm(\022\(list)41 b(,\(+)e(1)h(2\))g(4\))392 b +Fl(=)-13 b Fk(\))78 b Fm(\(list)41 b(3)e(4\))-143 4305 +y(\(let)h(\(\(name)h('a\)\))f(\022\(list)g(,name)h(',name\)\))249 +4396 y Fl(=)-13 b Fk(\))78 b Fm(\(list)41 b(a)e(\(quote)i(a\)\))-143 +4487 y(\022\(a)f(,\(+)g(1)f(2\))h(,@\(map)g(abs)g('\(4)g(-5)g(6\)\))g +(b\))249 4579 y Fl(=)-13 b Fk(\))78 b Fm(\(a)40 b(3)g(4)f(5)g(6)h(b\)) +-143 4670 y(\022\(\()g(foo)g(,\(-)g(10)f(3\)\))h(,@\(cdr)h('\(c\)\))f +(.)g(,\(car)g('\(cons\)\)\))249 4761 y Fl(=)-13 b Fk(\))78 +b Fm(\(\(foo)41 b(7\))e(.)h(cons\))-143 4853 y(\022#\(10)g(5)g(,\(sqrt) +g(4\))g(,@\(map)h(sqrt)f('\(16)g(9\)\))g(8\))249 4944 +y Fl(=)-13 b Fk(\))78 b Fm(#\(10)41 b(5)e(2)g(4)h(3)f(8\))-300 +5105 y Fy(Quasiquote)28 b(forms)i(ma)n(y)f(b)r(e)h(nested.)43 +b(Substitutions)30 b(are)f(made)-300 5205 y(only)22 b(for)h(unquoted)g +(comp)r(onen)n(ts)f(app)r(earing)g(at)g(the)i(same)e(nest-)-300 +5304 y(ing)i(lev)n(el)g(as)g(the)h(outermost)e(bac)n(kquote.)35 +b(The)25 b(nesting)f(lev)n(el)g(in-)-300 5404 y(creases)31 +b(b)n(y)h(one)h(inside)f(eac)n(h)g(successiv)n(e)f(quasiquotation,)i +(and)-300 5504 y(decreases)26 b(b)n(y)h(one)g(inside)h(eac)n(h)f +(unquotation.)2090 82 y Fm(\022\(a)40 b(\022\(b)g(,\(+)g(1)f(2\))h +(,\(foo)g(,\(+)g(1)g(3\))f(d\))h(e\))g(f\))2482 174 y +Fl(=)-13 b Fk(\))79 b Fm(\(a)39 b(\022\(b)h(,\(+)g(1)g(2\))f(,\(foo)i +(4)e(d\))h(e\))f(f\))2090 265 y(\(let)h(\(\(name1)h('x\))2326 +356 y(\(name2)f('y\)\))2169 447 y(\022\(a)g(\022\(b)f(,,name1)i +(,',name2)g(d\))f(e\)\))2482 539 y Fl(=)-13 b Fk(\))79 +b Fm(\(a)39 b(\022\(b)h(,x)g(,'y)g(d\))g(e\))1933 697 +y Fy(The)69 b(t)n(w)n(o)f(notations)g Fq(\022)p Fp(h)p +Fy(qq)27 b(template)p Fp(i)70 b Fy(and)f Fq(\(quasiquote)1933 +796 y Fp(h)p Fy(qq)28 b(template)p Fp(i)p Fq(\))j Fy(are)e(iden)n +(tical)i(in)g(all)f(resp)r(ects.)45 b Fq(,)p Fp(h)p Fy(expression)p +Fp(i)1933 896 y Fy(is)24 b(iden)n(tical)f(to)g Fq(\(unquote)41 +b Fp(h)p Fy(expression)p Fp(i)o Fq(\))p Fy(,)24 b(and)f +Fq(,@)p Fp(h)p Fy(expression)p Fp(i)1933 996 y Fy(is)h(iden)n(tical)g +(to)g Fq(\(unquote-splicing)37 b Fp(h)p Fy(expression)p +Fp(i)o Fq(\))p Fy(.)e(The)25 b(ex-)1933 1095 y(ternal)46 +b(syn)n(tax)f(generated)g(b)n(y)h Fq(write)e Fy(for)h(t)n(w)n(o-elemen) +n(t)g(lists)1933 1195 y(whose)33 b(car)g(is)g(one)h(of)f(these)h(sym)n +(b)r(ols)f(ma)n(y)g(v)-5 b(ary)33 b(b)r(et)n(w)n(een)g(im-)1933 +1295 y(plemen)n(tations.)2090 1444 y Fm(\(quasiquote)42 +b(\(list)e(\(unquote)h(\(+)f(1)f(2\)\))h(4\)\))2482 1536 +y Fl(=)-13 b Fk(\))79 b Fm(\(list)40 b(3)f(4\))2090 1627 +y('\(quasiquote)j(\(list)f(\(unquote)g(\(+)e(1)h(2\)\))g(4\)\))2482 +1718 y Fl(=)-13 b Fk(\))79 b Fm(\022\(list)40 b(,\(+)g(1)g(2\))f(4\)) +2286 1810 y Fj(i.e.,)f Fm(\(quasiquote)k(\(list)e(\(unquote)h(\(+)f(1)f +(2\)\))h(4\)\))1933 1968 y Fy(Unpredictable)f(b)r(eha)n(vior)e(can)i +(result)f(if)h(an)n(y)f(of)h(the)g(sym)n(b)r(ols)1933 +2067 y Fq(quasiquote)p Fy(,)17 b Fq(unquote)p Fy(,)h(or)f +Fq(unquote-splicing)c Fy(app)r(ear)k(in)i(p)r(o-)1933 +2167 y(sitions)26 b(within)h(a)f Fp(h)p Fy(qq)i(template)p +Fp(i)f Fy(otherwise)e(than)i(as)e(describ)r(ed)1933 2266 +y(ab)r(o)n(v)n(e.)1933 2550 y Fu(4.3.)57 b(Macros)1933 +2754 y Fy(Sc)n(heme)32 b(programs)d(can)i(de\014ne)h(and)f(use)g(new)h +(deriv)n(ed)e(expres-)1933 2846 y(sion)47 b(t)n(yp)r(es,)52 +b(called)47 b Fw(macr)l(os)p Fy(.)97 b(Program-de\014ned)45 +b(expression)1933 2937 y(t)n(yp)r(es)28 b(ha)n(v)n(e)e(the)i(syn)n(tax) +2090 3070 y Fm(\()p Fk(h)p Fl(k)n(eyw)n(ord)p Fk(i)39 +b(h)p Fl(datum)p Fk(i)e Fm(...\))1933 3211 y Fy(where)30 +b Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)f Fy(is)i(an)f(iden)n(ti\014er)g(that) +h(uniquely)f(determines)1933 3311 y(the)h(expression)e(t)n(yp)r(e.)45 +b(This)30 b(iden)n(ti\014er)g(is)g(called)g(the)h Fw(syntactic)1933 +3410 y(keywor)l(d)p Fy(,)f(or)d(simply)i Fw(keywor)l(d)p +Fy(,)g(of)g(the)f(macro.)37 b(The)28 b(n)n(um)n(b)r(er)g(of)1933 +3510 y(the)e Fp(h)p Fy(datum)p Fp(i)q Fy(s,)f(and)g(their)h(syn)n(tax,) +e(dep)r(ends)i(on)f(the)h(expression)1933 3610 y(t)n(yp)r(e.)1933 +3751 y(Eac)n(h)e(instance)h(of)g(a)g(macro)f(is)h(called)f(a)h +Fw(use)g Fy(of)g(the)g(macro.)35 b(The)1933 3851 y(set)19 +b(of)g(rules)f(that)h(sp)r(eci\014es)f(ho)n(w)g(a)h(use)f(of)h(a)f +(macro)f(is)i(transcrib)r(ed)1933 3950 y(in)n(to)30 b(a)g(more)f +(primitiv)n(e)h(expression)f(is)h(called)g(the)h Fw(tr)l(ansformer)1933 +4050 y Fy(of)d(the)g(macro.)1933 4191 y(The)g(macro)e(de\014nition)i +(facilit)n(y)g(consists)e(of)i(t)n(w)n(o)f(parts:)2016 +4415 y Fp(\017)41 b Fy(A)20 b(set)f(of)h(expressions)d(used)j(to)f +(establish)g(that)g(certain)g(iden-)2099 4515 y(ti\014ers)k(are)f +(macro)f(k)n(eyw)n(ords,)h(asso)r(ciate)g(them)h(with)g(macro)2099 +4615 y(transformers,)42 b(and)e(con)n(trol)e(the)j(scop)r(e)f(within)g +(whic)n(h)h(a)2099 4714 y(macro)27 b(is)g(de\014ned,)h(and)2016 +4881 y Fp(\017)41 b Fy(a)26 b(pattern)g(language)e(for)i(sp)r(ecifying) +g(macro)f(transformers.)1933 5105 y(The)39 b(syn)n(tactic)f(k)n(eyw)n +(ord)f(of)i(a)f(macro)g(ma)n(y)g(shado)n(w)f(v)-5 b(ariable)1933 +5205 y(bindings,)25 b(and)g(lo)r(cal)e(v)-5 b(ariable)24 +b(bindings)g(ma)n(y)g(shado)n(w)f(k)n(eyw)n(ord)1933 +5304 y(bindings.)89 b(All)30 b(macros)f(de\014ned)h(using)g(the)g +(pattern)g(language)1933 5404 y(are)43 b(\\h)n(ygienic")f(and)i +(\\referen)n(tially)e(transparen)n(t")g(and)i(th)n(us)1933 +5504 y(preserv)n(e)26 b(Sc)n(heme's)h(lexical)g(scoping)g([14)o(,)h(15) +o(,)g(2)o(,)g(7)o(,)g(9]:)p eop +%%Page: 14 14 +14 13 bop -300 -125 a Fy(14)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-217 82 y Fp(\017)41 b Fy(If)26 b(a)f(macro)g +(transformer)e(inserts)i(a)h(binding)f(for)h(an)f(iden)n(ti-)-134 +182 y(\014er)18 b(\(v)-5 b(ariable)18 b(or)g(k)n(eyw)n(ord\),)h(the)g +(iden)n(ti\014er)f(will)h(in)g(e\013ect)g(b)r(e)-134 +281 y(renamed)31 b(throughout)f(its)i(scop)r(e)f(to)g(a)n(v)n(oid)f +(con\015icts)h(with)-134 381 y(other)25 b(iden)n(ti\014ers.)36 +b(Note)25 b(that)h(a)f Fq(define)f Fy(at)h(top)g(lev)n(el)h(ma)n(y)-134 +481 y(or)h(ma)n(y)g(not)g(in)n(tro)r(duce)g(a)h(binding;)f(see)h +(section)f(5.2.)-217 657 y Fp(\017)41 b Fy(If)35 b(a)f(macro)f +(transformer)f(inserts)i(a)g(free)g(reference)f(to)h(an)-134 +757 y(iden)n(ti\014er,)27 b(the)h(reference)f(refers)f(to)i(the)f +(binding)h(that)g(w)n(as)-134 857 y(visible)c(where)f(the)h +(transformer)e(w)n(as)h(sp)r(eci\014ed,)i(regardless)-134 +956 y(of)e(an)n(y)f(lo)r(cal)h(bindings)g(that)h(ma)n(y)e(surround)g +(the)h(use)g(of)g(the)-134 1056 y(macro.)-300 1330 y +Fv(4.3.1.)46 b(Binding)30 b(constructs)j(for)f(syn)m(tactic)h(k)m(eyw)m +(ords)-300 1515 y Fq(Let-syntax)20 b Fy(and)k Fq(letrec-syntax)18 +b Fy(are)23 b(analogous)f(to)h Fq(let)g Fy(and)-300 1614 +y Fq(letrec)p Fy(,)i(but)i(they)g(bind)g(syn)n(tactic)f(k)n(eyw)n(ords) +f(to)h(macro)g(trans-)-300 1714 y(formers)h(instead)h(of)g(binding)g(v) +-5 b(ariables)26 b(to)i(lo)r(cations)f(that)i(con-)-300 +1813 y(tain)e(v)-5 b(alues.)37 b(Syn)n(tactic)27 b(k)n(eyw)n(ords)e(ma) +n(y)h(also)g(b)r(e)i(b)r(ound)g(at)f(top)-300 1913 y(lev)n(el;)g(see)g +(section)h(5.3.)-300 2176 y Fq(\(let-syntax)39 b Fp(h)p +Fy(bindings)p Fp(i)44 b(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))644 +b Fy(syn)n(tax)-300 2314 y Fw(Syntax:)38 b Fp(h)p Fy(Bindings)p +Fp(i)28 b Fy(should)f(ha)n(v)n(e)f(the)i(form)-143 2458 +y Fm(\(\()p Fk(h)p Fl(k)n(eyw)n(ord)p Fk(i)39 b(h)p Fl(transformer)f +(sp)r(ec)p Fk(i)q Fm(\))h Fh(:)13 b(:)g(:)h Fm(\))-300 +2610 y Fy(Eac)n(h)40 b Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)f +Fy(is)i(an)f(iden)n(ti\014er,)k(eac)n(h)c Fp(h)p Fy(transformer)26 +b(sp)r(ec)p Fp(i)-300 2709 y Fy(is)34 b(an)h(instance)f(of)h +Fq(syntax-rules)p Fy(,)c(and)k Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)g Fy(should)f(b)r(e)h(a)-300 2809 y(sequence)e(of)h(one)g(or)f +(more)g(expressions.)54 b(It)34 b(is)g(an)g(error)e(for)h(a)-300 +2909 y Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)21 b Fy(to)g(app)r(ear)h(more)f +(than)h(once)f(in)h(the)h(list)f(of)g(k)n(eyw)n(ords)-300 +3008 y(b)r(eing)28 b(b)r(ound.)-300 3155 y Fw(Semantics:)41 +b Fy(The)29 b Fp(h)p Fy(b)r(o)r(dy)p Fp(i)h Fy(is)f(expanded)g(in)g +(the)g(syn)n(tactic)f(en)n(vi-)-300 3254 y(ronmen)n(t)f(obtained)g(b)n +(y)f(extending)i(the)f(syn)n(tactic)g(en)n(vironmen)n(t)-300 +3354 y(of)22 b(the)g Fq(let-syntax)17 b Fy(expression)k(with)h(macros)e +(whose)h(k)n(eyw)n(ords)-300 3453 y(are)36 b(the)g Fp(h)p +Fy(k)n(eyw)n(ord)p Fp(i)o Fy(s,)j(b)r(ound)e(to)f(the)h(sp)r(eci\014ed) +g(transformers.)-300 3553 y(Eac)n(h)26 b(binding)i(of)g(a)f +Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)f Fy(has)h Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)i Fy(as)e(its)g(region.)-143 3716 y Fm(\(let-syntax)42 +b(\(\(when)e(\(syntax-rules)i(\(\))681 3807 y(\(\(when)e(test)g(stmt1)h +(stmt2)f(...\))720 3899 y(\(if)g(test)877 3990 y(\(begin)g(stmt1)1151 +4081 y(stmt2)h(...\)\)\)\)\)\))-65 4173 y(\(let)g(\(\(if)f(#t\)\))14 +4264 y(\(when)g(if)g(\(set!)g(if)g('now\)\))14 4355 y(if\)\))785 +b Fl(=)-13 b Fk(\))78 b Fm(now)-143 4538 y(\(let)40 b(\(\(x)g +('outer\)\))-65 4629 y(\(let-syntax)i(\(\(m)e(\(syntax-rules)i(\(\))e +(\(\(m\))g(x\)\)\)\))14 4720 y(\(let)g(\(\(x)g('inner\)\))92 +4812 y(\(m\)\)\)\))629 b Fl(=)-13 b Fk(\))78 b Fm(outer)-300 +5111 y Fq(\(letrec-syntax)38 b Fp(h)p Fy(bindings)p Fp(i)44 +b(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))513 b Fy(syn)n(tax)-300 +5257 y Fw(Syntax:)38 b Fy(Same)27 b(as)g(for)g Fq(let-syntax)p +Fy(.)-300 5404 y Fw(Semantics:)41 b Fy(The)29 b Fp(h)p +Fy(b)r(o)r(dy)p Fp(i)h Fy(is)f(expanded)g(in)g(the)g(syn)n(tactic)f(en) +n(vi-)-300 5504 y(ronmen)n(t)f(obtained)g(b)n(y)f(extending)i(the)f +(syn)n(tactic)g(en)n(vironmen)n(t)1933 82 y(of)i(the)h +Fq(letrec-syntax)24 b Fy(expression)j(with)j(macros)e(whose)g(k)n(ey-) +1933 182 y(w)n(ords)38 b(are)g(the)h Fp(h)p Fy(k)n(eyw)n(ord)p +Fp(i)n Fy(s,)j(b)r(ound)d(to)g(the)g(sp)r(eci\014ed)g(trans-)1933 +281 y(formers.)53 b(Eac)n(h)32 b(binding)h(of)g(a)g Fp(h)p +Fy(k)n(eyw)n(ord)p Fp(i)e Fy(has)i(the)h Fp(h)p Fy(bindings)p +Fp(i)1933 381 y Fy(as)24 b(w)n(ell)h(as)f(the)h Fp(h)p +Fy(b)r(o)r(dy)p Fp(i)h Fy(within)f(its)g(region,)f(so)g(the)h +(transformers)1933 481 y(can)36 b(transcrib)r(e)f(expressions)g(in)n +(to)g(uses)h(of)g(the)h(macros)d(in)n(tro-)1933 580 y(duced)28 +b(b)n(y)f(the)h Fq(letrec-syntax)23 b Fy(expression.)2090 +728 y Fm(\(letrec-syntax)2169 819 y(\(\(my-or)40 b(\(syntax-rules)j +(\(\))2561 910 y(\(\(my-or\))e(#f\))2561 1002 y(\(\(my-or)g(e\))e(e\)) +2561 1093 y(\(\(my-or)i(e1)e(e2)h(...\))2600 1184 y(\(let)g(\(\(temp)h +(e1\)\))2679 1276 y(\(if)f(temp)2836 1367 y(temp)2836 +1458 y(\(my-or)g(e2)g(...\)\)\)\)\)\)\))2169 1550 y(\(let)g(\(\(x)g +(#f\))2404 1641 y(\(y)g(7\))2404 1732 y(\(temp)g(8\))2404 +1824 y(\(let)g(odd?\))2404 1915 y(\(if)g(even?\)\))2247 +2006 y(\(my-or)h(x)2522 2098 y(\(let)f(temp\))2522 2189 +y(\(if)g(y\))2522 2280 y(y\)\)\))511 b Fl(=)-13 b Fk(\))78 +b Fm(7)1933 2549 y Fv(4.3.2.)46 b(P)m(attern)33 b(language)1933 +2725 y Fy(A)28 b Fp(h)p Fy(transformer)e(sp)r(ec)p Fp(i)i +Fy(has)f(the)h(follo)n(wing)f(form:)1933 2975 y Fq(\(syntax-rules)38 +b Fp(h)p Fy(literals)p Fp(i)44 b(h)p Fy(syn)n(tax)f(rule)p +Fp(i)g Fo(:)14 b(:)g(:)g Fq(\))1933 3106 y Fw(Syntax:)111 +b Fp(h)p Fy(Literals)p Fp(i)66 b Fy(is)h(a)g(list)g(of)g(iden)n +(ti\014ers)g(and)g(eac)n(h)1933 3197 y Fp(h)p Fy(syn)n(tax)27 +b(rule)p Fp(i)h Fy(should)f(b)r(e)h(of)g(the)g(form)2090 +3329 y Fm(\()p Fk(h)p Fl(pattern)p Fk(i)39 b(h)p Fl(template)p +Fk(i)o Fm(\))1933 3469 y Fy(The)h Fp(h)p Fy(pattern)p +Fp(i)h Fy(in)f(a)g Fp(h)p Fy(syn)n(tax)27 b(rule)p Fp(i)40 +b Fy(is)g(a)f(list)h Fp(h)p Fy(pattern)p Fp(i)h Fy(that)1933 +3568 y(b)r(egins)28 b(with)g(the)g(k)n(eyw)n(ord)e(for)h(the)h(macro.) +1933 3700 y(A)d Fp(h)p Fy(pattern)p Fp(i)f Fy(is)g(either)g(an)g(iden)n +(ti\014er,)g(a)g(constan)n(t,)g(or)f(one)h(of)g(the)1933 +3791 y(follo)n(wing)2090 3923 y Fm(\()p Fk(h)p Fl(pattern)p +Fk(i)39 b Fm(...\))2090 4014 y(\()p Fk(h)p Fl(pattern)p +Fk(i)g(h)p Fl(pattern)p Fk(i)g Fm(...)h(.)f Fk(h)p Fl(pattern)p +Fk(i)o Fm(\))2090 4106 y(\()p Fk(h)p Fl(pattern)p Fk(i)g +Fm(...)h Fk(h)p Fl(pattern)p Fk(i)f(h)p Fl(ellipsis)p +Fk(i)q Fm(\))2090 4197 y(#\()p Fk(h)p Fl(pattern)p Fk(i)g +Fm(...\))2090 4288 y(#\()p Fk(h)p Fl(pattern)p Fk(i)g +Fm(...)h Fk(h)p Fl(pattern)p Fk(i)f(h)p Fl(ellipsis)p +Fk(i)q Fm(\))1933 4420 y Fy(and)26 b(a)f(template)h(is)f(either)h(an)f +(iden)n(ti\014er,)h(a)f(constan)n(t,)g(or)g(one)g(of)1933 +4511 y(the)j(follo)n(wing)2090 4643 y Fm(\()p Fk(h)p +Fl(elemen)n(t)p Fk(i)39 b Fm(...\))2090 4734 y(\()p Fk(h)p +Fl(elemen)n(t)p Fk(i)g(h)p Fl(elemen)n(t)p Fk(i)f Fm(...)i(.)f +Fk(h)p Fl(template)p Fk(i)o Fm(\))2090 4825 y(#\()p Fk(h)p +Fl(elemen)n(t)p Fk(i)g Fm(...\))1933 4965 y Fy(where)30 +b(an)g Fp(h)p Fy(elemen)n(t)p Fp(i)h Fy(is)f(a)g Fp(h)p +Fy(template)p Fp(i)h Fy(optionally)e(follo)n(w)n(ed)g(b)n(y)1933 +5065 y(an)e Fp(h)p Fy(ellipsis)p Fp(i)g Fy(and)f(an)h +Fp(h)p Fy(ellipsis)p Fp(i)g Fy(is)g(the)g(iden)n(ti\014er)f(\\)p +Fq(...)p Fy(")f(\(whic)n(h)1933 5164 y(cannot)34 b(b)r(e)i(used)e(as)g +(an)h(iden)n(ti\014er)f(in)h(either)g(a)f(template)h(or)f(a)1933 +5264 y(pattern\).)1933 5404 y Fw(Semantics:)42 b Fy(An)30 +b(instance)e(of)i Fq(syntax-rules)24 b Fy(pro)r(duces)k(a)h(new)1933 +5504 y(macro)42 b(transformer)e(b)n(y)j(sp)r(ecifying)f(a)g(sequence)g +(of)h(h)n(ygienic)p eop +%%Page: 15 15 +15 14 bop 3322 -125 a Fy(4.)64 b(Expressions)81 b(15)-300 +82 y(rewrite)19 b(rules.)33 b(A)20 b(use)g(of)f(a)h(macro)e(whose)h(k)n +(eyw)n(ord)f(is)h(asso)r(ciated)-300 182 y(with)29 b(a)g(transformer)e +(sp)r(eci\014ed)i(b)n(y)f Fq(syntax-rules)c Fy(is)29 +b(matc)n(hed)-300 281 y(against)36 b(the)i(patterns)f(con)n(tained)f +(in)i(the)f Fp(h)p Fy(syn)n(tax)27 b(rule)p Fp(i)p Fy(s,)40 +b(b)r(e-)-300 381 y(ginning)29 b(with)g(the)g(leftmost)h +Fp(h)p Fy(syn)n(tax)d(rule)p Fp(i)o Fy(.)41 b(When)30 +b(a)e(matc)n(h)h(is)-300 481 y(found,)f(the)f(macro)f(use)h(is)g +(transcrib)r(ed)f(h)n(ygienically)g(according)-300 580 +y(to)h(the)h(template.)-300 721 y(An)d(iden)n(ti\014er)f(that)g(app)r +(ears)f(in)i(the)f(pattern)g(of)g(a)g Fp(h)p Fy(syn)n(tax)j(rule)p +Fp(i)-300 821 y Fy(is)32 b(a)g Fw(p)l(attern)i(variable)p +Fy(,)h(unless)d(it)h(is)f(the)h(k)n(eyw)n(ord)d(that)j(b)r(egins)-300 +921 y(the)25 b(pattern,)g(is)g(listed)f(in)h Fp(h)p Fy(literals)p +Fp(i)p Fy(,)g(or)f(is)g(the)h(iden)n(ti\014er)g(\\)p +Fq(...)p Fy(".)-300 1020 y(P)n(attern)30 b(v)-5 b(ariables)29 +b(matc)n(h)i(arbitrary)e(input)i(elemen)n(ts)g(and)g(are)-300 +1120 y(used)g(to)g(refer)f(to)h(elemen)n(ts)g(of)g(the)h(input)g(in)f +(the)h(template.)47 b(It)-300 1220 y(is)34 b(an)g(error)e(for)i(the)g +(same)g(pattern)f(v)-5 b(ariable)34 b(to)f(app)r(ear)h(more)-300 +1319 y(than)28 b(once)f(in)h(a)f Fp(h)p Fy(pattern)p +Fp(i)p Fy(.)-300 1460 y(The)63 b(k)n(eyw)n(ord)d(at)j(the)f(b)r +(eginning)h(of)f(the)h(pattern)f(in)h(a)-300 1560 y Fp(h)p +Fy(syn)n(tax)27 b(rule)p Fp(i)37 b Fy(is)h(not)f(in)n(v)n(olv)n(ed)f +(in)i(the)g(matc)n(hing)f(and)g(is)h(not)-300 1660 y(considered)27 +b(a)g(pattern)g(v)-5 b(ariable)27 b(or)f(literal)i(iden)n(ti\014er.) +-300 1801 y Fj(R)l(ationale:)109 b Fl(The)35 b(scop)r(e)i(of)f(the)g(k) +n(eyw)n(ord)f(is)h(determined)e(b)n(y)h(the)-300 1900 +y(expression)c(or)g(syn)n(tax)e(de\014nition)h(that)g(binds)g(it)h(to)g +(the)f(asso)r(ciated)-300 2000 y(macro)g(transformer.)48 +b(If)30 b(the)g(k)n(eyw)n(ord)f(w)n(ere)i(a)f(pattern)g(v)l(ariable)g +(or)-300 2100 y(literal)41 b(iden)n(ti\014er,)j(then)39 +b(the)g(template)h(that)f(follo)n(ws)k(the)c(pattern)-300 +2199 y(w)n(ould)c(b)r(e)f(within)h(its)g(scop)r(e)g(regardless)h(of)g +(whether)e(the)g(k)n(eyw)n(ord)-300 2299 y(w)n(ere)26 +b(b)r(ound)f(b)n(y)g Fm(let-syntax)j Fl(or)e(b)n(y)e +Fm(letrec-syntax)p Fl(.)-300 2440 y Fy(Iden)n(ti\014ers)d(that)h(app)r +(ear)f(in)g Fp(h)p Fy(literals)p Fp(i)h Fy(are)e(in)n(terpreted)h(as)g +(literal)-300 2540 y(iden)n(ti\014ers)33 b(to)f(b)r(e)i(matc)n(hed)f +(against)e(corresp)r(onding)g(subforms)-300 2639 y(of)39 +b(the)h(input.)74 b(A)39 b(subform)h(in)f(the)h(input)g(matc)n(hes)f(a) +g(literal)-300 2739 y(iden)n(ti\014er)24 b(if)g(and)f(only)h(if)g(it)g +(is)f(an)h(iden)n(ti\014er)f(and)h(either)g(b)r(oth)g(its)-300 +2839 y(o)r(ccurrence)32 b(in)i(the)g(macro)e(expression)g(and)h(its)g +(o)r(ccurrence)g(in)-300 2938 y(the)c(macro)e(de\014nition)i(ha)n(v)n +(e)f(the)h(same)f(lexical)g(binding,)h(or)e(the)-300 +3038 y(t)n(w)n(o)g(iden)n(ti\014ers)g(are)f(equal)h(and)g(b)r(oth)h(ha) +n(v)n(e)e(no)h(lexical)g(binding.)-300 3179 y(A)k(subpattern)f(follo)n +(w)n(ed)f(b)n(y)h Fq(...)g Fy(can)g(matc)n(h)g(zero)f(or)h(more)f(el-) +-300 3279 y(emen)n(ts)36 b(of)f(the)i(input.)62 b(It)36 +b(is)g(an)f(error)f(for)h Fq(...)g Fy(to)h(app)r(ear)f(in)-300 +3378 y Fp(h)p Fy(literals)p Fp(i)p Fy(.)44 b(Within)31 +b(a)e(pattern)h(the)g(iden)n(ti\014er)g Fq(...)f Fy(m)n(ust)h(follo)n +(w)-300 3478 y(the)e(last)f(elemen)n(t)h(of)g(a)f(nonempt)n(y)g +(sequence)g(of)h(subpatterns.)-300 3619 y(More)21 b(formally)-7 +b(,)22 b(an)f(input)i(form)e Fo(F)34 b Fy(matc)n(hes)21 +b(a)h(pattern)f Fo(P)34 b Fy(if)22 b(and)-300 3719 y(only)27 +b(if:)-217 3943 y Fp(\017)41 b Fo(P)f Fy(is)27 b(a)g(non-literal)g +(iden)n(ti\014er;)g(or)-217 4109 y Fp(\017)41 b Fo(P)f +Fy(is)28 b(a)f(literal)g(iden)n(ti\014er)h(and)g Fo(F)40 +b Fy(is)28 b(an)f(iden)n(ti\014er)h(with)g(the)-134 4208 +y(same)f(binding;)h(or)-217 4374 y Fp(\017)41 b Fo(P)c +Fy(is)26 b(a)f(list)g Fq(\()p Fo(P)338 4386 y Fr(1)419 +4374 y Fo(:)14 b(:)g(:)44 b(P)613 4386 y Fn(n)658 4374 +y Fq(\))25 b Fy(and)g Fo(F)38 b Fy(is)25 b(a)g(list)h(of)f +Fo(n)h Fy(forms)f(that)-134 4474 y(matc)n(h)i Fo(P)170 +4486 y Fr(1)236 4474 y Fy(through)g Fo(P)603 4486 y Fn(n)648 +4474 y Fy(,)h(resp)r(ectiv)n(ely;)e(or)-217 4640 y Fp(\017)41 +b Fo(P)54 b Fy(is)42 b(an)f(improp)r(er)g(list)h Fq(\()p +Fo(P)822 4652 y Fr(1)903 4640 y Fo(P)956 4652 y Fr(2)1037 +4640 y Fo(:)14 b(:)g(:)44 b(P)1231 4652 y Fn(n)1320 4640 +y Fq(.)f Fo(P)1460 4652 y Fn(n)p Fr(+1)1589 4640 y Fq(\))f +Fy(and)-134 4740 y Fo(F)48 b Fy(is)35 b(a)h(list)g(or)e(improp)r(er)h +(list)h(of)g Fo(n)g Fy(or)f(more)f(forms)i(that)-134 +4839 y(matc)n(h)42 b Fo(P)185 4851 y Fr(1)264 4839 y +Fy(through)f Fo(P)645 4851 y Fn(n)691 4839 y Fy(,)k(resp)r(ectiv)n(ely) +-7 b(,)45 b(and)c(whose)h Fo(n)p Fy(th)-134 4939 y(\\cdr")26 +b(matc)n(hes)h Fo(P)466 4951 y Fn(n)p Fr(+1)596 4939 +y Fy(;)h(or)-217 5105 y Fp(\017)41 b Fo(P)49 b Fy(is)37 +b(of)g(the)h(form)f Fq(\()p Fo(P)621 5117 y Fr(1)702 +5105 y Fo(:)14 b(:)g(:)43 b(P)895 5117 y Fn(n)984 5105 +y Fo(P)1037 5117 y Fn(n)p Fr(+1)1210 5105 y Fp(h)p Fy(ellipsis)p +Fp(i)q Fq(\))36 b Fy(where)-134 5205 y Fp(h)p Fy(ellipsis)p +Fp(i)h Fy(is)g(the)g(iden)n(ti\014er)g Fq(...)f Fy(and)h +Fo(F)48 b Fy(is)37 b(a)g(prop)r(er)f(list)-134 5304 y(of)42 +b(at)f(least)g Fo(n)h Fy(forms,)i(the)e(\014rst)f Fo(n)h +Fy(of)f(whic)n(h)h(matc)n(h)f Fo(P)1771 5316 y Fr(1)-134 +5404 y Fy(through)26 b Fo(P)232 5416 y Fn(n)278 5404 +y Fy(,)h(resp)r(ectiv)n(ely)-7 b(,)26 b(and)h(eac)n(h)f(remaining)g +(elemen)n(t)-134 5504 y(of)i Fo(F)39 b Fy(matc)n(hes)27 +b Fo(P)427 5516 y Fn(n)p Fr(+1)557 5504 y Fy(;)g(or)2016 +82 y Fp(\017)41 b Fo(P)49 b Fy(is)37 b(a)g(v)n(ector)f(of)h(the)g(form) +g Fq(#\()p Fo(P)3235 94 y Fr(1)3315 82 y Fo(:)14 b(:)g(:)43 +b(P)3508 94 y Fn(n)3554 82 y Fq(\))37 b Fy(and)g Fo(F)49 +b Fy(is)37 b(a)2099 182 y(v)n(ector)27 b(of)g Fo(n)h +Fy(forms)f(that)h(matc)n(h)f Fo(P)3234 194 y Fr(1)3299 +182 y Fy(through)g Fo(P)3666 194 y Fn(n)3712 182 y Fy(;)g(or)2016 +348 y Fp(\017)41 b Fo(P)h Fy(is)30 b(of)g(the)g(form)g +Fq(#\()p Fo(P)2862 360 y Fr(1)2942 348 y Fo(:)14 b(:)g(:)44 +b(P)3136 360 y Fn(n)3225 348 y Fo(P)3278 360 y Fn(n)p +Fr(+1)3451 348 y Fp(h)p Fy(ellipsis)p Fp(i)p Fq(\))30 +b Fy(where)2099 447 y Fp(h)p Fy(ellipsis)p Fp(i)c Fy(is)g(the)f(iden)n +(ti\014er)h Fq(...)e Fy(and)h Fo(F)38 b Fy(is)25 b(a)g(v)n(ector)f(of)i +Fo(n)f Fy(or)2099 547 y(more)g(forms)g(the)g(\014rst)g +Fo(n)g Fy(of)h(whic)n(h)f(matc)n(h)g Fo(P)3546 559 y +Fr(1)3609 547 y Fy(through)f Fo(P)3973 559 y Fn(n)4019 +547 y Fy(,)2099 647 y(resp)r(ectiv)n(ely)-7 b(,)21 b(and)g(eac)n(h)e +(remaining)h(elemen)n(t)g(of)g Fo(F)33 b Fy(matc)n(hes)2099 +746 y Fo(P)2152 758 y Fn(n)p Fr(+1)2282 746 y Fy(;)28 +b(or)2016 912 y Fp(\017)41 b Fo(P)g Fy(is)29 b(a)g(datum)g(and)g +Fo(F)42 b Fy(is)29 b(equal)f(to)h Fo(P)41 b Fy(in)30 +b(the)f(sense)g(of)g(the)2099 1012 y Fq(equal?)d Fy(pro)r(cedure.)1933 +1236 y(It)j(is)f(an)g(error)f(to)h(use)g(a)g(macro)g(k)n(eyw)n(ord,)e +(within)j(the)g(scop)r(e)f(of)1933 1336 y(its)35 b(binding,)h(in)e(an)g +(expression)f(that)i(do)r(es)e(not)i(matc)n(h)f(an)n(y)f(of)1933 +1435 y(the)28 b(patterns.)1933 1577 y(When)23 b(a)e(macro)g(use)g(is)h +(transcrib)r(ed)f(according)f(to)i(the)g(template)1933 +1676 y(of)i(the)g(matc)n(hing)f Fp(h)p Fy(syn)n(tax)k(rule)p +Fp(i)p Fy(,)e(pattern)e(v)-5 b(ariables)23 b(that)h(o)r(ccur)1933 +1776 y(in)32 b(the)g(template)f(are)g(replaced)f(b)n(y)h(the)h +(subforms)f(they)g(matc)n(h)1933 1875 y(in)h(the)g(input.)50 +b(P)n(attern)31 b(v)-5 b(ariables)31 b(that)h(o)r(ccur)f(in)h +(subpatterns)1933 1975 y(follo)n(w)n(ed)27 b(b)n(y)g(one)g(or)g(more)g +(instances)g(of)g(the)h(iden)n(ti\014er)g Fq(...)e Fy(are)1933 +2075 y(allo)n(w)n(ed)e(only)g(in)i(subtemplates)f(that)g(are)f(follo)n +(w)n(ed)g(b)n(y)g(as)h(man)n(y)1933 2174 y(instances)33 +b(of)h Fq(...)p Fy(.)54 b(They)33 b(are)g(replaced)f(in)i(the)g(output) +g(b)n(y)f(all)1933 2274 y(of)38 b(the)g(subforms)g(they)g(matc)n(h)g +(in)g(the)g(input,)j(distributed)e(as)1933 2374 y(indicated.)51 +b(It)32 b(is)g(an)g(error)e(if)i(the)h(output)f(cannot)g(b)r(e)g(built) +h(up)1933 2473 y(as)27 b(sp)r(eci\014ed.)1933 2614 y(Iden)n(ti\014ers)e +(that)g(app)r(ear)e(in)i(the)g(template)h(but)f(are)f(not)g(pattern) +1933 2714 y(v)-5 b(ariables)27 b(or)g(the)i(iden)n(ti\014er)f +Fq(...)e Fy(are)i(inserted)f(in)n(to)h(the)h(output)1933 +2814 y(as)k(literal)g(iden)n(ti\014ers.)54 b(If)34 b(a)g(literal)f +(iden)n(ti\014er)g(is)g(inserted)h(as)f(a)1933 2913 y(free)24 +b(iden)n(ti\014er)g(then)h(it)f(refers)f(to)h(the)h(binding)f(of)g +(that)g(iden)n(ti\014er)1933 3013 y(within)g(whose)e(scop)r(e)h(the)g +(instance)f(of)h Fq(syntax-rules)18 b Fy(app)r(ears.)1933 +3112 y(If)32 b(a)e(literal)h(iden)n(ti\014er)f(is)h(inserted)g(as)f(a)h +(b)r(ound)g(iden)n(ti\014er)g(then)1933 3212 y(it)j(is)f(in)g(e\013ect) +h(renamed)e(to)h(prev)n(en)n(t)g(inadv)n(erten)n(t)f(captures)g(of)1933 +3312 y(free)c(iden)n(ti\014ers.)1933 3453 y(As)21 b(an)f(example,)i(if) +f Fq(let)f Fy(and)g Fq(cond)f Fy(are)h(de\014ned)h(as)f(in)h(section)f +(7.3)1933 3553 y(then)g(they)g(are)f(h)n(ygienic)g(\(as)g(required\))g +(and)h(the)g(follo)n(wing)f(is)g(not)1933 3652 y(an)28 +b(error.)2090 3802 y Fm(\(let)40 b(\(\(=>)g(#f\)\))2169 +3893 y(\(cond)g(\(#t)g(=>)g('ok\)\)\))276 b Fl(=)-13 +b Fk(\))39 b Fm(ok)1933 4051 y Fy(The)c(macro)e(transformer)g(for)h +Fq(cond)f Fy(recognizes)f Fq(=>)i Fy(as)g(a)g(lo)r(cal)1933 +4150 y(v)-5 b(ariable,)25 b(and)g(hence)h(an)f(expression,)f(and)h(not) +h(as)e(the)i(top-lev)n(el)1933 4250 y(iden)n(ti\014er)g +Fq(=>)p Fy(,)f(whic)n(h)h(the)g(macro)f(transformer)f(treats)h(as)g(a)h +(syn-)1933 4350 y(tactic)i(k)n(eyw)n(ord.)35 b(Th)n(us)27 +b(the)h(example)f(expands)g(in)n(to)2090 4499 y Fm(\(let)40 +b(\(\(=>)g(#f\)\))2169 4590 y(\(if)g(#t)f(\(begin)i(=>)f('ok\)\)\))1933 +4748 y Fy(instead)28 b(of)2090 4897 y Fm(\(let)40 b(\(\(=>)g(#f\)\)) +2169 4989 y(\(let)g(\(\(temp)g(#t\)\))2247 5080 y(\(if)g(temp)g(\('ok)g +(temp\)\)\)\))1933 5238 y Fy(whic)n(h)28 b(w)n(ould)f(result)g(in)h(an) +f(in)n(v)-5 b(alid)28 b(pro)r(cedure)f(call.)p eop +%%Page: 16 16 +16 15 bop -300 -125 a Fy(16)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fu(5.)162 b(Program)37 +b(structure)-300 249 y(5.1.)56 b(Programs)-300 474 y +Fy(A)34 b(Sc)n(heme)h(program)d(consists)h(of)h(a)g(sequence)f(of)i +(expressions,)-300 574 y(de\014nitions,)46 b(and)c(syn)n(tax)g +(de\014nitions.)81 b(Expressions)40 b(are)h(de-)-300 +674 y(scrib)r(ed)27 b(in)g(c)n(hapter)f(4;)h(de\014nitions)h(and)e(syn) +n(tax)h(de\014nitions)g(are)-300 773 y(the)h(sub)5 b(ject)28 +b(of)f(the)h(rest)f(of)h(the)g(presen)n(t)f(c)n(hapter.)-300 +923 y(Programs)44 b(are)h(t)n(ypically)h(stored)g(in)g(\014les)h(or)e +(en)n(tered)i(in)n(ter-)-300 1023 y(activ)n(ely)53 b(to)h(a)f(running)h +(Sc)n(heme)g(system,)60 b(although)53 b(other)-300 1123 +y(paradigms)26 b(are)i(p)r(ossible;)g(questions)f(of)h(user)g(in)n +(terface)f(lie)h(out-)-300 1222 y(side)19 b(the)h(scop)r(e)e(of)h(this) +h(rep)r(ort.)33 b(\(Indeed,)21 b(Sc)n(heme)e(w)n(ould)g(still)g(b)r(e) +-300 1322 y(useful)26 b(as)e(a)h(notation)g(for)g(expressing)f +(computational)h(metho)r(ds)-300 1421 y(ev)n(en)i(in)h(the)g(absence)f +(of)g(a)h(mec)n(hanical)e(implemen)n(tation.\))-300 1572 +y(De\014nitions)21 b(and)f(syn)n(tax)f(de\014nitions)h(o)r(ccurring)f +(at)h(the)g(top)g(lev)n(el)-300 1671 y(of)27 b(a)h(program)d(can)i(b)r +(e)h(in)n(terpreted)f(declarativ)n(ely)-7 b(.)35 b(They)28 +b(cause)-300 1771 y(bindings)20 b(to)h(b)r(e)g(created)e(in)i(the)g +(top)f(lev)n(el)g(en)n(vironmen)n(t)f(or)h(mo)r(d-)-300 +1870 y(ify)39 b(the)h(v)-5 b(alue)39 b(of)g(existing)g(top-lev)n(el)f +(bindings.)71 b(Expressions)-300 1970 y(o)r(ccurring)24 +b(at)h(the)h(top)g(lev)n(el)f(of)g(a)g(program)e(are)i(in)n(terpreted)g +(im-)-300 2070 y(p)r(erativ)n(ely;)36 b(they)d(are)g(executed)g(in)h +(order)e(when)i(the)g(program)-300 2169 y(is)g(in)n(v)n(ok)n(ed)e(or)i +(loaded,)g(and)g(t)n(ypically)g(p)r(erform)f(some)h(kind)g(of)-300 +2269 y(initialization.)-300 2419 y(A)n(t)47 b(the)h(top)f(lev)n(el)g +(of)g(a)f(program)f Fq(\(begin)d Fp(h)p Fy(form)1439 +2431 y Fr(1)1476 2419 y Fp(i)h Fo(:)14 b(:)g(:)g Fq(\))47 +b Fy(is)-300 2519 y(equiv)-5 b(alen)n(t)30 b(to)f(the)i(sequence)e(of)h +(expressions,)e(de\014nitions,)j(and)-300 2618 y(syn)n(tax)c +(de\014nitions)g(that)h(form)g(the)g(b)r(o)r(dy)f(of)h(the)g +Fq(begin)p Fy(.)-300 2929 y Fu(5.2.)56 b(De\014nitions)-300 +3155 y Fy(De\014nitions)33 b(are)e(v)-5 b(alid)32 b(in)h(some,)g(but)f +(not)h(all,)g(con)n(texts)e(where)-300 3255 y(expressions)36 +b(are)g(allo)n(w)n(ed.)66 b(They)37 b(are)g(v)-5 b(alid)37 +b(only)g(at)h(the)g(top)-300 3354 y(lev)n(el)27 b(of)h(a)f +Fp(h)p Fy(program)p Fp(i)f Fy(and)h(at)h(the)g(b)r(eginning)f(of)h(a)f +Fp(h)p Fy(b)r(o)r(dy)p Fp(i)q Fy(.)-300 3504 y(A)h(de\014nition)g +(should)f(ha)n(v)n(e)g(one)g(of)g(the)h(follo)n(wing)f(forms:)-217 +3751 y Fp(\017)41 b Fq(\(define)g Fp(h)p Fy(v)-5 b(ariable)p +Fp(i)43 b(h)p Fy(expression)p Fp(i)o Fq(\))-217 3935 +y Fp(\017)e Fq(\(define)g(\()p Fp(h)p Fy(v)-5 b(ariable)p +Fp(i)42 b(h)p Fy(formals)p Fp(i)p Fq(\))h Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)q Fq(\))-134 4068 y Fp(h)p Fy(F)-7 b(ormals)p Fp(i)26 +b Fy(should)f(b)r(e)i(either)f(a)f(sequence)h(of)g(zero)f(or)g(more) +-134 4160 y(v)-5 b(ariables,)32 b(or)f(a)h(sequence)g(of)g(one)g(or)f +(more)g(v)-5 b(ariables)31 b(fol-)-134 4251 y(lo)n(w)n(ed)j(b)n(y)h(a)g +(space-delimited)g(p)r(erio)r(d)g(and)g(another)f(v)-5 +b(ari-)-134 4342 y(able)29 b(\(as)g(in)g(a)g(lam)n(b)r(da)f +(expression\).)41 b(This)29 b(form)f(is)h(equiv-)-134 +4434 y(alen)n(t)e(to)23 4643 y Fm(\(define)41 b Fk(h)p +Fl(v)l(ariable)p Fk(i)101 4734 y Fm(\(lambda)g(\()p Fk(h)p +Fl(formals)p Fk(i)q Fm(\))f Fk(h)p Fl(b)r(o)r(dy)p Fk(i)o +Fm(\)\))p Fl(.)-217 4951 y Fp(\017)h Fq(\(define)g(\()p +Fp(h)p Fy(v)-5 b(ariable)p Fp(i)42 b Fq(.)i Fp(h)p Fy(formal)p +Fp(i)o Fq(\))f Fp(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))-134 +5085 y Fp(h)p Fy(F)-7 b(ormal)p Fp(i)41 b Fy(should)f(b)r(e)i(a)e +(single)h(v)-5 b(ariable.)75 b(This)41 b(form)g(is)-134 +5176 y(equiv)-5 b(alen)n(t)27 b(to)23 5385 y Fm(\(define)41 +b Fk(h)p Fl(v)l(ariable)p Fk(i)101 5476 y Fm(\(lambda)g +Fk(h)p Fl(formal)p Fk(i)f(h)p Fl(b)r(o)r(dy)p Fk(i)o +Fm(\)\))p Fl(.)1933 82 y Fv(5.2.1.)46 b(T)-8 b(op)32 +b(lev)m(el)f(de\014nitions)1933 246 y Fy(A)n(t)d(the)g(top)g(lev)n(el)f +(of)g(a)h(program,)d(a)i(de\014nition)2090 374 y Fm(\(define)41 +b Fk(h)p Fl(v)l(ariable)p Fk(i)f(h)p Fl(expression)p +Fk(i)p Fm(\))1933 503 y Fy(has)35 b(essen)n(tially)g(the)h(same)f +(e\013ect)h(as)f(the)h(assignmen)n(t)e(expres-)1933 594 +y(sion)2090 722 y Fm(\(set!)41 b Fk(h)p Fl(v)l(ariable)p +Fk(i)e(h)p Fl(expression)p Fk(i)p Fm(\))1933 859 y Fy(if)29 +b Fp(h)p Fy(v)-5 b(ariable)p Fp(i)27 b Fy(is)g(b)r(ound.)38 +b(If)28 b Fp(h)p Fy(v)-5 b(ariable)p Fp(i)28 b Fy(is)f(not)h(b)r(ound,) +g(ho)n(w)n(ev)n(er,)1933 958 y(then)35 b(the)f(de\014nition)g(will)g +(bind)g Fp(h)p Fy(v)-5 b(ariable)p Fp(i)34 b Fy(to)f(a)h(new)g(lo)r +(cation)1933 1058 y(b)r(efore)28 b(p)r(erforming)f(the)h(assignmen)n +(t,)e(whereas)h(it)h(w)n(ould)f(b)r(e)h(an)1933 1158 +y(error)e(to)h(p)r(erform)g(a)h Fq(set!)e Fy(on)h(an)g(un)n(b)r(ound)h +(v)-5 b(ariable.)2090 1300 y Fm(\(define)41 b(add3)2169 +1392 y(\(lambda)f(\(x\))g(\(+)g(x)g(3\)\)\))2090 1483 +y(\(add3)h(3\))785 b Fl(=)-13 b Fk(\))78 b Fm(6)2090 +1574 y(\(define)41 b(first)f(car\))2090 1666 y(\(first)h('\(1)f(2\)\)) +550 b Fl(=)-13 b Fk(\))78 b Fm(1)1933 1816 y Fy(Some)39 +b(implemen)n(tations)f(of)g(Sc)n(heme)h(use)f(an)g(initial)h(en)n +(viron-)1933 1916 y(men)n(t)23 b(in)f(whic)n(h)h(all)f(p)r(ossible)g(v) +-5 b(ariables)21 b(are)g(b)r(ound)i(to)f(lo)r(cations,)1933 +2016 y(most)32 b(of)f(whic)n(h)h(con)n(tain)e(unde\014ned)i(v)-5 +b(alues.)49 b(T)-7 b(op)31 b(lev)n(el)g(de\014ni-)1933 +2115 y(tions)40 b(in)h(suc)n(h)f(an)g(implemen)n(tation)g(are)f(truly)h +(equiv)-5 b(alen)n(t)40 b(to)1933 2215 y(assignmen)n(ts.)1933 +2466 y Fv(5.2.2.)46 b(In)m(ternal)32 b(de\014nitions)1933 +2638 y Fy(De\014nitions)h(ma)n(y)e(o)r(ccur)g(at)h(the)g(b)r(eginning)g +(of)f(a)h Fp(h)p Fy(b)r(o)r(dy)p Fp(i)h Fy(\(that)1933 +2738 y(is,)27 b(the)h(b)r(o)r(dy)f(of)g(a)g Fq(lambda)p +Fy(,)e Fq(let)p Fy(,)h Fq(let*)p Fy(,)f Fq(letrec)p Fy(,)g +Fq(let-syntax)p Fy(,)1933 2837 y(or)k Fq(letrec-syntax)24 +b Fy(expression)k(or)g(that)i(of)f(a)g(de\014nition)h(of)f(an)1933 +2937 y(appropriate)e(form\).)41 b(Suc)n(h)29 b(de\014nitions)g(are)f +(kno)n(wn)g(as)g Fw(internal)1933 3037 y(de\014nitions)41 +b Fy(as)20 b(opp)r(osed)f(to)h(the)g(top)h(lev)n(el)e(de\014nitions)h +(describ)r(ed)1933 3136 y(ab)r(o)n(v)n(e.)69 b(The)39 +b(v)-5 b(ariable)37 b(de\014ned)i(b)n(y)g(an)f(in)n(ternal)g +(de\014nition)h(is)1933 3236 y(lo)r(cal)e(to)g(the)h +Fp(h)p Fy(b)r(o)r(dy)p Fp(i)q Fy(.)66 b(That)37 b(is,)j +Fp(h)p Fy(v)-5 b(ariable)p Fp(i)37 b Fy(is)g(b)r(ound)h(rather)1933 +3335 y(than)32 b(assigned,)f(and)h(the)g(region)e(of)h(the)h(binding)g +(is)g(the)g(en)n(tire)1933 3435 y Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)q Fy(.)37 b(F)-7 b(or)27 b(example,)2090 3578 y +Fm(\(let)40 b(\(\(x)g(5\)\))2169 3669 y(\(define)g(foo)g(\(lambda)h +(\(y\))f(\(bar)g(x)g(y\)\)\))2169 3760 y(\(define)g(bar)g(\(lambda)h +(\(a)f(b\))g(\(+)f(\(*)h(a)f(b\))h(a\)\)\))2169 3852 +y(\(foo)g(\(+)f(x)h(3\)\)\))472 b Fl(=)-13 b Fk(\))78 +b Fm(45)1933 4003 y Fy(A)22 b Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)g Fy(con)n(taining)e(in)n(ternal)h(de\014nitions)g(can)g(alw)n(a)n +(ys)e(b)r(e)j(con-)1933 4102 y(v)n(erted)f(in)n(to)h(a)f(completely)h +(equiv)-5 b(alen)n(t)21 b Fq(letrec)e Fy(expression.)34 +b(F)-7 b(or)1933 4202 y(example,)23 b(the)g Fq(let)e +Fy(expression)g(in)i(the)f(ab)r(o)n(v)n(e)f(example)h(is)h(equiv-)1933 +4301 y(alen)n(t)28 b(to)2090 4444 y Fm(\(let)40 b(\(\(x)g(5\)\))2169 +4535 y(\(letrec)g(\(\(foo)h(\(lambda)g(\(y\))f(\(bar)g(x)f(y\)\)\))2522 +4627 y(\(bar)h(\(lambda)h(\(a)e(b\))h(\(+)g(\(*)f(a)h(b\))g(a\)\)\)\)) +2247 4718 y(\(foo)g(\(+)g(x)f(3\)\)\)\))1933 4869 y Fy(Just)d(as)f(for) +g(the)h(equiv)-5 b(alen)n(t)35 b Fq(letrec)f Fy(expression,)i(it)g(m)n +(ust)g(b)r(e)1933 4968 y(p)r(ossible)23 b(to)f(ev)-5 +b(aluate)23 b(eac)n(h)f Fp(h)p Fy(expression)p Fp(i)g +Fy(of)g(ev)n(ery)g(in)n(ternal)g(def-)1933 5068 y(inition)38 +b(in)f(a)g Fp(h)p Fy(b)r(o)r(dy)p Fp(i)h Fy(without)g(assigning)e(or)g +(referring)g(to)h(the)1933 5168 y(v)-5 b(alue)28 b(of)f(an)n(y)g +Fp(h)p Fy(v)-5 b(ariable)p Fp(i)27 b Fy(b)r(eing)h(de\014ned.)1933 +5304 y(Wherev)n(er)73 b(an)g(in)n(ternal)g(de\014nition)h(ma)n(y)f(o)r +(ccur)g Fq(\(begin)1933 5404 y Fp(h)p Fy(de\014nition)2306 +5416 y Fr(1)2344 5404 y Fp(i)44 b Fo(:)14 b(:)g(:)g Fq(\))35 +b Fy(is)g(equiv)-5 b(alen)n(t)35 b(to)g(the)g(sequence)g(of)g +(de\014ni-)1933 5504 y(tions)28 b(that)g(form)f(the)h(b)r(o)r(dy)g(of)f +(the)h Fq(begin)p Fy(.)p eop +%%Page: 17 17 +17 16 bop 3005 -125 a Fy(6.)55 b(Standard)27 b(pro)r(cedures)82 +b(17)-300 82 y Fu(5.3.)56 b(Syn)m(tax)39 b(de\014nitions)-300 +301 y Fy(Syn)n(tax)46 b(de\014nitions)h(are)e(v)-5 b(alid)47 +b(only)f(at)g(the)h(top)g(lev)n(el)f(of)g(a)-300 401 +y Fp(h)p Fy(program)p Fp(i)n Fy(.)74 b(They)28 b(ha)n(v)n(e)e(the)i +(follo)n(wing)f(form:)-300 546 y Fq(\(define-syntax)38 +b Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)k(h)p Fy(transformer)26 +b(sp)r(ec)p Fp(i)p Fq(\))-300 691 y Fp(h)p Fy(Keyw)n(ord)p +Fp(i)50 b Fy(is)h(an)g(iden)n(ti\014er,)57 b(and)52 b(the)f +Fp(h)p Fy(transformer)26 b(sp)r(ec)p Fp(i)-300 791 y +Fy(should)c(b)r(e)g(an)g(instance)f(of)h Fq(syntax-rules)p +Fy(.)30 b(The)22 b(top-lev)n(el)f(syn-)-300 891 y(tactic)34 +b(en)n(vironmen)n(t)e(is)h(extended)h(b)n(y)g(binding)f(the)h +Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)-300 990 y Fy(to)27 b(the)h(sp)r +(eci\014ed)g(transformer.)-300 1136 y(There)42 b(is)g(no)g +Fq(define-syntax)37 b Fy(analogue)j(of)i(in)n(ternal)g(de\014ni-)-300 +1235 y(tions.)-300 1381 y(Although)31 b(macros)e(ma)n(y)h(expand)h(in)n +(to)f(de\014nitions)h(and)g(syn)n(tax)-300 1480 y(de\014nitions)26 +b(in)g(an)n(y)f(con)n(text)g(that)i(p)r(ermits)f(them,)g(it)h(is)e(an)h +(error)-300 1580 y(for)j(a)h(de\014nition)g(or)f(syn)n(tax)g +(de\014nition)h(to)f(shado)n(w)g(a)g(syn)n(tactic)-300 +1679 y(k)n(eyw)n(ord)35 b(whose)h(meaning)g(is)h(needed)g(to)f +(determine)h(whether)-300 1779 y(some)c(form)h(in)g(the)g(group)f(of)h +(forms)f(that)h(con)n(tains)f(the)i(shad-)-300 1879 y(o)n(wing)27 +b(de\014nition)h(is)g(in)g(fact)g(a)f(de\014nition,)h(or,)f(for)h(in)n +(ternal)f(def-)-300 1978 y(initions,)f(is)g(needed)h(to)f(determine)g +(the)g(b)r(oundary)f(b)r(et)n(w)n(een)h(the)-300 2078 +y(group)31 b(and)h(the)g(expressions)e(that)j(follo)n(w)e(the)h(group.) +49 b(F)-7 b(or)31 b(ex-)-300 2178 y(ample,)d(the)f(follo)n(wing)g(are)g +(errors:)-143 2338 y Fm(\(define)41 b(define)f(3\))-143 +2520 y(\(begin)h(\(define)f(begin)h(list\)\))-143 2703 +y(\(let-syntax)-65 2794 y(\(\(foo)g(\(syntax-rules)h(\(\))249 +2886 y(\(\(foo)f(\(proc)f(args)g(...\))g(body)g(...\))288 +2977 y(\(define)h(proc)367 3068 y(\(lambda)g(\(args)f(...\))445 +3160 y(body)g(...\)\)\)\)\)\))-65 3251 y(\(let)h(\(\(x)e(3\)\))14 +3342 y(\(foo)h(\(plus)g(x)g(y\))f(\(+)h(x)g(y\)\))14 +3434 y(\(define)h(foo)f(x\))14 3525 y(\(plus)g(foo)g(x\)\)\))-300 +3918 y Fu(6.)162 b(Standard)39 b(pro)s(cedures)-300 4063 +y Fy(This)31 b(c)n(hapter)f(describ)r(es)g(Sc)n(heme's)g(built-in)i +(pro)r(cedures.)45 b(The)-300 4163 y(initial)24 b(\(or)f(\\top)g(lev)n +(el"\))f(Sc)n(heme)i(en)n(vironmen)n(t)e(starts)h(out)g(with)-300 +4262 y(a)h(n)n(um)n(b)r(er)h(of)g(v)-5 b(ariables)24 +b(b)r(ound)h(to)g(lo)r(cations)f(con)n(taining)f(useful)-300 +4362 y(v)-5 b(alues,)38 b(most)e(of)h(whic)n(h)f(are)f(primitiv)n(e)i +(pro)r(cedures)e(that)h(ma-)-300 4461 y(nipulate)c(data.)47 +b(F)-7 b(or)30 b(example,)i(the)g(v)-5 b(ariable)30 b +Fq(abs)g Fy(is)h(b)r(ound)h(to)-300 4561 y(\(a)j(lo)r(cation)f +(initially)h(con)n(taining\))f(a)g(pro)r(cedure)g(of)h(one)f(argu-)-300 +4661 y(men)n(t)e(that)h(computes)f(the)g(absolute)f(v)-5 +b(alue)32 b(of)g(a)g(n)n(um)n(b)r(er,)h(and)-300 4760 +y(the)21 b(v)-5 b(ariable)20 b Fq(+)h Fy(is)g(b)r(ound)g(to)g(a)g(pro)r +(cedure)f(that)h(computes)g(sums.)-300 4860 y(Built-in)30 +b(pro)r(cedures)f(that)i(can)e(easily)h(b)r(e)g(written)h(in)f(terms)g +(of)-300 4960 y(other)j(built-in)h(pro)r(cedures)e(are)g(iden)n +(ti\014ed)i(as)e(\\library)g(pro)r(ce-)-300 5059 y(dures".)-300 +5205 y(A)26 b(program)d(ma)n(y)h(use)h(a)g(top-lev)n(el)g(de\014nition) +g(to)h(bind)f(an)n(y)g(v)-5 b(ari-)-300 5304 y(able.)63 +b(It)37 b(ma)n(y)f(subsequen)n(tly)g(alter)g(an)n(y)g(suc)n(h)g +(binding)h(b)n(y)f(an)-300 5404 y(assignmen)n(t)h(\(see)h(4.1.6\).)67 +b(These)37 b(op)r(erations)g(do)g(not)h(mo)r(dify)-300 +5504 y(the)25 b(b)r(eha)n(vior)d(of)j(Sc)n(heme's)e(built-in)i(pro)r +(cedures.)35 b(Altering)24 b(an)n(y)1933 82 y(top-lev)n(el)g(binding)h +(that)g(has)g(not)f(b)r(een)i(in)n(tro)r(duced)e(b)n(y)h(a)f(de\014ni-) +1933 182 y(tion)d(has)e(an)h(unsp)r(eci\014ed)h(e\013ect)f(on)g(the)h +(b)r(eha)n(vior)e(of)h(the)h(built-in)1933 281 y(pro)r(cedures.)1933 +561 y Fu(6.1.)57 b(Equiv)-6 b(alence)36 b(predicates)1933 +771 y Fy(A)e Fw(pr)l(e)l(dic)l(ate)h Fy(is)e(a)g(pro)r(cedure)g(that)g +(alw)n(a)n(ys)f(returns)h(a)g(b)r(o)r(olean)1933 870 +y(v)-5 b(alue)33 b(\()p Fq(#t)g Fy(or)f Fq(#f)p Fy(\).)53 +b(An)34 b Fw(e)l(quivalenc)l(e)i(pr)l(e)l(dic)l(ate)e +Fy(is)f(the)h(compu-)1933 970 y(tational)i(analogue)f(of)i(a)f +(mathematical)g(equiv)-5 b(alence)36 b(relation)1933 +1069 y(\(it)30 b(is)g(symmetric,)f(re\015exiv)n(e,)g(and)h(transitiv)n +(e\).)41 b(Of)30 b(the)g(equiv)-5 b(a-)1933 1169 y(lence)28 +b(predicates)f(describ)r(ed)h(in)g(this)g(section,)g +Fq(eq?)f Fy(is)h(the)g(\014nest)1933 1269 y(or)j(most)g +(discriminating,)g(and)g Fq(equal?)e Fy(is)i(the)h(coarsest.)46 +b Fq(Eqv?)1933 1368 y Fy(is)28 b(sligh)n(tly)f(less)g(discriminating)g +(than)h Fq(eq?)p Fy(.)1933 1616 y Fq(\(eqv?)42 b Fw(obj)2300 +1628 y Fr(1)2382 1616 y Fw(obj)2487 1628 y Fr(2)2525 +1616 y Fq(\))1115 b Fy(pro)r(cedure)1933 1754 y(The)36 +b Fq(eqv?)e Fy(pro)r(cedure)g(de\014nes)i(a)f(useful)h(equiv)-5 +b(alence)35 b(relation)1933 1854 y(on)g(ob)5 b(jects.)59 +b(Brie\015y)-7 b(,)36 b(it)g(returns)e Fq(#t)h Fy(if)g +Fw(obj)3385 1866 y Fr(1)3459 1854 y Fy(and)g Fw(obj)3733 +1866 y Fr(2)3806 1854 y Fy(should)1933 1954 y(normally)28 +b(b)r(e)i(regarded)e(as)g(the)i(same)f(ob)5 b(ject.)42 +b(This)29 b(relation)f(is)1933 2053 y(left)k(sligh)n(tly)e(op)r(en)g +(to)h(in)n(terpretation,)f(but)i(the)f(follo)n(wing)e(par-)1933 +2153 y(tial)k(sp)r(eci\014cation)f(of)g Fq(eqv?)f Fy(holds)i(for)f(all) +g(implemen)n(tations)g(of)1933 2253 y(Sc)n(heme.)1933 +2391 y(The)c Fq(eqv?)e Fy(pro)r(cedure)h(returns)f Fq(#t)h +Fy(if:)2016 2606 y Fp(\017)41 b Fw(obj)2204 2618 y Fr(1)2270 +2606 y Fy(and)28 b Fw(obj)2537 2618 y Fr(2)2603 2606 +y Fy(are)e(b)r(oth)i Fq(#t)f Fy(or)g(b)r(oth)h Fq(#f)p +Fy(.)2016 2769 y Fp(\017)41 b Fw(obj)2204 2781 y Fr(1)2270 +2769 y Fy(and)28 b Fw(obj)2537 2781 y Fr(2)2603 2769 +y Fy(are)e(b)r(oth)i(sym)n(b)r(ols)f(and)2256 2969 y +Fm(\(string=?)42 b(\(symbol->string)g(obj1\))2649 3061 +y(\(symbol->string)g(obj2\)\))3355 3152 y Fl(=)-13 b +Fk(\))78 b Fm(#t)2099 3360 y Fj(Note:)72 b Fl(This)27 +b(assumes)g(that)f(neither)g Fj(obj)3350 3368 y Fi(1)3411 +3360 y Fl(nor)g Fj(obj)3646 3368 y Fi(2)3707 3360 y Fl(is)h(an)g(\\un-) +2099 3459 y(in)n(terned)k(sym)n(b)r(ol")f(as)i(alluded)f(to)g(in)g +(section)h(6.3.3.)53 b(This)31 b(re-)2099 3559 y(p)r(ort)d(do)r(es)f +(not)g(presume)g(to)g(sp)r(ecify)h(the)f(b)r(eha)n(vior)g(of)h +Fm(eqv?)g Fl(on)2099 3659 y(implemen)n(tation-dep)r(enden)n(t)23 +b(extensions.)2016 3822 y Fp(\017)41 b Fw(obj)2204 3834 +y Fr(1)2266 3822 y Fy(and)24 b Fw(obj)2529 3834 y Fr(2)2591 +3822 y Fy(are)e(b)r(oth)i(n)n(um)n(b)r(ers,)g(are)f(n)n(umerically)g +(equal)2099 3922 y(\(see)k Fq(=)p Fy(,)g(section)g(6.2\),)g(and)f(are)h +(either)f(b)r(oth)i(exact)f(or)f(b)r(oth)2099 4021 y(inexact.)2016 +4185 y Fp(\017)41 b Fw(obj)2204 4197 y Fr(1)2280 4185 +y Fy(and)c Fw(obj)2556 4197 y Fr(2)2631 4185 y Fy(are)g(b)r(oth)g(c)n +(haracters)e(and)i(are)f(the)i(same)2099 4284 y(c)n(haracter)46 +b(according)g(to)h(the)i Fq(char=?)c Fy(pro)r(cedure)i(\(sec-)2099 +4384 y(tion)28 b(6.3.4\).)2016 4547 y Fp(\017)41 b Fy(b)r(oth)28 +b Fw(obj)2400 4559 y Fr(1)2466 4547 y Fy(and)g Fw(obj)2733 +4559 y Fr(2)2799 4547 y Fy(are)e(the)i(empt)n(y)g(list.)2016 +4711 y Fp(\017)41 b Fw(obj)2204 4723 y Fr(1)2268 4711 +y Fy(and)25 b Fw(obj)2532 4723 y Fr(2)2595 4711 y Fy(are)g(pairs,)f(v)n +(ectors,)g(or)h(strings)f(that)h(denote)2099 4811 y(the)j(same)f(lo)r +(cations)g(in)h(the)g(store)f(\(section)g(3.4\).)2016 +4974 y Fp(\017)41 b Fw(obj)2204 4986 y Fr(1)2275 4974 +y Fy(and)31 b Fw(obj)2545 4986 y Fr(2)2616 4974 y Fy(are)g(pro)r +(cedures)f(whose)i(lo)r(cation)f(tags)g(are)2099 5074 +y(equal)c(\(section)h(4.1.4\).)1933 5289 y(The)g Fq(eqv?)e +Fy(pro)r(cedure)h(returns)f Fq(#f)h Fy(if:)2016 5504 +y Fp(\017)41 b Fw(obj)2204 5516 y Fr(1)2270 5504 y Fy(and)28 +b Fw(obj)2537 5516 y Fr(2)2603 5504 y Fy(are)e(of)i(di\013eren)n(t)g(t) +n(yp)r(es)f(\(section)h(3.2\).)p eop +%%Page: 18 18 +18 17 bop -300 -125 a Fy(18)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-217 82 y Fp(\017)41 b Fy(one)27 +b(of)h Fw(obj)218 94 y Fr(1)284 82 y Fy(and)f Fw(obj)550 +94 y Fr(2)616 82 y Fy(is)h Fq(#t)f Fy(but)h(the)g(other)f(is)g +Fq(#f)p Fy(.)-217 272 y Fp(\017)41 b Fw(obj)-29 284 y +Fr(1)37 272 y Fy(and)27 b Fw(obj)303 284 y Fr(2)369 272 +y Fy(are)g(sym)n(b)r(ols)g(but)23 510 y Fm(\(string=?)41 +b(\(symbol->string)i Fj(obj)1141 518 y Fi(1)1175 510 +y Fm(\))415 602 y(\(symbol->string)g Fj(obj)1141 610 +y Fi(2)1175 602 y Fm(\)\))1121 693 y Fl(=)-13 b Fk(\))79 +b Fm(#f)-217 939 y Fp(\017)41 b Fy(one)26 b(of)h Fw(obj)216 +951 y Fr(1)280 939 y Fy(and)g Fw(obj)546 951 y Fr(2)611 +939 y Fy(is)f(an)g(exact)g(n)n(um)n(b)r(er)g(but)i(the)e(other)-134 +1039 y(is)i(an)f(inexact)g(n)n(um)n(b)r(er.)-217 1229 +y Fp(\017)41 b Fw(obj)-29 1241 y Fr(1)40 1229 y Fy(and)31 +b Fw(obj)310 1241 y Fr(2)379 1229 y Fy(are)f(n)n(um)n(b)r(ers)g(for)g +(whic)n(h)h(the)g Fq(=)g Fy(pro)r(cedure)-134 1329 y(returns)c +Fq(#f)p Fy(.)-217 1519 y Fp(\017)41 b Fw(obj)-29 1531 +y Fr(1)33 1519 y Fy(and)23 b Fw(obj)295 1531 y Fr(2)356 +1519 y Fy(are)g(c)n(haracters)e(for)h(whic)n(h)h(the)h +Fq(char=?)d Fy(pro-)-134 1619 y(cedure)27 b(returns)g +Fq(#f)p Fy(.)-217 1809 y Fp(\017)41 b Fy(one)28 b(of)g +Fw(obj)219 1821 y Fr(1)285 1809 y Fy(and)g Fw(obj)552 +1821 y Fr(2)619 1809 y Fy(is)f(the)i(empt)n(y)f(list)g(but)h(the)f +(other)g(is)-134 1909 y(not.)-217 2099 y Fp(\017)41 b +Fw(obj)-29 2111 y Fr(1)35 2099 y Fy(and)25 b Fw(obj)299 +2111 y Fr(2)362 2099 y Fy(are)f(pairs,)h(v)n(ectors,)f(or)g(strings)h +(that)g(denote)-134 2199 y(distinct)j(lo)r(cations.)-217 +2389 y Fp(\017)41 b Fw(obj)-29 2401 y Fr(1)33 2389 y +Fy(and)24 b Fw(obj)296 2401 y Fr(2)358 2389 y Fy(are)f(pro)r(cedures)f +(that)i(w)n(ould)f(b)r(eha)n(v)n(e)g(di\013er-)-134 2489 +y(en)n(tly)35 b(\(return)f(di\013eren)n(t)h(v)-5 b(alue\(s\))35 +b(or)f(ha)n(v)n(e)f(di\013eren)n(t)i(side)-134 2588 y(e\013ects\))28 +b(for)f(some)g(argumen)n(ts.)-143 2781 y Fm(\(eqv?)40 +b('a)g('a\))628 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 2872 +y(\(eqv?)40 b('a)g('b\))628 b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 +2963 y(\(eqv?)40 b(2)g(2\))706 b Fl(=)-13 b Fk(\))78 +b Fm(#t)-143 3055 y(\(eqv?)40 b('\(\))g('\(\)\))550 b +Fl(=)-13 b Fk(\))78 b Fm(#t)-143 3146 y(\(eqv?)40 b(100000000)i +(100000000\))80 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 3237 +y(\(eqv?)40 b(\(cons)h(1)e(2\))h(\(cons)g(1)g(2\)\))p +Fl(=)-13 b Fk(\))78 b Fm(#f)-143 3329 y(\(eqv?)40 b(\(lambda)h(\(\))f +(1\))92 3420 y(\(lambda)h(\(\))f(2\)\))314 b Fl(=)-13 +b Fk(\))78 b Fm(#f)-143 3511 y(\(eqv?)40 b(#f)g('nil\))550 +b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 3603 y(\(let)40 b(\(\(p)g(\(lambda)h +(\(x\))f(x\)\)\))-65 3694 y(\(eqv?)h(p)e(p\)\))589 b +Fl(=)-13 b Fk(\))78 b Fm(#t)-300 3882 y Fy(The)26 b(follo)n(wing)e +(examples)h(illustrate)h(cases)e(in)i(whic)n(h)g(the)g(ab)r(o)n(v)n(e) +-300 3982 y(rules)34 b(do)g(not)h(fully)g(sp)r(ecify)g(the)g(b)r(eha)n +(vior)e(of)h Fq(eqv?)p Fy(.)57 b(All)35 b(that)-300 4081 +y(can)27 b(b)r(e)g(said)g(ab)r(out)g(suc)n(h)f(cases)g(is)h(that)g(the) +h(v)-5 b(alue)27 b(returned)f(b)n(y)-300 4181 y Fq(eqv?)g +Fy(m)n(ust)i(b)r(e)g(a)f(b)r(o)r(olean.)-143 4361 y Fm(\(eqv?)40 +b("")g(""\))628 b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +4452 y Fm(\(eqv?)40 b('#\(\))g('#\(\)\))472 b Fl(=)-13 +b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 4543 y Fm(\(eqv?)40 +b(\(lambda)h(\(x\))f(x\))92 4635 y(\(lambda)h(\(x\))f(x\)\))275 +b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +4726 y Fm(\(eqv?)40 b(\(lambda)h(\(x\))f(x\))92 4817 +y(\(lambda)h(\(y\))f(y\)\))275 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)-300 5005 y Fy(The)29 b(next)f(set)h(of)g +(examples)e(sho)n(ws)h(the)h(use)f(of)h Fq(eqv?)e Fy(with)i(pro-)-300 +5105 y(cedures)e(that)h(ha)n(v)n(e)f(lo)r(cal)g(state.)37 +b Fq(Gen-counter)23 b Fy(m)n(ust)28 b(return)f(a)-300 +5205 y(distinct)f(pro)r(cedure)e(ev)n(ery)f(time,)j(since)f(eac)n(h)f +(pro)r(cedure)g(has)h(its)-300 5304 y(o)n(wn)j(in)n(ternal)f(coun)n +(ter.)38 b Fq(Gen-loser)p Fy(,)25 b(ho)n(w)n(ev)n(er,)i(returns)g +(equiv-)-300 5404 y(alen)n(t)k(pro)r(cedures)f(eac)n(h)g(time,)j(since) +e(the)g(lo)r(cal)g(state)g(do)r(es)g(not)-300 5504 y(a\013ect)d(the)g +(v)-5 b(alue)27 b(or)g(side)g(e\013ects)h(of)g(the)g(pro)r(cedures.) +2090 82 y Fm(\(define)41 b(gen-counter)2169 174 y(\(lambda)f(\(\))2247 +265 y(\(let)g(\(\(n)g(0\)\))2326 356 y(\(lambda)g(\(\))g(\(set!)g(n)g +(\(+)g(n)f(1\)\))h(n\)\)\)\))2090 447 y(\(let)g(\(\(g)g +(\(gen-counter\)\)\))2169 539 y(\(eqv?)g(g)f(g\)\))590 +b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 630 y(\(eqv?)41 b(\(gen-counter\))h +(\(gen-counter\)\))3189 721 y Fl(=)-13 b Fk(\))78 b Fm(#f)2090 +813 y(\(define)41 b(gen-loser)2169 904 y(\(lambda)f(\(\))2247 +995 y(\(let)g(\(\(n)g(0\)\))2326 1087 y(\(lambda)g(\(\))g(\(set!)g(n)g +(\(+)g(n)f(1\)\))h(27\)\)\)\))2090 1178 y(\(let)g(\(\(g)g +(\(gen-loser\)\)\))2169 1269 y(\(eqv?)g(g)f(g\)\))590 +b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 1361 y(\(eqv?)41 b(\(gen-loser\))g +(\(gen-loser\)\))3189 1452 y Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l +(ci\014e)l(d)2090 1635 y Fm(\(letrec)41 b(\(\(f)f(\(lambda)h(\(\))e +(\(if)h(\(eqv?)h(f)e(g\))h('both)g('f\)\)\))2443 1726 +y(\(g)g(\(lambda)h(\(\))e(\(if)h(\(eqv?)h(f)e(g\))h('both)g('g\)\)\)\)) +2169 1817 y(\(eqv?)g(f)f(g\)\))3189 1909 y Fl(=)-13 b +Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)2090 2091 y Fm(\(letrec)41 +b(\(\(f)f(\(lambda)h(\(\))e(\(if)h(\(eqv?)h(f)e(g\))h('f)g('both\)\)\)) +2443 2183 y(\(g)g(\(lambda)h(\(\))e(\(if)h(\(eqv?)h(f)e(g\))h('g)g +('both\)\)\)\))2169 2274 y(\(eqv?)g(f)f(g\)\))3189 2365 +y Fl(=)-13 b Fk(\))78 b Fm(#f)1933 2520 y Fy(Since)34 +b(it)g(is)g(an)f(error)f(to)h(mo)r(dify)h(constan)n(t)f(ob)5 +b(jects)33 b(\(those)h(re-)1933 2620 y(turned)42 b(b)n(y)f(literal)h +(expressions\),)h(implemen)n(tations)f(are)f(p)r(er-)1933 +2719 y(mitted,)g(though)c(not)g(required,)i(to)e(share)f(structure)h(b) +r(et)n(w)n(een)1933 2819 y(constan)n(ts)d(where)g(appropriate.)56 +b(Th)n(us)34 b(the)h(v)-5 b(alue)34 b(of)h Fq(eqv?)d +Fy(on)1933 2919 y(constan)n(ts)27 b(is)g(sometimes)h(implemen)n +(tation-dep)r(enden)n(t.)2090 3065 y Fm(\(eqv?)41 b('\(a\))f('\(a\)\)) +472 b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)2090 +3157 y Fm(\(eqv?)41 b("a")e("a"\))551 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)2090 3248 y Fm(\(eqv?)41 +b('\(b\))f(\(cdr)g('\(a)g(b\)\)\))158 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)2090 3339 y Fm(\(let)40 b(\(\(x)g +('\(a\)\)\))2169 3431 y(\(eqv?)g(x)f(x\)\))590 b Fl(=)-13 +b Fk(\))78 b Fm(#t)1933 3585 y Fj(R)l(ationale:)96 b +Fl(The)33 b(ab)r(o)n(v)n(e)g(de\014nition)f(of)h Fm(eqv?)g +Fl(allo)n(ws)i(implemen)n(ta-)1933 3685 y(tions)25 b(latitude)g(in)f +(their)g(treatmen)n(t)f(of)i(pro)r(cedures)g(and)f(literals:)35 +b(im-)1933 3785 y(plemen)n(tations)27 b(are)g(free)h(either)f(to)g +(detect)g(or)h(to)f(fail)h(to)f(detect)g(that)1933 3884 +y(t)n(w)n(o)d(pro)r(cedures)g(or)g(t)n(w)n(o)g(literals)h(are)g(equiv)l +(alen)n(t)d(to)i(eac)n(h)g(other,)g(and)1933 3984 y(can)18 +b(decide)g(whether)g(or)g(not)f(to)h(merge)g(represen)n(tations)g(of)h +(equiv)l(alen)n(t)1933 4084 y(ob)t(jects)33 b(b)n(y)e(using)h(the)g +(same)g(p)r(oin)n(ter)g(or)g(bit)g(pattern)f(to)h(represen)n(t)1933 +4183 y(b)r(oth.)1933 4428 y Fq(\(eq?)42 b Fw(obj)2256 +4440 y Fr(1)2338 4428 y Fw(obj)2443 4440 y Fr(2)2481 +4428 y Fq(\))1159 b Fy(pro)r(cedure)1933 4567 y Fq(Eq?)18 +b Fy(is)h(similar)g(to)g Fq(eqv?)e Fy(except)i(that)h(in)f(some)f +(cases)g(it)i(is)f(capable)1933 4667 y(of)41 b(discerning)f +(distinctions)h(\014ner)g(than)g(those)f(detectable)h(b)n(y)1933 +4767 y Fq(eqv?)p Fy(.)1933 4906 y Fq(Eq?)22 b Fy(and)g +Fq(eqv?)f Fy(are)h(guaran)n(teed)f(to)i(ha)n(v)n(e)e(the)i(same)f(b)r +(eha)n(vior)f(on)1933 5005 y(sym)n(b)r(ols,)34 b(b)r(o)r(oleans,)f(the) +h(empt)n(y)e(list,)j(pairs,)e(pro)r(cedures,)g(and)1933 +5105 y(non-empt)n(y)23 b(strings)g(and)g(v)n(ectors.)34 +b Fq(Eq?)p Fy('s)22 b(b)r(eha)n(vior)g(on)h(n)n(um)n(b)r(ers)1933 +5205 y(and)g(c)n(haracters)d(is)j(implemen)n(tation-dep)r(enden)n(t,)h +(but)g(it)f(will)g(al-)1933 5304 y(w)n(a)n(ys)29 b(return)h(either)g +(true)g(or)g(false,)h(and)f(will)g(return)g(true)h(only)1933 +5404 y(when)j Fq(eqv?)e Fy(w)n(ould)h(also)g(return)g(true.)54 +b Fq(Eq?)33 b Fy(ma)n(y)g(also)f(b)r(eha)n(v)n(e)1933 +5504 y(di\013eren)n(tly)26 b(from)g Fq(eqv?)e Fy(on)h(empt)n(y)h(v)n +(ectors)e(and)i(empt)n(y)g(strings.)p eop +%%Page: 19 19 +19 18 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(19)-143 82 y Fm(\(eq?)40 b('a)g('a\))667 b Fl(=)-13 +b Fk(\))78 b Fm(#t)-143 174 y(\(eq?)40 b('\(a\))g('\(a\)\))511 +b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +265 y Fm(\(eq?)40 b(\(list)g('a\))g(\(list)h('a\)\))118 +b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 356 y(\(eq?)40 b("a")g("a"\))589 +b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +447 y Fm(\(eq?)40 b("")g(""\))667 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)-143 539 y Fm(\(eq?)40 b('\(\))g('\(\)\)) +589 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 630 y(\(eq?)40 +b(2)g(2\))745 b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +721 y Fm(\(eq?)40 b(#\\A)g(#\\A\))589 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)-143 813 y Fm(\(eq?)40 b(car)g(car\))589 +b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 904 y(\(let)40 b(\(\(n)g(\(+)g(2)f +(3\)\)\))-65 995 y(\(eq?)i(n)e(n\)\))628 b Fl(=)-13 b +Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 1087 y Fm(\(let)40 +b(\(\(x)g('\(a\)\)\))-65 1178 y(\(eq?)h(x)e(x\)\))628 +b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 1269 y(\(let)40 b(\(\(x)g +('#\(\)\)\))-65 1361 y(\(eq?)h(x)e(x\)\))628 b Fl(=)-13 +b Fk(\))78 b Fm(#t)-143 1452 y(\(let)40 b(\(\(p)g(\(lambda)h(\(x\))f +(x\)\)\))-65 1543 y(\(eq?)h(p)e(p\)\))628 b Fl(=)-13 +b Fk(\))78 b Fm(#t)-300 1693 y Fj(R)l(ationale:)e Fl(It)27 +b(will)i(usually)e(b)r(e)h(p)r(ossible)g(to)g(implemen)n(t)d +Fm(eq?)k Fl(m)n(uc)n(h)-300 1793 y(more)17 b(e\016cien)n(tly)h(than)f +Fm(eqv?)p Fl(,)k(for)d(example,)h(as)f(a)g(simple)g(p)r(oin)n(ter)g +(com-)-300 1893 y(parison)34 b(instead)f(of)g(as)h(some)e(more)h +(complicated)f(op)r(eration.)57 b(One)-300 1992 y(reason)31 +b(is)g(that)g(it)f(ma)n(y)f(not)i(b)r(e)f(p)r(ossible)i(to)e(compute)g +Fm(eqv?)h Fl(of)g(t)n(w)n(o)-300 2092 y(n)n(um)n(b)r(ers)22 +b(in)h(constan)n(t)g(time,)g(whereas)i Fm(eq?)f Fl(implemen)n(ted)d(as) +j(p)r(oin)n(ter)-300 2191 y(comparison)19 b(will)i(alw)n(a)n(ys)f +(\014nish)f(in)g(constan)n(t)g(time.)31 b Fm(Eq?)20 b +Fl(ma)n(y)e(b)r(e)h(used)-300 2291 y(lik)n(e)j Fm(eqv?)h +Fl(in)f(applications)i(using)f(pro)r(cedures)f(to)g(implemen)n(t)f(ob)t +(jects)-300 2391 y(with)26 b(state)g(since)g(it)g(ob)r(eys)g(the)f +(same)h(constrain)n(ts)g(as)g Fm(eqv?)p Fl(.)-300 2623 +y Fq(\(equal?)41 b Fw(obj)154 2635 y Fr(1)236 2623 y +Fw(obj)341 2635 y Fr(2)379 2623 y Fq(\))758 b Fy(library)26 +b(pro)r(cedure)-300 2759 y Fq(Equal?)21 b Fy(recursiv)n(ely)g(compares) +h(the)i(con)n(ten)n(ts)f(of)g(pairs,)g(v)n(ectors,)-300 +2859 y(and)30 b(strings,)g(applying)f Fq(eqv?)f Fy(on)i(other)f(ob)5 +b(jects)30 b(suc)n(h)g(as)f(n)n(um-)-300 2958 y(b)r(ers)40 +b(and)f(sym)n(b)r(ols.)73 b(A)41 b(rule)e(of)h(th)n(um)n(b)g(is)g(that) +g(ob)5 b(jects)40 b(are)-300 3058 y(generally)29 b Fq(equal?)f +Fy(if)j(they)g(prin)n(t)g(the)f(same.)46 b Fq(Equal?)28 +b Fy(ma)n(y)i(fail)-300 3157 y(to)d(terminate)h(if)g(its)g(argumen)n +(ts)e(are)h(circular)f(data)h(structures.)-143 3299 y +Fm(\(equal?)41 b('a)e('a\))550 b Fl(=)-13 b Fk(\))78 +b Fm(#t)-143 3391 y(\(equal?)41 b('\(a\))f('\(a\)\))393 +b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 3482 y(\(equal?)41 +b('\(a)f(\(b\))g(c\))171 3573 y('\(a)g(\(b\))g(c\)\))353 +b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 3664 y(\(equal?)41 +b("abc")f("abc"\))315 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 +3756 y(\(equal?)41 b(2)e(2\))628 b Fl(=)-13 b Fk(\))78 +b Fm(#t)-143 3847 y(\(equal?)41 b(\(make-vector)h(5)d('a\))171 +3938 y(\(make-vector)j(5)d('a\)\))h Fl(=)-13 b Fk(\))78 +b Fm(#t)-143 4030 y(\(equal?)41 b(\(lambda)g(\(x\))e(x\))171 +4121 y(\(lambda)i(\(y\))e(y\)\))197 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)-300 4399 y Fu(6.2.)56 b(Num)m(b)s(ers)-300 +4607 y Fy(Numerical)41 b(computation)f(has)h(traditionally)f(b)r(een)h +(neglected)-300 4707 y(b)n(y)e(the)h(Lisp)g(comm)n(unit)n(y)-7 +b(.)72 b(Un)n(til)40 b(Common)f(Lisp)h(there)f(w)n(as)-300 +4806 y(no)27 b(carefully)f(though)n(t)g(out)h(strategy)f(for)g +(organizing)f(n)n(umerical)-300 4906 y(computation,)31 +b(and)g(with)g(the)g(exception)g(of)f(the)i(MacLisp)e(sys-)-300 +5005 y(tem)j([20)o(])g(little)g(e\013ort)f(w)n(as)f(made)i(to)f +(execute)g(n)n(umerical)g(co)r(de)-300 5105 y(e\016cien)n(tly)-7 +b(.)36 b(This)25 b(rep)r(ort)e(recognizes)g(the)i(excellen)n(t)g(w)n +(ork)e(of)h(the)-300 5205 y(Common)35 b(Lisp)g(committee)g(and)g +(accepts)g(man)n(y)f(of)i(their)f(rec-)-300 5304 y(ommendations.)70 +b(In)39 b(some)f(w)n(a)n(ys)g(this)h(rep)r(ort)f(simpli\014es)h(and) +-300 5404 y(generalizes)22 b(their)i(prop)r(osals)e(in)i(a)g(manner)f +(consisten)n(t)g(with)h(the)-300 5504 y(purp)r(oses)j(of)g(Sc)n(heme.) +1933 82 y(It)48 b(is)f(imp)r(ortan)n(t)g(to)g(distinguish)g(b)r(et)n(w) +n(een)h(the)f(mathemati-)1933 182 y(cal)31 b(n)n(um)n(b)r(ers,)g(the)g +(Sc)n(heme)g(n)n(um)n(b)r(ers)f(that)i(attempt)f(to)g(mo)r(del)1933 +281 y(them,)g(the)f(mac)n(hine)f(represen)n(tations)f(used)i(to)f +(implemen)n(t)i(the)1933 381 y(Sc)n(heme)41 b(n)n(um)n(b)r(ers,)i(and)d +(notations)g(used)g(to)g(write)h(n)n(um)n(b)r(ers.)1933 +481 y(This)27 b(rep)r(ort)f(uses)h(the)g(t)n(yp)r(es)g +Fw(numb)l(er)p Fy(,)g Fw(c)l(omplex)p Fy(,)g Fw(r)l(e)l(al)p +Fy(,)h Fw(r)l(ational)p Fy(,)1933 580 y(and)39 b Fw(inte)l(ger)h +Fy(to)f(refer)g(to)g(b)r(oth)h(mathematical)e(n)n(um)n(b)r(ers)h(and) +1933 680 y(Sc)n(heme)e(n)n(um)n(b)r(ers.)64 b(Mac)n(hine)37 +b(represen)n(tations)d(suc)n(h)j(as)f(\014xed)1933 780 +y(p)r(oin)n(t)c(and)f(\015oating)f(p)r(oin)n(t)h(are)f(referred)g(to)h +(b)n(y)g(names)g(suc)n(h)g(as)1933 879 y Fw(\014xnum)26 +b Fy(and)i Fw(\015onum)p Fy(.)1933 1131 y Fv(6.2.1.)46 +b(Numerical)30 b(t)m(yp)s(es)1933 1304 y Fy(Mathematically)-7 +b(,)27 b(n)n(um)n(b)r(ers)f(ma)n(y)g(b)r(e)h(arranged)d(in)n(to)j(a)f +(to)n(w)n(er)f(of)1933 1404 y(subt)n(yp)r(es)k(in)g(whic)n(h)g(eac)n(h) +f(lev)n(el)g(is)g(a)h(subset)f(of)h(the)g(lev)n(el)f(ab)r(o)n(v)n(e) +1933 1503 y(it:)2182 1640 y(n)n(um)n(b)r(er)2182 1740 +y(complex)2182 1840 y(real)2182 1939 y(rational)2182 +2039 y(in)n(teger)1933 2176 y(F)-7 b(or)24 b(example,)h(3)f(is)g(an)g +(in)n(teger.)35 b(Therefore)23 b(3)h(is)g(also)f(a)h(rational,)1933 +2276 y(a)37 b(real,)h(and)e(a)h(complex.)64 b(The)37 +b(same)f(is)h(true)f(of)h(the)g(Sc)n(heme)1933 2376 y(n)n(um)n(b)r(ers) +31 b(that)g(mo)r(del)h(3.)47 b(F)-7 b(or)30 b(Sc)n(heme)h(n)n(um)n(b)r +(ers,)h(these)f(t)n(yp)r(es)1933 2475 y(are)h(de\014ned)h(b)n(y)f(the)h +(predicates)e Fq(number?)p Fy(,)g Fq(complex?)p Fy(,)g +Fq(real?)p Fy(,)1933 2575 y Fq(rational?)p Fy(,)24 b(and)k +Fq(integer?)p Fy(.)1933 2712 y(There)34 b(is)g(no)f(simple)i +(relationship)e(b)r(et)n(w)n(een)h(a)f(n)n(um)n(b)r(er's)h(t)n(yp)r(e) +1933 2812 y(and)e(its)g(represen)n(tation)f(inside)h(a)f(computer.)50 +b(Although)32 b(most)1933 2911 y(implemen)n(tations)27 +b(of)g(Sc)n(heme)g(will)g(o\013er)f(at)h(least)g(t)n(w)n(o)f +(di\013eren)n(t)1933 3011 y(represen)n(tations)e(of)i(3,)g(these)g +(di\013eren)n(t)g(represen)n(tations)e(denote)1933 3111 +y(the)k(same)f(in)n(teger.)1933 3248 y(Sc)n(heme's)33 +b(n)n(umerical)g(op)r(erations)f(treat)h(n)n(um)n(b)r(ers)g(as)f +(abstract)1933 3347 y(data,)41 b(as)d(indep)r(enden)n(t)h(of)g(their)f +(represen)n(tation)f(as)g(p)r(ossible.)1933 3447 y(Although)e(an)f +(implemen)n(tation)g(of)g(Sc)n(heme)g(ma)n(y)g(use)g(\014xn)n(um,)1933 +3547 y(\015on)n(um,)45 b(and)d(p)r(erhaps)f(other)g(represen)n(tations) +e(for)j(n)n(um)n(b)r(ers,)1933 3646 y(this)20 b(should)f(not)g(b)r(e)h +(apparen)n(t)e(to)h(a)g(casual)f(programmer)f(writing)1933 +3746 y(simple)28 b(programs.)1933 3883 y(It)36 b(is)g(necessary)-7 +b(,)36 b(ho)n(w)n(ev)n(er,)f(to)h(distinguish)f(b)r(et)n(w)n(een)h(n)n +(um)n(b)r(ers)1933 3983 y(that)g(are)e(represen)n(ted)g(exactly)h(and)g +(those)f(that)i(ma)n(y)e(not)i(b)r(e.)1933 4082 y(F)-7 +b(or)29 b(example,)h(indexes)g(in)n(to)f(data)h(structures)f(m)n(ust)h +(b)r(e)g(kno)n(wn)1933 4182 y(exactly)-7 b(,)23 b(as)f(m)n(ust)g(some)g +(p)r(olynomial)g(co)r(e\016cien)n(ts)g(in)h(a)f(sym)n(b)r(olic)1933 +4282 y(algebra)f(system.)35 b(On)22 b(the)g(other)g(hand,)h(the)g +(results)e(of)h(measure-)1933 4381 y(men)n(ts)29 b(are)f(inheren)n(tly) +h(inexact,)g(and)g(irrational)e(n)n(um)n(b)r(ers)i(ma)n(y)1933 +4481 y(b)r(e)24 b(appro)n(ximated)e(b)n(y)h(rational)f(and)h(therefore) +f(inexact)h(appro)n(x-)1933 4581 y(imations.)36 b(In)27 +b(order)e(to)i(catc)n(h)f(uses)g(of)g(inexact)h(n)n(um)n(b)r(ers)f +(where)1933 4680 y(exact)18 b(n)n(um)n(b)r(ers)g(are)g(required,)h(Sc)n +(heme)g(explicitly)f(distinguishes)1933 4780 y(exact)k(from)g(inexact)g +(n)n(um)n(b)r(ers.)34 b(This)23 b(distinction)f(is)g(orthogonal)1933 +4879 y(to)28 b(the)g(dimension)f(of)h(t)n(yp)r(e.)1933 +5131 y Fv(6.2.2.)46 b(Exactness)1933 5304 y Fy(Sc)n(heme)30 +b(n)n(um)n(b)r(ers)f(are)g(either)g Fw(exact)h Fy(or)f +Fw(inexact)p Fy(.)43 b(A)30 b(n)n(um)n(b)r(er)f(is)1933 +5404 y(exact)d(if)h(it)f(w)n(as)f(written)i(as)e(an)h(exact)g(constan)n +(t)f(or)h(w)n(as)f(deriv)n(ed)1933 5504 y(from)19 b(exact)g(n)n(um)n(b) +r(ers)g(using)g(only)f(exact)h(op)r(erations.)33 b(A)19 +b(n)n(um)n(b)r(er)p eop +%%Page: 20 20 +20 19 bop -300 -125 a Fy(20)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y(is)39 b(inexact)g(if)h(it)g(w)n(as)e +(written)i(as)f(an)g(inexact)g(constan)n(t,)j(if)d(it)-300 +182 y(w)n(as)29 b(deriv)n(ed)g(using)h(inexact)g(ingredien)n(ts,)g(or)f +(if)i(it)f(w)n(as)g(deriv)n(ed)-300 281 y(using)25 b(inexact)g(op)r +(erations.)35 b(Th)n(us)25 b(inexactness)g(is)g(a)g(con)n(tagious)-300 +381 y(prop)r(ert)n(y)h(of)i(a)f(n)n(um)n(b)r(er.)-300 +522 y(If)37 b(t)n(w)n(o)f(implemen)n(tations)h(pro)r(duce)f(exact)g +(results)g(for)g(a)g(com-)-300 621 y(putation)27 b(that)f(did)h(not)g +(in)n(v)n(olv)n(e)e(inexact)h(in)n(termediate)g(results,)-300 +721 y(the)d(t)n(w)n(o)f(ultimate)h(results)f(will)h(b)r(e)g +(mathematically)f(equiv)-5 b(alen)n(t.)-300 821 y(This)29 +b(is)h(generally)e(not)h(true)h(of)f(computations)g(in)n(v)n(olving)f +(inex-)-300 920 y(act)35 b(n)n(um)n(b)r(ers)g(since)h(appro)n(ximate)e +(metho)r(ds)h(suc)n(h)h(as)f(\015oating)-300 1020 y(p)r(oin)n(t)g +(arithmetic)f(ma)n(y)f(b)r(e)i(used,)h(but)f(it)g(is)f(the)h(dut)n(y)f +(of)h(eac)n(h)-300 1120 y(implemen)n(tation)28 b(to)g(mak)n(e)g(the)g +(result)g(as)g(close)f(as)h(practical)f(to)-300 1219 +y(the)h(mathematically)f(ideal)g(result.)-300 1360 y(Rational)33 +b(op)r(erations)g(suc)n(h)h(as)g Fq(+)f Fy(should)h(alw)n(a)n(ys)f(pro) +r(duce)g(ex-)-300 1460 y(act)f(results)g(when)g(giv)n(en)g(exact)g +(argumen)n(ts.)49 b(If)33 b(the)g(op)r(eration)-300 1559 +y(is)j(unable)h(to)f(pro)r(duce)g(an)h(exact)f(result,)i(then)f(it)g +(ma)n(y)f(either)-300 1659 y(rep)r(ort)28 b(the)i(violation)e(of)i(an)f +(implemen)n(tation)g(restriction)f(or)g(it)-300 1759 +y(ma)n(y)g(silen)n(tly)g(co)r(erce)f(its)i(result)f(to)h(an)f(inexact)g +(v)-5 b(alue.)39 b(See)29 b(sec-)-300 1858 y(tion)f(6.2.3.)-300 +1999 y(With)c(the)f(exception)f(of)h Fq(inexact->exact)p +Fy(,)18 b(the)23 b(op)r(erations)e(de-)-300 2099 y(scrib)r(ed)g(in)h +(this)g(section)f(m)n(ust)g(generally)f(return)h(inexact)g(results)-300 +2198 y(when)41 b(giv)n(en)f(an)n(y)g(inexact)g(argumen)n(ts.)75 +b(An)41 b(op)r(eration)e(ma)n(y)-7 b(,)-300 2298 y(ho)n(w)n(ev)n(er,)40 +b(return)e(an)h(exact)g(result)f(if)i(it)f(can)g(pro)n(v)n(e)e(that)i +(the)-300 2397 y(v)-5 b(alue)34 b(of)g(the)h(result)e(is)h +(una\013ected)h(b)n(y)f(the)g(inexactness)g(of)g(its)-300 +2497 y(argumen)n(ts.)i(F)-7 b(or)27 b(example,)g(m)n(ultiplication)h +(of)g(an)n(y)f(n)n(um)n(b)r(er)g(b)n(y)-300 2597 y(an)c(exact)h(zero)e +(ma)n(y)h(pro)r(duce)h(an)f(exact)g(zero)g(result,)h(ev)n(en)f(if)h +(the)-300 2696 y(other)j(argumen)n(t)g(is)g(inexact.)-300 +2953 y Fv(6.2.3.)46 b(Implemen)m(tation)28 b(restrictions)-300 +3130 y Fy(Implemen)n(tations)e(of)g(Sc)n(heme)g(are)g(not)g(required)f +(to)h(implemen)n(t)-300 3229 y(the)42 b(whole)f(to)n(w)n(er)f(of)i +(subt)n(yp)r(es)f(giv)n(en)g(in)g(section)g(6.2.1,)j(but)-300 +3329 y(they)e(m)n(ust)h(implemen)n(t)f(a)g(coheren)n(t)f(subset)i +(consisten)n(t)e(with)-300 3429 y(b)r(oth)g(the)f(purp)r(oses)f(of)i +(the)f(implemen)n(tation)g(and)g(the)h(spirit)-300 3528 +y(of)29 b(the)h(Sc)n(heme)g(language.)41 b(F)-7 b(or)29 +b(example,)g(an)h(implemen)n(tation)-300 3628 y(in)e(whic)n(h)f(all)h +(n)n(um)n(b)r(ers)f(are)f(real)h(ma)n(y)g(still)h(b)r(e)g(quite)g +(useful.)-300 3769 y(Implemen)n(tations)f(ma)n(y)f(also)h(supp)r(ort)g +(only)f(a)h(limited)h(range)e(of)-300 3868 y(n)n(um)n(b)r(ers)33 +b(of)h(an)n(y)f(t)n(yp)r(e,)i(sub)5 b(ject)34 b(to)f(the)h(requiremen)n +(ts)f(of)h(this)-300 3968 y(section.)69 b(The)38 b(supp)r(orted)g +(range)f(for)h(exact)g(n)n(um)n(b)r(ers)f(of)i(an)n(y)-300 +4068 y(t)n(yp)r(e)32 b(ma)n(y)g(b)r(e)g(di\013eren)n(t)h(from)e(the)i +(supp)r(orted)f(range)f(for)g(inex-)-300 4167 y(act)22 +b(n)n(um)n(b)r(ers)g(of)h(that)g(t)n(yp)r(e.)35 b(F)-7 +b(or)22 b(example,)h(an)g(implemen)n(tation)-300 4267 +y(that)28 b(uses)e(\015on)n(ums)h(to)g(represen)n(t)g(all)g(its)g +(inexact)g(real)f(n)n(um)n(b)r(ers)-300 4366 y(ma)n(y)i(supp)r(ort)h(a) +g(practically)f(un)n(b)r(ounded)h(range)f(of)h(exact)f(in)n(te-)-300 +4466 y(gers)d(and)h(rationals)f(while)i(limiting)g(the)g(range)e(of)h +(inexact)g(reals)-300 4566 y(\(and)i(therefore)e(the)i(range)e(of)h +(inexact)h(in)n(tegers)e(and)h(rationals\))-300 4665 +y(to)k(the)h(dynamic)f(range)e(of)i(the)h(\015on)n(um)f(format.)47 +b(F)-7 b(urthermore)-300 4765 y(the)21 b(gaps)g(b)r(et)n(w)n(een)g(the) +g(represen)n(table)e(inexact)i(in)n(tegers)f(and)h(ra-)-300 +4865 y(tionals)e(are)f(lik)n(ely)h(to)h(b)r(e)f(v)n(ery)g(large)f(in)h +(suc)n(h)h(an)f(implemen)n(tation)-300 4964 y(as)27 b(the)h(limits)g +(of)g(this)f(range)g(are)f(approac)n(hed.)-300 5105 y(An)f(implemen)n +(tation)f(of)g(Sc)n(heme)g(m)n(ust)g(supp)r(ort)g(exact)g(in)n(tegers) +-300 5205 y(throughout)40 b(the)g(range)f(of)h(n)n(um)n(b)r(ers)g(that) +h(ma)n(y)e(b)r(e)i(used)f(for)-300 5304 y(indexes)h(of)f(lists,)45 +b(v)n(ectors,)d(and)f(strings)f(or)g(that)h(ma)n(y)f(result)-300 +5404 y(from)27 b(computing)g(the)g(length)g(of)g(a)f(list,)i(v)n +(ector,)e(or)g(string.)36 b(The)-300 5504 y Fq(length)p +Fy(,)e Fq(vector-length)p Fy(,)e(and)j Fq(string-length)29 +b Fy(pro)r(cedures)1933 82 y(m)n(ust)42 b(return)e(an)h(exact)g(in)n +(teger,)j(and)d(it)g(is)g(an)g(error)e(to)i(use)1933 +182 y(an)n(ything)35 b(but)g(an)g(exact)g(in)n(teger)f(as)g(an)h +(index.)59 b(F)-7 b(urthermore)1933 281 y(an)n(y)33 b(in)n(teger)f +(constan)n(t)h(within)h(the)g(index)f(range,)g(if)h(expressed)1933 +381 y(b)n(y)25 b(an)f(exact)h(in)n(teger)e(syn)n(tax,)i(will)g(indeed)g +(b)r(e)g(read)f(as)g(an)h(exact)1933 481 y(in)n(teger,)i(regardless)e +(of)j(an)n(y)f(implemen)n(tation)g(restrictions)g(that)1933 +580 y(ma)n(y)19 b(apply)g(outside)f(this)i(range.)33 +b(Finally)-7 b(,)20 b(the)g(pro)r(cedures)e(listed)1933 +680 y(b)r(elo)n(w)h(will)h(alw)n(a)n(ys)e(return)h(an)g(exact)g(in)n +(teger)g(result)g(pro)n(vided)f(all)1933 780 y(their)24 +b(argumen)n(ts)f(are)g(exact)h(in)n(tegers)f(and)h(the)h +(mathematically)1933 879 y(exp)r(ected)j(result)g(is)f(represen)n +(table)f(as)h(an)h(exact)f(in)n(teger)f(within)1933 979 +y(the)i(implemen)n(tation:)2090 1146 y Fm(+)471 b(-)510 +b(*)2090 1238 y(quotient)198 b(remainder)g(modulo)2090 +1329 y(max)393 b(min)432 b(abs)2090 1420 y(numerator)159 +b(denominator)120 b(gcd)2090 1512 y(lcm)393 b(floor)354 +b(ceiling)2090 1603 y(truncate)198 b(round)354 b(rationalize)2090 +1694 y(expt)1933 1870 y Fy(Implemen)n(tations)24 b(are)g(encouraged,)f +(but)i(not)f(required,)g(to)g(sup-)1933 1970 y(p)r(ort)c(exact)g(in)n +(tegers)e(and)i(exact)g(rationals)e(of)i(practically)f(unlim-)1933 +2070 y(ited)26 b(size)f(and)h(precision,)f(and)g(to)g(implemen)n(t)h +(the)g(ab)r(o)n(v)n(e)e(pro)r(ce-)1933 2169 y(dures)j(and)h(the)g +Fq(/)f Fy(pro)r(cedure)f(in)i(suc)n(h)f(a)g(w)n(a)n(y)g(that)g(they)h +(alw)n(a)n(ys)1933 2269 y(return)d(exact)g(results)f(when)i(giv)n(en)e +(exact)h(argumen)n(ts.)35 b(If)25 b(one)g(of)1933 2368 +y(these)j(pro)r(cedures)f(is)h(unable)f(to)h(deliv)n(er)f(an)h(exact)f +(result)h(when)1933 2468 y(giv)n(en)38 b(exact)g(argumen)n(ts,)i(then)f +(it)g(ma)n(y)f(either)g(rep)r(ort)g(a)g(vio-)1933 2568 +y(lation)c(of)g(an)f(implemen)n(tation)h(restriction)f(or)g(it)h(ma)n +(y)f(silen)n(tly)1933 2667 y(co)r(erce)j(its)h(result)g(to)g(an)g +(inexact)f(n)n(um)n(b)r(er.)65 b(Suc)n(h)37 b(a)f(co)r(ercion)1933 +2767 y(ma)n(y)27 b(cause)g(an)g(error)f(later.)1933 2915 +y(An)34 b(implemen)n(tation)g(ma)n(y)e(use)i(\015oating)e(p)r(oin)n(t)i +(and)f(other)g(ap-)1933 3015 y(pro)n(ximate)38 b(represen)n(tation)g +(strategies)f(for)i(inexact)g(n)n(um)n(b)r(ers.)1933 +3115 y(This)f(rep)r(ort)e(recommends,)k(but)e(do)r(es)f(not)g(require,) +i(that)f(the)1933 3214 y(IEEE)19 b(32-bit)g(and)h(64-bit)f(\015oating)g +(p)r(oin)n(t)h(standards)f(b)r(e)h(follo)n(w)n(ed)1933 +3314 y(b)n(y)34 b(implemen)n(tations)f(that)h(use)g(\015on)n(um)f +(represen)n(tations,)g(and)1933 3413 y(that)40 b(implemen)n(tations)f +(using)g(other)f(represen)n(tations)f(should)1933 3513 +y(matc)n(h)26 b(or)f(exceed)g(the)h(precision)f(ac)n(hiev)-5 +b(able)25 b(using)g(these)h(\015oat-)1933 3613 y(ing)i(p)r(oin)n(t)f +(standards)g([12)o(].)1933 3761 y(In)36 b(particular,)f(implemen)n +(tations)g(that)h(use)f(\015on)n(um)g(represen-)1933 +3861 y(tations)e(m)n(ust)g(follo)n(w)g(these)g(rules:)47 +b(A)34 b(\015on)n(um)f(result)f(m)n(ust)i(b)r(e)1933 +3960 y(represen)n(ted)f(with)i(at)e(least)h(as)f(m)n(uc)n(h)h +(precision)f(as)g(is)h(used)g(to)1933 4060 y(express)25 +b(an)n(y)g(of)h(the)g(inexact)f(argumen)n(ts)g(to)g(that)i(op)r +(eration.)35 b(It)1933 4160 y(is)24 b(desirable)f(\(but)h(not)g +(required\))f(for)g(p)r(oten)n(tially)h(inexact)f(op)r(er-)1933 +4259 y(ations)29 b(suc)n(h)h(as)f Fq(sqrt)p Fy(,)g(when)h(applied)f(to) +h(exact)f(argumen)n(ts,)g(to)1933 4359 y(pro)r(duce)d(exact)f(answ)n +(ers)g(whenev)n(er)g(p)r(ossible)g(\(for)h(example)g(the)1933 +4458 y(square)f(ro)r(ot)g(of)g(an)h(exact)f(4)g(ough)n(t)g(to)h(b)r(e)g +(an)f(exact)g(2\).)37 b(If,)26 b(ho)n(w-)1933 4558 y(ev)n(er,)21 +b(an)g(exact)f(n)n(um)n(b)r(er)h(is)g(op)r(erated)f(up)r(on)h(so)f(as)g +(to)h(pro)r(duce)f(an)1933 4658 y(inexact)25 b(result)f(\(as)h(b)n(y)f +Fq(sqrt)p Fy(\),)h(and)f(if)i(the)f(result)g(is)f(represen)n(ted)1933 +4757 y(as)g(a)g(\015on)n(um,)i(then)f(the)g(most)f(precise)g(\015on)n +(um)g(format)g(a)n(v)-5 b(ailable)1933 4857 y(m)n(ust)24 +b(b)r(e)g(used;)h(but)f(if)g(the)f(result)h(is)f(represen)n(ted)f(in)i +(some)f(other)1933 4957 y(w)n(a)n(y)35 b(then)i(the)f(represen)n +(tation)f(m)n(ust)h(ha)n(v)n(e)f(at)h(least)g(as)f(m)n(uc)n(h)1933 +5056 y(precision)27 b(as)g(the)h(most)f(precise)g(\015on)n(um)g(format) +h(a)n(v)-5 b(ailable.)1933 5205 y(Although)28 b(Sc)n(heme)g(allo)n(ws)f +(a)h(v)-5 b(ariet)n(y)27 b(of)h(written)g(notations)g(for)1933 +5304 y(n)n(um)n(b)r(ers,)c(an)n(y)f(particular)f(implemen)n(tation)i +(ma)n(y)e(supp)r(ort)i(only)1933 5404 y(some)32 b(of)h(them.)52 +b(F)-7 b(or)31 b(example,)j(an)e(implemen)n(tation)g(in)h(whic)n(h)1933 +5504 y(all)27 b(n)n(um)n(b)r(ers)f(are)g(real)g(need)h(not)g(supp)r +(ort)g(the)g(rectangular)e(and)p eop +%%Page: 21 21 +21 20 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(21)-300 82 y(p)r(olar)34 b(notations)f(for)h(complex)g(n)n(um)n(b)r +(ers.)57 b(If)35 b(an)f(implemen)n(ta-)-300 182 y(tion)24 +b(encoun)n(ters)e(an)h(exact)g(n)n(umerical)g(constan)n(t)g(that)g(it)h +(cannot)-300 281 y(represen)n(t)j(as)h(an)g(exact)g(n)n(um)n(b)r(er,)g +(then)h(it)g(ma)n(y)e(either)i(rep)r(ort)e(a)-300 381 +y(violation)19 b(of)i(an)f(implemen)n(tation)g(restriction)f(or)h(it)g +(ma)n(y)g(silen)n(tly)-300 481 y(represen)n(t)26 b(the)i(constan)n(t)f +(b)n(y)h(an)f(inexact)g(n)n(um)n(b)r(er.)-300 742 y Fv(6.2.4.)46 +b(Syn)m(tax)33 b(of)f(n)m(umerical)f(constan)m(ts)-300 +921 y Fy(The)j(syn)n(tax)f(of)h(the)g(written)g(represen)n(tations)e +(for)i(n)n(um)n(b)r(ers)f(is)-300 1021 y(describ)r(ed)f(formally)f(in)h +(section)g(7.1.1.)49 b(Note)32 b(that)h(case)e(is)h(not)-300 +1120 y(signi\014can)n(t)27 b(in)h(n)n(umerical)e(constan)n(ts.)-300 +1263 y(A)c(n)n(um)n(b)r(er)g(ma)n(y)f(b)r(e)i(written)f(in)g(binary)-7 +b(,)22 b(o)r(ctal,)h(decimal,)g(or)e(hex-)-300 1362 y(adecimal)32 +b(b)n(y)g(the)g(use)h(of)f(a)g(radix)f(pre\014x.)51 b(The)32 +b(radix)g(pre\014xes)-300 1462 y(are)23 b Fq(#b)g Fy(\(binary\),)h +Fq(#o)f Fy(\(o)r(ctal\),)i Fq(#d)e Fy(\(decimal\),)i(and)f +Fq(#x)f Fy(\(hexadec-)-300 1562 y(imal\).)58 b(With)35 +b(no)f(radix)g(pre\014x,)i(a)e(n)n(um)n(b)r(er)g(is)g(assumed)g(to)g(b) +r(e)-300 1661 y(expressed)26 b(in)i(decimal.)-300 1804 +y(A)21 b(n)n(umerical)f(constan)n(t)g(ma)n(y)g(b)r(e)i(sp)r(eci\014ed)f +(to)f(b)r(e)i(either)e(exact)h(or)-300 1903 y(inexact)29 +b(b)n(y)g(a)h(pre\014x.)42 b(The)30 b(pre\014xes)e(are)h +Fq(#e)g Fy(for)g(exact,)g(and)h Fq(#i)-300 2003 y Fy(for)21 +b(inexact.)35 b(An)22 b(exactness)e(pre\014x)i(ma)n(y)e(app)r(ear)h(b)r +(efore)g(or)g(after)-300 2103 y(an)n(y)k(radix)g(pre\014x)h(that)g(is)g +(used.)36 b(If)27 b(the)f(written)h(represen)n(tation)-300 +2202 y(of)i(a)f(n)n(um)n(b)r(er)h(has)f(no)h(exactness)e(pre\014x,)i +(the)g(constan)n(t)f(ma)n(y)g(b)r(e)-300 2302 y(either)22 +b(inexact)f(or)g(exact.)34 b(It)22 b(is)g(inexact)f(if)i(it)f(con)n +(tains)f(a)g(decimal)-300 2402 y(p)r(oin)n(t,)38 b(an)e(exp)r(onen)n +(t,)i(or)d(a)h(\\)p Fq(#)p Fy(")f(c)n(haracter)f(in)i(the)h(place)e(of) +h(a)-300 2501 y(digit,)28 b(otherwise)e(it)i(is)g(exact.)-300 +2644 y(In)35 b(systems)g(with)g(inexact)g(n)n(um)n(b)r(ers)g(of)g(v)-5 +b(arying)34 b(precisions)f(it)-300 2743 y(ma)n(y)f(b)r(e)h(useful)g(to) +f(sp)r(ecify)h(the)g(precision)f(of)g(a)g(constan)n(t.)51 +b(F)-7 b(or)-300 2843 y(this)28 b(purp)r(ose,)g(n)n(umerical)f(constan) +n(ts)g(ma)n(y)g(b)r(e)h(written)h(with)f(an)-300 2943 +y(exp)r(onen)n(t)23 b(mark)n(er)e(that)i(indicates)f(the)i(desired)e +(precision)g(of)g(the)-300 3042 y(inexact)32 b(represen)n(tation.)50 +b(The)33 b(letters)f Fq(s)p Fy(,)h Fq(f)p Fy(,)h Fq(d)p +Fy(,)f(and)f Fq(l)h Fy(sp)r(ecify)-300 3142 y(the)25 +b(use)g(of)f Fw(short)9 b Fy(,)25 b Fw(single)7 b Fy(,)25 +b Fw(double)8 b Fy(,)25 b(and)g Fw(long)32 b Fy(precision,)25 +b(resp)r(ec-)-300 3242 y(tiv)n(ely)-7 b(.)61 b(\(When)37 +b(few)n(er)e(than)h(four)f(in)n(ternal)g(inexact)g(represen-)-300 +3341 y(tations)29 b(exist,)i(the)f(four)g(size)f(sp)r(eci\014cations)h +(are)e(mapp)r(ed)j(on)n(to)-300 3441 y(those)26 b(a)n(v)-5 +b(ailable.)36 b(F)-7 b(or)26 b(example,)g(an)h(implemen)n(tation)f +(with)i(t)n(w)n(o)-300 3540 y(in)n(ternal)21 b(represen)n(tations)e(ma) +n(y)i(map)g(short)g(and)g(single)g(together)-300 3640 +y(and)29 b(long)g(and)g(double)h(together.\))42 b(In)29 +b(addition,)h(the)g(exp)r(onen)n(t)-300 3740 y(mark)n(er)e +Fq(e)h Fy(sp)r(eci\014es)h(the)g(default)g(precision)f(for)g(the)i +(implemen-)-300 3839 y(tation.)k(The)21 b(default)h(precision)f(has)g +(at)g(least)h(as)e(m)n(uc)n(h)i(precision)-300 3939 y(as)j +Fw(double)8 b Fy(,)26 b(but)h(implemen)n(tations)f(ma)n(y)f(wish)i(to)f +(allo)n(w)f(this)h(de-)-300 4039 y(fault)i(to)f(b)r(e)h(set)g(b)n(y)f +(the)h(user.)-143 4191 y Fm(3.14159265358979F0)170 4283 +y Fl(Round)37 b(to)i(single)g(|)g Fm(3.141593)-143 4374 +y(0.6L0)170 4465 y Fl(Extend)e(to)i(long)g(|)g Fm(.600000000000000)-300 +4727 y Fv(6.2.5.)46 b(Numerical)30 b(op)s(erations)-300 +4906 y Fy(The)37 b(reader)e(is)h(referred)g(to)g(section)g(1.3.3)g(for) +g(a)g(summary)g(of)-300 5005 y(the)27 b(naming)g(con)n(v)n(en)n(tions)e +(used)j(to)e(sp)r(ecify)i(restrictions)e(on)g(the)-300 +5105 y(t)n(yp)r(es)34 b(of)g(argumen)n(ts)e(to)i(n)n(umerical)f +(routines.)55 b(The)34 b(examples)-300 5205 y(used)j(in)f(this)h +(section)f(assume)g(that)h(an)n(y)f(n)n(umerical)g(constan)n(t)-300 +5304 y(written)h(using)f(an)g(exact)h(notation)f(is)g(indeed)h +(represen)n(ted)f(as)-300 5404 y(an)24 b(exact)g(n)n(um)n(b)r(er.)36 +b(Some)24 b(examples)g(also)g(assume)g(that)g(certain)-300 +5504 y(n)n(umerical)i(constan)n(ts)f(written)i(using)f(an)g(inexact)g +(notation)g(can)1933 82 y(b)r(e)33 b(represen)n(ted)f(without)h(loss)f +(of)g(accuracy;)i(the)f(inexact)f(con-)1933 182 y(stan)n(ts)23 +b(w)n(ere)g(c)n(hosen)f(so)h(that)g(this)h(is)f(lik)n(ely)g(to)g(b)r(e) +h(true)f(in)h(imple-)1933 281 y(men)n(tations)f(that)h(use)g(\015on)n +(ums)f(to)h(represen)n(t)e(inexact)i(n)n(um)n(b)r(ers.)1933 +518 y Fq(\(number?)41 b Fw(obj)12 b Fq(\))1197 b Fy(pro)r(cedure)1933 +618 y Fq(\(complex?)40 b Fw(obj)12 b Fq(\))1154 b Fy(pro)r(cedure)1933 +718 y Fq(\(real?)41 b Fw(obj)12 b Fq(\))1285 b Fy(pro)r(cedure)1933 +817 y Fq(\(rational?)40 b Fw(obj)12 b Fq(\))1110 b Fy(pro)r(cedure)1933 +917 y Fq(\(integer?)40 b Fw(obj)12 b Fq(\))1154 b Fy(pro)r(cedure)1933 +1049 y(These)20 b(n)n(umerical)g(t)n(yp)r(e)g(predicates)g(can)g(b)r(e) +h(applied)f(to)g(an)n(y)g(kind)1933 1148 y(of)i(argumen)n(t,)f +(including)h(non-n)n(um)n(b)r(ers.)34 b(They)21 b(return)g +Fq(#t)g Fy(if)h(the)1933 1248 y(ob)5 b(ject)25 b(is)g(of)h(the)f(named) +g(t)n(yp)r(e,)h(and)f(otherwise)g(they)g(return)g Fq(#f)p +Fy(.)1933 1348 y(In)38 b(general,)i(if)e(a)g(t)n(yp)r(e)g(predicate)f +(is)h(true)g(of)g(a)g(n)n(um)n(b)r(er)g(then)1933 1447 +y(all)i(higher)e(t)n(yp)r(e)i(predicates)f(are)f(also)h(true)g(of)h +(that)f(n)n(um)n(b)r(er.)1933 1547 y(Consequen)n(tly)-7 +b(,)24 b(if)h(a)e(t)n(yp)r(e)h(predicate)f(is)h(false)g(of)g(a)f(n)n +(um)n(b)r(er,)i(then)1933 1647 y(all)j(lo)n(w)n(er)e(t)n(yp)r(e)h +(predicates)g(are)g(also)f(false)i(of)f(that)h(n)n(um)n(b)r(er.)1933 +1778 y(If)e Fo(z)j Fy(is)c(an)h(inexact)f(complex)g(n)n(um)n(b)r(er,)g +(then)h Fq(\(real?)41 b Fo(z)t Fq(\))25 b Fy(is)g(true)1933 +1878 y(if)33 b(and)e(only)h(if)g Fq(\(zero?)41 b(\(imag-part)f +Fo(z)s Fq(\)\))31 b Fy(is)h(true.)49 b(If)32 b Fo(x)h +Fy(is)e(an)1933 1978 y(inexact)21 b(real)e(n)n(um)n(b)r(er,)j(then)f +Fq(\(integer?)40 b Fo(x)q Fq(\))20 b Fy(is)g(true)h(if)g(and)g(only) +1933 2077 y(if)28 b Fq(\(=)43 b Fo(x)h Fq(\(round)d Fo(x)q +Fq(\)\))p Fy(.)2090 2213 y Fm(\(complex?)g(3+4i\))512 +b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 2304 y(\(complex?)41 +b(3\))629 b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 2396 y(\(real?)41 +b(3\))746 b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 2487 y(\(real?)41 +b(-2.5+0.0i\))434 b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 +2578 y(\(real?)41 b(#e1e10\))551 b Fl(=)-13 b Fk(\))78 +b Fm(#t)2090 2670 y(\(rational?)42 b(6/10\))472 b Fl(=)-13 +b Fk(\))78 b Fm(#t)2090 2761 y(\(rational?)42 b(6/3\))511 +b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 2852 y(\(integer?)41 +b(3+0i\))512 b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 2944 +y(\(integer?)41 b(3.0\))551 b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 +3035 y(\(integer?)41 b(8/4\))551 b Fl(=)-13 b Fk(\))78 +b Fm(#t)1933 3179 y Fj(Note:)e Fl(The)28 b(b)r(eha)n(vior)g(of)g(these) +g(t)n(yp)r(e)e(predicates)i(on)g(inexact)f(n)n(um-)1933 +3279 y(b)r(ers)f(is)g(unreliable,)h(since)f(an)n(y)f(inaccuracy)h(ma)n +(y)f(a\013ect)h(the)f(result.)1933 3411 y Fj(Note:)68 +b Fl(In)23 b(man)n(y)g(implemen)n(tations)g(the)g Fm(rational?)j +Fl(pro)r(cedure)f(will)1933 3510 y(b)r(e)i(the)f(same)g(as)h +Fm(real?)p Fl(,)h(and)e(the)g Fm(complex?)i Fl(pro)r(cedure)e(will)i(b) +r(e)e(the)1933 3610 y(same)37 b(as)g Fm(number?)p Fl(,)k(but)35 +b(un)n(usual)h(implemen)n(tations)g(ma)n(y)f(b)r(e)h(able)1933 +3709 y(to)22 b(represen)n(t)f(some)h(irrational)h(n)n(um)n(b)r(ers)c +(exactly)j(or)g(ma)n(y)e(extend)g(the)1933 3809 y(n)n(um)n(b)r(er)e +(system)i(to)g(supp)r(ort)g(some)f(kind)h(of)h(non-complex)d(n)n(um)n +(b)r(ers.)1933 4026 y Fq(\(exact?)41 b Fo(z)s Fq(\))1316 +b Fy(pro)r(cedure)1933 4126 y Fq(\(inexact?)40 b Fo(z)s +Fq(\))1229 b Fy(pro)r(cedure)1933 4258 y(These)27 b(n)n(umerical)f +(predicates)g(pro)n(vide)g(tests)h(for)f(the)h(exactness)1933 +4357 y(of)37 b(a)f(quan)n(tit)n(y)-7 b(.)63 b(F)-7 b(or)36 +b(an)n(y)g(Sc)n(heme)g(n)n(um)n(b)r(er,)i(precisely)e(one)g(of)1933 +4457 y(these)28 b(predicates)f(is)g(true.)1933 4674 y +Fq(\(=)43 b Fo(z)2103 4686 y Fr(1)2183 4674 y Fo(z)2222 +4686 y Fr(2)2303 4674 y Fo(z)2342 4686 y Fr(3)2422 4674 +y Fo(:)14 b(:)g(:)g Fq(\))1107 b Fy(pro)r(cedure)1933 +4774 y Fq(\(<)43 b Fo(x)2111 4786 y Fr(1)2192 4774 y +Fo(x)2239 4786 y Fr(2)2321 4774 y Fo(x)2368 4786 y Fr(3)2449 +4774 y Fo(:)14 b(:)g(:)g Fq(\))1080 b Fy(pro)r(cedure)1933 +4873 y Fq(\(>)43 b Fo(x)2111 4885 y Fr(1)2192 4873 y +Fo(x)2239 4885 y Fr(2)2321 4873 y Fo(x)2368 4885 y Fr(3)2449 +4873 y Fo(:)14 b(:)g(:)g Fq(\))1080 b Fy(pro)r(cedure)1933 +4973 y Fq(\(<=)43 b Fo(x)2155 4985 y Fr(1)2236 4973 y +Fo(x)2283 4985 y Fr(2)2364 4973 y Fo(x)2411 4985 y Fr(3)2492 +4973 y Fo(:)14 b(:)g(:)g Fq(\))1037 b Fy(pro)r(cedure)1933 +5073 y Fq(\(>=)43 b Fo(x)2155 5085 y Fr(1)2236 5073 y +Fo(x)2283 5085 y Fr(2)2364 5073 y Fo(x)2411 5085 y Fr(3)2492 +5073 y Fo(:)14 b(:)g(:)g Fq(\))1037 b Fy(pro)r(cedure)1933 +5205 y(These)25 b(pro)r(cedures)f(return)g Fq(#t)h Fy(if)g(their)g +(argumen)n(ts)f(are)g(\(resp)r(ec-)1933 5304 y(tiv)n(ely\):)34 +b(equal,)23 b(monotonically)e(increasing,)h(monotonically)e(de-)1933 +5404 y(creasing,)43 b(monotonically)c(nondecreasing,)k(or)c +(monotonically)1933 5504 y(nonincreasing.)p eop +%%Page: 22 22 +22 21 bop -300 -125 a Fy(22)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y(These)27 b(predicates)g(are)g(required)f +(to)i(b)r(e)g(transitiv)n(e.)-300 217 y Fj(Note:)82 b +Fl(The)29 b(traditional)h(implemen)n(tations)e(of)h(these)g(predicates) +h(in)-300 317 y(Lisp-lik)n(e)c(languages)h(are)f(not)g(transitiv)n(e.) +-300 452 y Fj(Note:)99 b Fl(While)34 b(it)f(is)h(not)f(an)g(error)h(to) +f(compare)g(inexact)g(n)n(um)n(b)r(ers)-300 552 y(using)26 +b(these)g(predicates,)h(the)f(results)g(ma)n(y)f(b)r(e)g(unreliable)i +(b)r(ecause)f(a)-300 652 y(small)f(inaccuracy)f(ma)n(y)g(a\013ect)g +(the)g(result;)i(this)e(is)h(esp)r(ecially)h(true)e(of)-300 +751 y Fm(=)i Fl(and)f Fm(zero?)p Fl(.)36 b(When)25 b(in)g(doubt,)h +(consult)f(a)h(n)n(umerical)g(analyst.)-300 981 y Fq(\(zero?)41 +b Fo(z)s Fq(\))1090 b Fy(library)26 b(pro)r(cedure)-300 +1081 y Fq(\(positive?)39 b Fo(x)q Fq(\))910 b Fy(library)26 +b(pro)r(cedure)-300 1180 y Fq(\(negative?)39 b Fo(x)q +Fq(\))910 b Fy(library)26 b(pro)r(cedure)-300 1280 y +Fq(\(odd?)42 b Fo(n)o Fq(\))1126 b Fy(library)26 b(pro)r(cedure)-300 +1380 y Fq(\(even?)41 b Fo(n)p Fq(\))1082 b Fy(library)26 +b(pro)r(cedure)-300 1515 y(These)j(n)n(umerical)e(predicates)h(test)i +(a)e(n)n(um)n(b)r(er)g(for)h(a)f(particular)-300 1615 +y(prop)r(ert)n(y)-7 b(,)27 b(returning)f Fq(#t)h Fy(or)g +Fq(#f)p Fy(.)36 b(See)28 b(note)f(ab)r(o)n(v)n(e.)-300 +1844 y Fq(\(max)42 b Fo(x)-35 1856 y Fr(1)46 1844 y Fo(x)93 +1856 y Fr(2)174 1844 y Fo(:)14 b(:)g(:)g Fq(\))852 b +Fy(library)26 b(pro)r(cedure)-300 1944 y Fq(\(min)42 +b Fo(x)-35 1956 y Fr(1)46 1944 y Fo(x)93 1956 y Fr(2)174 +1944 y Fo(:)14 b(:)g(:)g Fq(\))852 b Fy(library)26 b(pro)r(cedure)-300 +2079 y(These)18 b(pro)r(cedures)f(return)h(the)h(maxim)n(um)g(or)e +(minim)n(um)i(of)g(their)-300 2179 y(argumen)n(ts.)-143 +2320 y Fm(\(max)40 b(3)g(4\))745 b Fl(=)-13 b Fk(\))78 +b Fm(4)158 b(;)39 b(exact)-143 2411 y(\(max)h(3.9)g(4\))667 +b Fl(=)-13 b Fk(\))78 b Fm(4.0)i(;)39 b(inexact)-300 +2560 y Fj(Note:)77 b Fl(If)28 b(an)n(y)f(argumen)n(t)g(is)h(inexact,)h +(then)e(the)g(result)i(will)g(also)g(b)r(e)-300 2660 +y(inexact)e(\(unless)h(the)f(pro)r(cedure)h(can)f(pro)n(v)n(e)g(that)g +(the)g(inaccuracy)h(is)-300 2759 y(not)g(large)i(enough)f(to)g +(a\013ect)f(the)h(result,)h(whic)n(h)e(is)h(p)r(ossible)h(only)f(in) +-300 2859 y(un)n(usual)34 b(implemen)n(tations\).)61 +b(If)35 b Fm(min)g Fl(or)h Fm(max)f Fl(is)g(used)g(to)g(compare)-300 +2958 y(n)n(um)n(b)r(ers)f(of)j(mixed)e(exactness,)k(and)d(the)f(n)n +(umerical)h(v)l(alue)f(of)i(the)-300 3058 y(result)23 +b(cannot)h(b)r(e)e(represen)n(ted)h(as)h(an)f(inexact)g(n)n(um)n(b)r +(er)e(without)i(loss)-300 3158 y(of)34 b(accuracy)-6 +b(,)35 b(then)d(the)h(pro)r(cedure)g(ma)n(y)e(rep)r(ort)i(a)h +(violation)g(of)g(an)-300 3257 y(implemen)n(tation)24 +b(restriction.)-300 3487 y Fq(\(+)43 b Fo(z)-130 3499 +y Fr(1)-50 3487 y Fo(:)14 b(:)g(:)g Fq(\))1346 b Fy(pro)r(cedure)-300 +3587 y Fq(\(*)43 b Fo(z)-130 3599 y Fr(1)-50 3587 y Fo(:)14 +b(:)g(:)g Fq(\))1346 b Fy(pro)r(cedure)-300 3722 y(These)25 +b(pro)r(cedures)g(return)g(the)h(sum)f(or)g(pro)r(duct)g(of)h(their)f +(argu-)-300 3822 y(men)n(ts.)-143 3962 y Fm(\(+)40 b(3)f(4\))824 +b Fl(=)-13 b Fk(\))78 b Fm(7)-143 4054 y(\(+)40 b(3\))902 +b Fl(=)-13 b Fk(\))78 b Fm(3)-143 4145 y(\(+\))981 b +Fl(=)-13 b Fk(\))78 b Fm(0)-143 4236 y(\(*)40 b(4\))902 +b Fl(=)-13 b Fk(\))78 b Fm(4)-143 4328 y(\(*\))981 b +Fl(=)-13 b Fk(\))78 b Fm(1)-300 4571 y Fq(\(-)43 b Fo(z)-130 +4583 y Fr(1)-50 4571 y Fo(z)-11 4583 y Fr(2)26 4571 y +Fq(\))1381 b Fy(pro)r(cedure)-300 4671 y Fq(\(-)43 b +Fo(z)s Fq(\))1534 b Fy(pro)r(cedure)-300 4770 y Fq(\(-)43 +b Fo(z)-130 4782 y Fr(1)-50 4770 y Fo(z)-11 4782 y Fr(2)70 +4770 y Fo(:)14 b(:)g(:)f Fq(\))904 b Fy(optional)27 b(pro)r(cedure)-300 +4870 y Fq(\(/)43 b Fo(z)-130 4882 y Fr(1)-50 4870 y Fo(z)-11 +4882 y Fr(2)26 4870 y Fq(\))1381 b Fy(pro)r(cedure)-300 +4970 y Fq(\(/)43 b Fo(z)s Fq(\))1534 b Fy(pro)r(cedure)-300 +5069 y Fq(\(/)43 b Fo(z)-130 5081 y Fr(1)-50 5069 y Fo(z)-11 +5081 y Fr(2)70 5069 y Fo(:)14 b(:)g(:)f Fq(\))904 b Fy(optional)27 +b(pro)r(cedure)-300 5205 y(With)i(t)n(w)n(o)d(or)h(more)g(argumen)n +(ts,)f(these)i(pro)r(cedures)e(return)h(the)-300 5304 +y(di\013erence)21 b(or)f(quotien)n(t)h(of)g(their)f(argumen)n(ts,)h +(asso)r(ciating)f(to)g(the)-300 5404 y(left.)35 b(With)22 +b(one)f(argumen)n(t,)g(ho)n(w)n(ev)n(er,)f(they)h(return)g(the)g +(additiv)n(e)-300 5504 y(or)27 b(m)n(ultiplicativ)n(e)g(in)n(v)n(erse)f +(of)i(their)f(argumen)n(t.)2090 82 y Fm(\(-)40 b(3)f(4\))825 +b Fl(=)-13 b Fk(\))78 b Fm(-1)2090 174 y(\(-)40 b(3)f(4)h(5\))746 +b Fl(=)-13 b Fk(\))78 b Fm(-6)2090 265 y(\(-)40 b(3\))903 +b Fl(=)-13 b Fk(\))78 b Fm(-3)2090 356 y(\(/)40 b(3)f(4)h(5\))746 +b Fl(=)-13 b Fk(\))78 b Fm(3/20)2090 447 y(\(/)40 b(3\))903 +b Fl(=)-13 b Fk(\))78 b Fm(1/3)1933 763 y Fq(\(abs)42 +b Fw(x)10 b Fq(\))1170 b Fy(library)26 b(pro)r(cedure)1933 +904 y Fq(Abs)h Fy(returns)g(the)h(absolute)f(v)-5 b(alue)27 +b(of)h(its)f(argumen)n(t.)2090 1054 y Fm(\(abs)40 b(-7\))786 +b Fl(=)-13 b Fk(\))78 b Fm(7)1933 1440 y Fq(\(quotient)40 +b Fo(n)2419 1452 y Fr(1)2500 1440 y Fo(n)2550 1452 y +Fr(2)2587 1440 y Fq(\))1053 b Fy(pro)r(cedure)1933 1540 +y Fq(\(remainder)40 b Fo(n)2463 1552 y Fr(1)2543 1540 +y Fo(n)2593 1552 y Fr(2)2630 1540 y Fq(\))1010 b Fy(pro)r(cedure)1933 +1640 y Fq(\(modulo)41 b Fo(n)2332 1652 y Fr(1)2413 1640 +y Fo(n)2463 1652 y Fr(2)2500 1640 y Fq(\))1140 b Fy(pro)r(cedure)1933 +1781 y(These)19 b(pro)r(cedures)f(implemen)n(t)i(n)n(um)n(b)r +(er-theoretic)d(\(in)n(teger\))i(di-)1933 1872 y(vision.)36 +b Fo(n)2253 1884 y Fr(2)2315 1872 y Fy(should)25 b(b)r(e)h(non-zero.)35 +b(All)25 b(three)h(pro)r(cedures)e(return)1933 1963 y(in)n(tegers.)36 +b(If)28 b Fo(n)2406 1975 y Fr(1)2443 1963 y Fy(/)p Fo(n)2535 +1975 y Fr(2)2599 1963 y Fy(is)g(an)f(in)n(teger:)2247 +2113 y Fm(\(quotient)41 b Fh(n)2685 2121 y Fi(1)2760 +2113 y Fh(n)2806 2121 y Fi(2)2840 2113 y Fm(\))310 b +Fl(=)-13 b Fk(\))39 b Fh(n)3398 2121 y Fi(1)3432 2113 +y Fm(/)p Fh(n)3517 2121 y Fi(2)2247 2204 y Fm(\(remainder)j +Fh(n)2725 2212 y Fi(1)2799 2204 y Fh(n)2845 2212 y Fi(2)2880 +2204 y Fm(\))270 b Fl(=)-13 b Fk(\))39 b Fm(0)2247 2295 +y(\(modulo)i Fh(n)2607 2303 y Fi(1)2681 2295 y Fh(n)2727 +2303 y Fi(2)2762 2295 y Fm(\))388 b Fl(=)-13 b Fk(\))39 +b Fm(0)1933 2536 y Fy(If)28 b Fo(n)2066 2548 y Fr(1)2103 +2536 y Fy(/)p Fo(n)2195 2548 y Fr(2)2260 2536 y Fy(is)f(not)h(an)f(in)n +(teger:)2247 2685 y Fm(\(quotient)41 b Fh(n)2685 2693 +y Fi(1)2760 2685 y Fh(n)2806 2693 y Fi(2)2840 2685 y +Fm(\))310 b Fl(=)-13 b Fk(\))39 b Fh(n)3398 2693 y Fg(q)2247 +2777 y Fm(\(remainder)j Fh(n)2725 2785 y Fi(1)2799 2777 +y Fh(n)2845 2785 y Fi(2)2880 2777 y Fm(\))270 b Fl(=)-13 +b Fk(\))39 b Fh(n)3398 2785 y Fg(r)2247 2868 y Fm(\(modulo)i +Fh(n)2607 2876 y Fi(1)2681 2868 y Fh(n)2727 2876 y Fi(2)2762 +2868 y Fm(\))388 b Fl(=)-13 b Fk(\))39 b Fh(n)3398 2876 +y Fg(m)1933 3117 y Fy(where)31 b Fo(n)2227 3129 y Fn(q)2294 +3117 y Fy(is)g Fo(n)2431 3129 y Fr(1)2468 3117 y Fo(=n)2560 +3129 y Fr(2)2627 3117 y Fy(rounded)f(to)n(w)n(ards)f(zero,)i(0)d +Fo(<)g Fp(j)p Fo(n)3705 3129 y Fn(r)3741 3117 y Fp(j)h +Fo(<)f Fp(j)p Fo(n)3959 3129 y Fr(2)3996 3117 y Fp(j)p +Fy(,)1933 3217 y(0)23 b Fo(<)f Fp(j)p Fo(n)2158 3229 +y Fn(m)2221 3217 y Fp(j)i Fo(<)e Fp(j)p Fo(n)2428 3229 +y Fr(2)2465 3217 y Fp(j)p Fy(,)27 b Fo(n)2588 3229 y +Fn(r)2651 3217 y Fy(and)e Fo(n)2860 3229 y Fn(m)2949 +3217 y Fy(di\013er)h(from)g Fo(n)3407 3229 y Fr(1)3470 +3217 y Fy(b)n(y)g(a)g(m)n(ultiple)g(of)1933 3316 y Fo(n)1983 +3328 y Fr(2)2020 3316 y Fy(,)i Fo(n)2121 3328 y Fn(r)2186 +3316 y Fy(has)f(the)h(same)f(sign)h(as)f Fo(n)3009 3328 +y Fr(1)3046 3316 y Fy(,)h(and)f Fo(n)3308 3328 y Fn(m)3399 +3316 y Fy(has)g(the)h(same)g(sign)1933 3416 y(as)f Fo(n)2085 +3428 y Fr(2)2122 3416 y Fy(.)1933 3557 y(F)-7 b(rom)23 +b(this)g(w)n(e)f(can)g(conclude)h(that)g(for)f(in)n(tegers)f +Fo(n)3554 3569 y Fr(1)3614 3557 y Fy(and)i Fo(n)3821 +3569 y Fr(2)3881 3557 y Fy(with)1933 3648 y Fo(n)1983 +3660 y Fr(2)2048 3648 y Fy(not)28 b(equal)f(to)g(0,)2286 +3798 y Fm(\(=)40 b Fh(n)2450 3806 y Fi(1)2524 3798 y +Fm(\(+)g(\(*)g Fh(n)2806 3806 y Fi(2)2880 3798 y Fm(\(quotient)h +Fh(n)3318 3806 y Fi(1)3392 3798 y Fh(n)3438 3806 y Fi(2)3473 +3798 y Fm(\)\))2522 3889 y(\(remainder)g Fh(n)2999 3897 +y Fi(1)3073 3889 y Fh(n)3119 3897 y Fi(2)3154 3889 y +Fm(\)\)\))3189 3980 y Fl(=)-13 b Fk(\))78 b Fm(#t)1933 +4138 y Fy(pro)n(vided)25 b(all)g(n)n(um)n(b)r(ers)g(in)n(v)n(olv)n(ed)f +(in)i(that)g(computation)f(are)g(ex-)1933 4238 y(act.)2090 +4408 y Fm(\(modulo)41 b(13)f(4\))589 b Fl(=)-13 b Fk(\))78 +b Fm(1)2090 4499 y(\(remainder)42 b(13)d(4\))472 b Fl(=)-13 +b Fk(\))78 b Fm(1)2090 4682 y(\(modulo)41 b(-13)f(4\))550 +b Fl(=)-13 b Fk(\))78 b Fm(3)2090 4773 y(\(remainder)42 +b(-13)e(4\))432 b Fl(=)-13 b Fk(\))78 b Fm(-1)2090 4956 +y(\(modulo)41 b(13)f(-4\))550 b Fl(=)-13 b Fk(\))78 b +Fm(-3)2090 5047 y(\(remainder)42 b(13)d(-4\))433 b Fl(=)-13 +b Fk(\))78 b Fm(1)2090 5230 y(\(modulo)41 b(-13)f(-4\))511 +b Fl(=)-13 b Fk(\))78 b Fm(-1)2090 5321 y(\(remainder)42 +b(-13)e(-4\))393 b Fl(=)-13 b Fk(\))78 b Fm(-1)2090 5504 +y(\(remainder)42 b(-13)e(-4.0\))315 b Fl(=)-13 b Fk(\))78 +b Fm(-1.0)h(;)40 b(inexact)p eop +%%Page: 23 23 +23 22 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(23)-300 82 y Fq(\(gcd)42 b Fo(n)-32 94 y Fr(1)49 82 +y Fo(:)14 b(:)g(:)f Fq(\))978 b Fy(library)26 b(pro)r(cedure)-300 +182 y Fq(\(lcm)42 b Fo(n)-32 194 y Fr(1)49 182 y Fo(:)14 +b(:)g(:)f Fq(\))978 b Fy(library)26 b(pro)r(cedure)-300 +321 y(These)36 b(pro)r(cedures)f(return)h(the)h(greatest)e(common)h +(divisor)g(or)-300 421 y(least)e(common)g(m)n(ultiple)h(of)g(their)f +(argumen)n(ts.)57 b(The)35 b(result)f(is)-300 520 y(alw)n(a)n(ys)26 +b(non-negativ)n(e.)-143 667 y Fm(\(gcd)40 b(32)g(-36\))628 +b Fl(=)-13 b Fk(\))78 b Fm(4)-143 758 y(\(gcd\))903 b +Fl(=)-13 b Fk(\))78 b Fm(0)-143 850 y(\(lcm)40 b(32)g(-36\))628 +b Fl(=)-13 b Fk(\))78 b Fm(288)-143 941 y(\(lcm)40 b(32.0)g(-36\))550 +b Fl(=)-13 b Fk(\))78 b Fm(288.0)i(;)40 b(inexact)-143 +1032 y(\(lcm\))903 b Fl(=)-13 b Fk(\))78 b Fm(1)-300 +1293 y Fq(\(numerator)39 b Fo(q)s Fq(\))1188 b Fy(pro)r(cedure)-300 +1393 y Fq(\(denominator)39 b Fo(q)s Fq(\))1100 b Fy(pro)r(cedure)-300 +1524 y(These)27 b(pro)r(cedures)e(return)i(the)g(n)n(umerator)f(or)g +(denominator)g(of)-300 1615 y(their)j(argumen)n(t;)f(the)h(result)f(is) +h(computed)g(as)f(if)h(the)g(argumen)n(t)-300 1707 y(w)n(as)24 +b(represen)n(ted)h(as)f(a)h(fraction)g(in)h(lo)n(w)n(est)e(terms.)36 +b(The)25 b(denom-)-300 1798 y(inator)j(is)h(alw)n(a)n(ys)e(p)r(ositiv)n +(e.)40 b(The)29 b(denominator)f(of)h(0)g(is)f(de\014ned)-300 +1889 y(to)f(b)r(e)h(1.)-143 2020 y Fm(\(numerator)41 +b(\(/)f(6)g(4\)\))353 b Fl(=)-13 b Fk(\))78 b Fm(3)-143 +2112 y(\(denominator)42 b(\(/)e(6)f(4\)\))275 b Fl(=)-13 +b Fk(\))78 b Fm(2)-143 2203 y(\(denominator)-65 2294 +y(\(exact->inexact)43 b(\(/)d(6)f(4\)\)\))h Fl(=)-13 +b Fk(\))39 b Fm(2.0)-300 2539 y Fq(\(floor)i Fw(x)10 +b Fq(\))1353 b Fy(pro)r(cedure)-300 2639 y Fq(\(ceiling)40 +b Fw(x)10 b Fq(\))1266 b Fy(pro)r(cedure)-300 2739 y +Fq(\(truncate)40 b Fw(x)10 b Fq(\))1222 b Fy(pro)r(cedure)-300 +2838 y Fq(\(round)41 b Fw(x)10 b Fq(\))1353 b Fy(pro)r(cedure)-300 +3077 y(These)53 b(pro)r(cedures)g(return)g(in)n(tegers.)114 +b Fq(Floor)52 b Fy(returns)g(the)-300 3177 y(largest)41 +b(in)n(teger)g(not)h(larger)f(than)h Fo(x)q Fy(.)80 b +Fq(Ceiling)40 b Fy(returns)h(the)-300 3277 y(smallest)27 +b(in)n(teger)g(not)h(smaller)e(than)i Fo(x)q Fy(.)37 +b Fq(Truncate)24 b Fy(returns)j(the)-300 3376 y(in)n(teger)d(closest)g +(to)h Fo(x)g Fy(whose)g(absolute)f(v)-5 b(alue)25 b(is)g(not)g(larger)e +(than)-300 3476 y(the)39 b(absolute)e(v)-5 b(alue)39 +b(of)f Fo(x)p Fy(.)70 b Fq(Round)36 b Fy(returns)i(the)g(closest)g(in)n +(te-)-300 3575 y(ger)27 b(to)g Fo(x)p Fy(,)h(rounding)f(to)g(ev)n(en)g +(when)h Fo(x)g Fy(is)g(halfw)n(a)n(y)e(b)r(et)n(w)n(een)i(t)n(w)n(o) +-300 3675 y(in)n(tegers.)-300 3814 y Fj(R)l(ationale:)77 +b Fm(Round)29 b Fl(rounds)f(to)g(ev)n(en)f(for)i(consistency)f(with)g +(the)f(de-)-300 3914 y(fault)e(rounding)g(mo)r(de)f(sp)r(eci\014ed)h(b) +n(y)f(the)g(IEEE)i(\015oating)f(p)r(oin)n(t)g(stan-)-300 +4014 y(dard.)-300 4153 y Fj(Note:)88 b Fl(If)30 b(the)g(argumen)n(t)g +(to)g(one)h(of)g(these)g(pro)r(cedures)f(is)h(inexact,)-300 +4253 y(then)23 b(the)g(result)g(will)i(also)g(b)r(e)e(inexact.)34 +b(If)23 b(an)h(exact)f(v)l(alue)g(is)h(needed,)-300 4352 +y(the)f(result)h(should)g(b)r(e)f(passed)h(to)g(the)f +Fm(inexact->exact)k Fl(pro)r(cedure.)-143 4499 y Fm(\(floor)41 +b(-4.3\))628 b Fl(=)-13 b Fk(\))78 b Fm(-5.0)-143 4590 +y(\(ceiling)41 b(-4.3\))550 b Fl(=)-13 b Fk(\))78 b Fm(-4.0)-143 +4682 y(\(truncate)41 b(-4.3\))511 b Fl(=)-13 b Fk(\))78 +b Fm(-4.0)-143 4773 y(\(round)41 b(-4.3\))628 b Fl(=)-13 +b Fk(\))78 b Fm(-4.0)-143 4956 y(\(floor)41 b(3.5\))667 +b Fl(=)-13 b Fk(\))78 b Fm(3.0)-143 5047 y(\(ceiling)41 +b(3.5\))589 b Fl(=)-13 b Fk(\))78 b Fm(4.0)-143 5138 +y(\(truncate)41 b(3.5\))550 b Fl(=)-13 b Fk(\))78 b Fm(3.0)-143 +5230 y(\(round)41 b(3.5\))667 b Fl(=)-13 b Fk(\))78 b +Fm(4.0)i(;)39 b(inexact)-143 5412 y(\(round)i(7/2\))667 +b Fl(=)-13 b Fk(\))78 b Fm(4)158 b(;)39 b(exact)-143 +5504 y(\(round)i(7\))745 b Fl(=)-13 b Fk(\))78 b Fm(7)1933 +82 y Fq(\(rationalize)39 b Fw(x)k(y)7 b Fq(\))741 b Fy(library)26 +b(pro)r(cedure)1933 333 y Fq(Rationalize)i Fy(returns)j(the)i +Fw(simplest)g Fy(rational)d(n)n(um)n(b)r(er)i(di\013er-)1933 +433 y(ing)j(from)g Fo(x)g Fy(b)n(y)g(no)g(more)f(than)h +Fo(y)s Fy(.)59 b(A)35 b(rational)f(n)n(um)n(b)r(er)g +Fo(r)3913 445 y Fr(1)3986 433 y Fy(is)1933 533 y Fw(simpler)48 +b Fy(than)23 b(another)f(rational)g(n)n(um)n(b)r(er)h +Fo(r)3373 545 y Fr(2)3433 533 y Fy(if)h Fo(r)3542 545 +y Fr(1)3603 533 y Fy(=)e Fo(p)3732 545 y Fr(1)3769 533 +y Fo(=q)3848 545 y Fr(1)3908 533 y Fy(and)1933 632 y +Fo(r)1970 644 y Fr(2)2031 632 y Fy(=)h Fo(p)2161 644 +y Fr(2)2198 632 y Fo(=q)2277 644 y Fr(2)2337 632 y Fy(\(in)h(lo)n(w)n +(est)f(terms\))h(and)f Fp(j)p Fo(p)3190 644 y Fr(1)3227 +632 y Fp(j)g(\024)g(j)p Fo(p)3426 644 y Fr(2)3463 632 +y Fp(j)h Fy(and)f Fp(j)p Fo(q)3727 644 y Fr(1)3765 632 +y Fp(j)g(\024)g(j)p Fo(q)3959 644 y Fr(2)3996 632 y Fp(j)p +Fy(.)1933 732 y(Th)n(us)32 b(3)p Fo(=)p Fy(5)f(is)h(simpler)g(than)g(4) +p Fo(=)p Fy(7.)49 b(Although)32 b(not)g(all)g(rationals)1933 +832 y(are)22 b(comparable)f(in)j(this)f(ordering)e(\(consider)h(2)p +Fo(=)p Fy(7)f(and)i(3)p Fo(=)p Fy(5\))f(an)n(y)1933 931 +y(in)n(terv)-5 b(al)21 b(con)n(tains)g(a)g(rational)f(n)n(um)n(b)r(er)h +(that)h(is)g(simpler)f(than)h(ev-)1933 1031 y(ery)i(other)g(rational)f +(n)n(um)n(b)r(er)h(in)h(that)f(in)n(terv)-5 b(al)24 b(\(the)h(simpler)g +(2)p Fo(=)p Fy(5)1933 1130 y(lies)31 b(b)r(et)n(w)n(een)g(2)p +Fo(=)p Fy(7)e(and)i(3)p Fo(=)p Fy(5\).)46 b(Note)31 b(that)g(0)d(=)g(0) +p Fo(=)p Fy(1)h(is)i(the)g(sim-)1933 1230 y(plest)d(rational)e(of)i +(all.)2090 1406 y Fm(\(rationalize)2169 1497 y(\(inexact->exact)42 +b(.3\))e(1/10\))h Fl(=)-13 b Fk(\))39 b Fm(1/3)157 b(;)40 +b(exact)2090 1588 y(\(rationalize)i(.3)e(1/10\))276 b +Fl(=)-13 b Fk(\))39 b Fm(#i1/3)79 b(;)40 b(inexact)1933 +1916 y Fq(\(exp)i Fo(z)s Fq(\))1447 b Fy(pro)r(cedure)1933 +2016 y Fq(\(log)42 b Fo(z)s Fq(\))1447 b Fy(pro)r(cedure)1933 +2116 y Fq(\(sin)42 b Fo(z)s Fq(\))1447 b Fy(pro)r(cedure)1933 +2215 y Fq(\(cos)42 b Fo(z)s Fq(\))1447 b Fy(pro)r(cedure)1933 +2315 y Fq(\(tan)42 b Fo(z)s Fq(\))1447 b Fy(pro)r(cedure)1933 +2415 y Fq(\(asin)42 b Fo(z)s Fq(\))1403 b Fy(pro)r(cedure)1933 +2514 y Fq(\(acos)42 b Fo(z)s Fq(\))1403 b Fy(pro)r(cedure)1933 +2614 y Fq(\(atan)42 b Fo(z)s Fq(\))1403 b Fy(pro)r(cedure)1933 +2713 y Fq(\(atan)42 b Fo(y)k(x)q Fq(\))1310 b Fy(pro)r(cedure)1933 +2865 y(These)38 b(pro)r(cedures)f(are)g(part)g(of)h(ev)n(ery)f +(implemen)n(tation)h(that)1933 2965 y(supp)r(orts)k(general)e(real)h(n) +n(um)n(b)r(ers;)48 b(they)42 b(compute)g(the)g(usual)1933 +3064 y(transcenden)n(tal)35 b(functions.)62 b Fq(Log)35 +b Fy(computes)h(the)g(natural)f(log-)1933 3164 y(arithm)41 +b(of)h Fo(z)j Fy(\(not)c(the)h(base)f(ten)h(logarithm\).)77 +b Fq(Asin)p Fy(,)44 b Fq(acos)p Fy(,)1933 3263 y(and)30 +b Fq(atan)f Fy(compute)h(arcsine)f(\(sin)3056 3229 y +Ff(\000)p Fr(1)3145 3263 y Fy(\),)i(arccosine)d(\(cos)3733 +3233 y Ff(\000)p Fr(1)3822 3263 y Fy(\),)j(and)1933 3363 +y(arctangen)n(t)g(\(tan)2503 3333 y Ff(\000)p Fr(1)2592 +3363 y Fy(\),)i(resp)r(ectiv)n(ely)-7 b(.)49 b(The)32 +b(t)n(w)n(o-argumen)n(t)d(v)-5 b(ari-)1933 3463 y(an)n(t)24 +b(of)g Fq(atan)f Fy(computes)h Fq(\(angle)41 b(\(make-rectangul)o(ar)c +Fo(x)44 b(y)s Fq(\)\))1933 3562 y Fy(\(see)37 b(b)r(elo)n(w\),)h(ev)n +(en)e(in)h(implemen)n(tations)f(that)h(don't)f(supp)r(ort)1933 +3662 y(general)26 b(complex)i(n)n(um)n(b)r(ers.)1933 +3814 y(In)38 b(general,)h(the)f(mathematical)f(functions)h(log,)h +(arcsine,)g(arc-)1933 3913 y(cosine,)30 b(and)g(arctangen)n(t)f(are)g +(m)n(ultiply)h(de\014ned.)45 b(The)30 b(v)-5 b(alue)30 +b(of)1933 4013 y(log)14 b Fo(z)32 b Fy(is)d(de\014ned)g(to)f(b)r(e)h +(the)g(one)f(whose)g(imaginary)f(part)h(lies)h(in)1933 +4112 y(the)d(range)e(from)h Fp(\000)p Fo(\031)k Fy(\(exclusiv)n(e\))c +(to)g Fo(\031)k Fy(\(inclusiv)n(e\).)37 b(log)14 b(0)25 +b(is)g(un-)1933 4212 y(de\014ned.)52 b(With)33 b(log)g(de\014ned)g +(this)f(w)n(a)n(y)-7 b(,)33 b(the)f(v)-5 b(alues)32 b(of)h(sin)3874 +4177 y Ff(\000)p Fr(1)3977 4212 y Fo(z)t Fy(,)1933 4312 +y(cos)2044 4282 y Ff(\000)p Fr(1)2147 4312 y Fo(z)t Fy(,)45 +b(and)c(tan)2553 4281 y Ff(\000)p Fr(1)2656 4312 y Fo(z)j +Fy(are)c(according)g(to)h(the)h(follo)n(wing)e(for-)1933 +4411 y(m)n(ul\032:)2430 4527 y(sin)2532 4492 y Ff(\000)p +Fr(1)2635 4527 y Fo(z)27 b Fy(=)22 b Fp(\000)p Fo(i)14 +b Fy(log\()p Fo(iz)21 b Fy(+)3207 4445 y Fe(p)p 3290 +4445 223 4 v 82 x Fy(1)d Fp(\000)g Fo(z)3476 4503 y Fr(2)3513 +4527 y Fy(\))2563 4707 y(cos)2674 4673 y Ff(\000)p Fr(1)2777 +4707 y Fo(z)27 b Fy(=)22 b Fo(\031)s(=)p Fy(2)c Fp(\000)g +Fy(sin)3267 4672 y Ff(\000)p Fr(1)3370 4707 y Fo(z)2243 +4888 y Fy(tan)2363 4854 y Ff(\000)p Fr(1)2466 4888 y +Fo(z)26 b Fy(=)d(\(log\(1)c(+)f Fo(iz)t Fy(\))f Fp(\000)h +Fy(log\(1)h Fp(\000)f Fo(iz)t Fy(\)\))p Fo(=)p Fy(\(2)p +Fo(i)p Fy(\))1933 5105 y(The)67 b(ab)r(o)n(v)n(e)f(sp)r(eci\014cation)h +(follo)n(ws)f([27)o(],)77 b(whic)n(h)67 b(in)g(turn)1933 +5205 y(cites)21 b([19)o(];)i(refer)c(to)h(these)h(sources)d(for)i(more) +g(detailed)g(discussion)1933 5304 y(of)31 b(branc)n(h)f(cuts,)h(b)r +(oundary)f(conditions,)h(and)g(implemen)n(tation)1933 +5404 y(of)37 b(these)f(functions.)63 b(When)37 b(it)g(is)f(p)r(ossible) +g(these)g(pro)r(cedures)1933 5504 y(pro)r(duce)27 b(a)h(real)e(result)i +(from)f(a)g(real)g(argumen)n(t.)p eop +%%Page: 24 24 +24 23 bop -300 -125 a Fy(24)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fq(\(sqrt)42 b Fo(z)s Fq(\))1403 +b Fy(pro)r(cedure)-300 213 y(Returns)22 b(the)g(principal)f(square)g +(ro)r(ot)g(of)g Fo(z)t Fy(.)35 b(The)22 b(result)f(will)h(ha)n(v)n(e) +-300 313 y(either)h(p)r(ositiv)n(e)f(real)h(part,)g(or)f(zero)g(real)g +(part)h(and)g(non-negativ)n(e)-300 412 y(imaginary)j(part.)-300 +625 y Fq(\(expt)42 b Fo(z)1 637 y Fr(1)81 625 y Fo(z)120 +637 y Fr(2)157 625 y Fq(\))1250 b Fy(pro)r(cedure)-300 +756 y(Returns)27 b Fo(z)54 768 y Fr(1)119 756 y Fy(raised)g(to)g(the)h +(p)r(o)n(w)n(er)e Fo(z)885 768 y Fr(2)922 756 y Fy(.)37 +b(F)-7 b(or)27 b Fo(z)1170 768 y Fr(1)1230 756 y Fp(6)p +Fy(=)c(0)487 914 y Fo(z)526 926 y Fr(1)563 879 y Fn(z)595 +887 y Fd(2)654 914 y Fy(=)g Fo(e)781 879 y Fn(z)813 887 +y Fd(2)856 879 y Fr(log)12 b Fn(z)985 887 y Fd(1)-300 +1071 y Fy(0)-258 1040 y Fn(z)-193 1071 y Fy(is)28 b(1)f(if)h +Fo(z)f Fy(=)22 b(0)27 b(and)h(0)f(otherwise.)-300 1284 +y Fq(\(make-rectangula)o(r)38 b Fo(x)532 1296 y Fr(1)613 +1284 y Fo(x)660 1296 y Fr(2)698 1284 y Fq(\))709 b Fy(pro)r(cedure)-300 +1383 y Fq(\(make-polar)39 b Fo(x)270 1395 y Fr(3)351 +1383 y Fo(x)398 1395 y Fr(4)436 1383 y Fq(\))971 b Fy(pro)r(cedure)-300 +1483 y Fq(\(real-part)39 b Fo(z)t Fq(\))1185 b Fy(pro)r(cedure)-300 +1583 y Fq(\(imag-part)39 b Fo(z)t Fq(\))1185 b Fy(pro)r(cedure)-300 +1682 y Fq(\(magnitude)39 b Fo(z)t Fq(\))1185 b Fy(pro)r(cedure)-300 +1782 y Fq(\(angle)41 b Fo(z)s Fq(\))1360 b Fy(pro)r(cedure)-300 +1913 y(These)38 b(pro)r(cedures)e(are)h(part)h(of)g(ev)n(ery)e +(implemen)n(tation)j(that)-300 2012 y(supp)r(orts)d(general)f(complex)i +(n)n(um)n(b)r(ers.)63 b(Supp)r(ose)37 b Fo(x)1455 2024 +y Fr(1)1492 2012 y Fy(,)i Fo(x)1601 2024 y Fr(2)1639 +2012 y Fy(,)g Fo(x)1748 2024 y Fr(3)1786 2012 y Fy(,)-300 +2112 y(and)30 b Fo(x)-89 2124 y Fr(4)-21 2112 y Fy(are)f(real)g(n)n(um) +n(b)r(ers)h(and)g Fo(z)k Fy(is)c(a)f(complex)h(n)n(um)n(b)r(er)g(suc)n +(h)-300 2212 y(that)322 2311 y Fo(z)d Fy(=)22 b Fo(x)522 +2323 y Fr(1)579 2311 y Fy(+)c Fo(x)709 2323 y Fr(2)746 +2311 y Fo(i)23 b Fy(=)g Fo(x)933 2323 y Fr(3)989 2311 +y Fp(\001)18 b Fo(e)1069 2277 y(i)o(x)1144 2289 y Fr(4)-300 +2437 y Fy(Then)-143 2560 y Fm(\(make-rectangular)43 b +Fh(x)607 2568 y Fi(1)680 2560 y Fh(x)724 2568 y Fi(2)758 +2560 y Fm(\))158 b Fl(=)-13 b Fk(\))39 b Fh(z)-143 2651 +y Fm(\(make-polar)j Fh(x)372 2659 y Fi(3)445 2651 y Fh(x)489 +2659 y Fi(4)523 2651 y Fm(\))393 b Fl(=)-13 b Fk(\))39 +b Fh(z)-143 2742 y Fm(\(real-part)i Fh(z)s Fm(\))589 +b Fl(=)-13 b Fk(\))39 b Fh(x)1162 2750 y Fi(1)-143 2834 +y Fm(\(imag-part)i Fh(z)s Fm(\))589 b Fl(=)-13 b Fk(\))39 +b Fh(x)1162 2842 y Fi(2)-143 2925 y Fm(\(magnitude)i +Fh(z)s Fm(\))589 b Fl(=)-13 b Fk(\))39 b(j)p Fh(x)1183 +2933 y Fi(3)1218 2925 y Fk(j)-143 3016 y Fm(\(angle)i +Fh(z)r Fm(\))746 b Fl(=)-13 b Fk(\))39 b Fh(x)1162 3025 +y Fg(ang)r(le)-300 3239 y Fy(where)31 b Fp(\000)p Fo(\031)h(<)d(x)229 +3251 y Fn(ang)r(le)427 3239 y Fp(\024)f Fo(\031)35 b +Fy(with)d Fo(x)842 3251 y Fn(ang)r(le)1040 3239 y Fy(=)d +Fo(x)1181 3251 y Fr(4)1239 3239 y Fy(+)21 b(2)p Fo(\031)s(n)31 +b Fy(for)f(some)-300 3338 y(in)n(teger)d Fo(n)p Fy(.)-300 +3469 y Fj(R)l(ationale:)123 b Fm(Magnitude)41 b Fl(is)f(the)e(same)h +(as)h Fm(abs)g Fl(for)g(a)g(real)g(argu-)-300 3569 y(men)n(t,)23 +b(but)g Fm(abs)i Fl(m)n(ust)e(b)r(e)g(presen)n(t)h(in)g(all)h(implemen) +n(tations,)f(whereas)-300 3668 y Fm(magnitude)32 b Fl(need)e(only)f(b)r +(e)h(presen)n(t)g(in)g(implemen)n(tations)f(that)h(sup-)-300 +3768 y(p)r(ort)c(general)g(complex)f(n)n(um)n(b)r(ers.)-300 +3981 y Fq(\(exact->inexact)37 b Fo(z)t Fq(\))967 b Fy(pro)r(cedure)-300 +4081 y Fq(\(inexact->exact)37 b Fo(z)t Fq(\))967 b Fy(pro)r(cedure)-300 +4212 y Fq(Exact->inexact)35 b Fy(returns)40 b(an)g(inexact)g(represen)n +(tation)f(of)h Fo(z)t Fy(.)-300 4311 y(The)31 b(v)-5 +b(alue)30 b(returned)g(is)h(the)g(inexact)f(n)n(um)n(b)r(er)g(that)h +(is)f(n)n(umeri-)-300 4411 y(cally)24 b(closest)h(to)g(the)g(argumen)n +(t.)35 b(If)25 b(an)g(exact)g(argumen)n(t)f(has)g(no)-300 +4511 y(reasonably)i(close)i(inexact)g(equiv)-5 b(alen)n(t,)28 +b(then)h(a)f(violation)g(of)g(an)-300 4610 y(implemen)n(tation)g +(restriction)e(ma)n(y)h(b)r(e)h(rep)r(orted.)-300 4741 +y Fq(Inexact->exact)17 b Fy(returns)k(an)h(exact)g(represen)n(tation)f +(of)h Fo(z)t Fy(.)35 b(The)-300 4841 y(v)-5 b(alue)20 +b(returned)g(is)h(the)g(exact)f(n)n(um)n(b)r(er)g(that)h(is)f(n)n +(umerically)g(clos-)-300 4940 y(est)34 b(to)f(the)h(argumen)n(t.)53 +b(If)34 b(an)f(inexact)h(argumen)n(t)e(has)h(no)g(rea-)-300 +5040 y(sonably)e(close)g(exact)g(equiv)-5 b(alen)n(t,)33 +b(then)f(a)g(violation)f(of)g(an)h(im-)-300 5140 y(plemen)n(tation)27 +b(restriction)g(ma)n(y)g(b)r(e)h(rep)r(orted.)-300 5271 +y(These)e(pro)r(cedures)g(implemen)n(t)h(the)g(natural)f(one-to-one)f +(corre-)-300 5370 y(sp)r(ondence)k(b)r(et)n(w)n(een)f(exact)g(and)h +(inexact)f(in)n(tegers)g(throughout)-300 5470 y(an)f(implemen)n +(tation-dep)r(enden)n(t)h(range.)36 b(See)27 b(section)h(6.2.3.)1933 +82 y Fv(6.2.6.)46 b(Numerical)30 b(input)i(and)g(output)1933 +368 y Fq(\(number->string)38 b Fw(z)10 b Fq(\))965 b +Fy(pro)r(cedure)1933 468 y Fq(\(number->string)38 b Fw(z)43 +b(r)l(adix)10 b Fq(\))743 b Fy(pro)r(cedure)1933 600 +y Fo(R)q(adix)31 b Fy(m)n(ust)g(b)r(e)g(an)g(exact)f(in)n(teger,)h +(either)g(2,)g(8,)h(10,)f(or)f(16.)46 b(If)1933 691 y(omitted,)40 +b Fo(r)r(adix)e Fy(defaults)f(to)f(10.)64 b(The)37 b(pro)r(cedure)e +Fq(number->)1933 782 y(string)22 b Fy(tak)n(es)h(a)h(n)n(um)n(b)r(er)g +(and)g(a)g(radix)f(and)h(returns)g(as)f(a)h(string)1933 +874 y(an)d(external)g(represen)n(tation)f(of)h(the)h(giv)n(en)e(n)n(um) +n(b)r(er)i(in)f(the)h(giv)n(en)1933 965 y(radix)27 b(suc)n(h)g(that) +2090 1097 y Fm(\(let)40 b(\(\(number)h Fh(number)r Fm(\))2326 +1188 y(\(radix)f Fh(r)r(adix)o Fm(\)\))2169 1279 y(\(eqv?)g(number)2404 +1371 y(\(string->number)j(\(number->string)f(number)3659 +1462 y(radix\))3032 1553 y(radix\)\)\))1933 1785 y Fy(is)33 +b(true.)52 b(It)33 b(is)f(an)g(error)f(if)i(no)g(p)r(ossible)f(result)g +(mak)n(es)g(this)h(ex-)1933 1884 y(pression)27 b(true.)1933 +2025 y(If)35 b Fo(z)i Fy(is)d(inexact,)h(the)g(radix)e(is)h(10,)h(and)f +(the)g(ab)r(o)n(v)n(e)f(expression)1933 2124 y(can)c(b)r(e)h +(satis\014ed)f(b)n(y)g(a)g(result)g(that)g(con)n(tains)g(a)g(decimal)g +(p)r(oin)n(t,)1933 2224 y(then)k(the)f(result)g(con)n(tains)f(a)h +(decimal)f(p)r(oin)n(t)i(and)e(is)h(expressed)1933 2323 +y(using)21 b(the)h(minim)n(um)g(n)n(um)n(b)r(er)e(of)i(digits)f +(\(exclusiv)n(e)f(of)h(exp)r(onen)n(t)1933 2423 y(and)32 +b(trailing)e(zero)r(es\))h(needed)h(to)f(mak)n(e)g(the)g(ab)r(o)n(v)n +(e)g(expression)1933 2523 y(true)22 b([3,)g(5)o(];)i(otherwise)d(the)i +(format)e(of)h(the)g(result)g(is)g(unsp)r(eci\014ed.)1933 +2663 y(The)j(result)g(returned)g(b)n(y)f Fq(number->string)19 +b Fy(nev)n(er)24 b(con)n(tains)g(an)1933 2763 y(explicit)k(radix)f +(pre\014x.)1933 2903 y Fj(Note:)74 b Fl(The)27 b(error)g(case)h(can)f +(o)r(ccur)g(only)f(when)h Fh(z)j Fl(is)d(not)g(a)g(complex)1933 +3002 y(n)n(um)n(b)r(er)36 b(or)i(is)h(a)f(complex)f(n)n(um)n(b)r(er)e +(with)j(a)h(non-rational)f(real)h(or)1933 3102 y(imaginary)26 +b(part.)1933 3242 y Fj(R)l(ationale:)62 b Fl(If)19 b +Fh(z)j Fl(is)d(an)g(inexact)g(n)n(um)n(b)r(er)e(represen)n(ted)i(using) +g(\015on)n(ums,)1933 3342 y(and)j(the)f(radix)h(is)g(10,)h(then)e(the)h +(ab)r(o)n(v)n(e)f(expression)i(is)f(normally)f(satis-)1933 +3441 y(\014ed)e(b)n(y)f(a)i(result)f(con)n(taining)h(a)g(decimal)f(p)r +(oin)n(t.)32 b(The)19 b(unsp)r(eci\014ed)g(case)1933 +3541 y(allo)n(ws)28 b(for)e(in\014nities,)h(NaNs,)e(and)h(non-\015on)n +(um)d(represen)n(tations.)1933 3789 y Fq(\(string->number)38 +b Fw(string)7 b Fq(\))795 b Fy(pro)r(cedure)1933 3889 +y Fq(\(string->number)38 b Fw(string)43 b(r)l(adix)10 +b Fq(\))570 b Fy(pro)r(cedure)1933 4029 y(Returns)26 +b(a)g(n)n(um)n(b)r(er)g(of)g(the)h(maximally)e(precise)h(represen)n +(tation)1933 4128 y(expressed)35 b(b)n(y)h(the)g(giv)n(en)f +Fo(str)r(ing)s Fy(.)62 b Fo(R)q(adix)36 b Fy(m)n(ust)g(b)r(e)g(an)g +(exact)1933 4228 y(in)n(teger,)23 b(either)f(2,)h(8,)g(10,)f(or)f(16.) +34 b(If)23 b(supplied,)h Fo(r)r(adix)f Fy(is)f(a)g(default)1933 +4328 y(radix)i(that)h(ma)n(y)f(b)r(e)i(o)n(v)n(erridden)c(b)n(y)j(an)f +(explicit)i(radix)e(pre\014x)g(in)1933 4427 y Fo(str)r(ing)35 +b Fy(\(e.g.)51 b Fq("#o177")p Fy(\).)d(If)32 b Fo(r)r(adix)h +Fy(is)f(not)g(supplied,)i(then)f(the)1933 4527 y(default)j(radix)e(is)i +(10.)59 b(If)35 b Fo(str)r(ing)k Fy(is)c(not)g(a)g(syn)n(tactically)f +(v)-5 b(alid)1933 4627 y(notation)27 b(for)g(a)h(n)n(um)n(b)r(er,)f +(then)h Fq(string->number)22 b Fy(returns)27 b Fq(#f)p +Fy(.)2090 4774 y Fm(\(string->number)43 b("100"\))237 +b Fl(=)-13 b Fk(\))78 b Fm(100)2090 4866 y(\(string->number)43 +b("100")d(16\))119 b Fl(=)-13 b Fk(\))78 b Fm(256)2090 +4957 y(\(string->number)43 b("1e2"\))237 b Fl(=)-13 b +Fk(\))78 b Fm(100.0)2090 5048 y(\(string->number)43 b("15##"\))198 +b Fl(=)-13 b Fk(\))78 b Fm(1500.0)1933 5205 y Fj(Note:)95 +b Fl(The)33 b(domain)f(of)h Fm(string->number)i Fl(ma)n(y)c(b)r(e)h +(restricted)h(b)n(y)1933 5304 y(implemen)n(tations)22 +b(in)h(the)f(follo)n(wing)j(w)n(a)n(ys.)34 b Fm(String->number)26 +b Fl(is)d(p)r(er-)1933 5404 y(mitted)i(to)h(return)f +Fm(#f)h Fl(whenev)n(er)g Fh(str)r(ing)i Fl(con)n(tains)e(an)g(explicit) +g(radix)1933 5504 y(pre\014x.)33 b(If)22 b(all)i(n)n(um)n(b)r(ers)d +(supp)r(orted)h(b)n(y)f(an)i(implemen)n(tation)e(are)i(real,)p +eop +%%Page: 25 25 +25 24 bop 3005 -125 a Fy(6.)55 b(Standard)27 b(pro)r(cedures)82 +b(25)-300 82 y Fl(then)18 b Fm(string->number)j Fl(is)f(p)r(ermitted)d +(to)i(return)e Fm(#f)i Fl(whenev)n(er)g Fh(str)r(ing)-300 +182 y Fl(uses)j(the)g(p)r(olar)g(or)h(rectangular)g(notations)f(for)h +(complex)e(n)n(um)n(b)r(ers.)32 b(If)-300 281 y(all)e(n)n(um)n(b)r(ers) +e(are)h(in)n(tegers,)i(then)e Fm(string->number)j Fl(ma)n(y)c(return)g +Fm(#f)-300 381 y Fl(whenev)n(er)35 b(the)h(fractional)h(notation)f(is)h +(used.)64 b(If)36 b(all)g(n)n(um)n(b)r(ers)e(are)-300 +481 y(exact,)39 b(then)c Fm(string->number)k Fl(ma)n(y)c(return)g +Fm(#f)i Fl(whenev)n(er)e(an)h(ex-)-300 580 y(p)r(onen)n(t)h(mark)n(er)f +(or)h(explicit)h(exactness)f(pre\014x)g(is)g(used,)j(or)e(if)g(a)g +Fm(#)-300 680 y Fl(app)r(ears)27 b(in)f(place)h(of)h(a)e(digit.)38 +b(If)26 b(all)i(inexact)e(n)n(um)n(b)r(ers)f(are)i(in)n(tegers,)-300 +780 y(then)d Fm(string->number)29 b Fl(ma)n(y)24 b(return)g +Fm(#f)i Fl(whenev)n(er)e(a)i(decimal)f(p)r(oin)n(t)-300 +879 y(is)h(used.)-300 1215 y Fu(6.3.)56 b(Other)38 b(data)g(t)m(yp)s +(es)-300 1442 y Fy(This)21 b(section)h(describ)r(es)e(op)r(erations)h +(on)g(some)g(of)g(Sc)n(heme's)g(non-)-300 1541 y(n)n(umeric)32 +b(data)g(t)n(yp)r(es:)46 b(b)r(o)r(oleans,)33 b(pairs,)g(lists,)g(sym)n +(b)r(ols,)g(c)n(har-)-300 1641 y(acters,)27 b(strings)f(and)i(v)n +(ectors.)-300 1930 y Fv(6.3.1.)46 b(Bo)s(oleans)-300 +2121 y Fy(The)22 b(standard)e(b)r(o)r(olean)h(ob)5 b(jects)21 +b(for)g(true)h(and)f(false)g(are)g(written)-300 2221 +y(as)g Fq(#t)h Fy(and)g Fq(#f)p Fy(.)34 b(What)23 b(really)e(matters,)i +(though,)g(are)e(the)h(ob)5 b(jects)-300 2320 y(that)38 +b(the)h(Sc)n(heme)e(conditional)h(expressions)e(\()p +Fq(if)p Fy(,)k Fq(cond)p Fy(,)f Fq(and)p Fy(,)-300 2420 +y Fq(or)p Fy(,)34 b Fq(do)p Fy(\))e(treat)h(as)g(true)g(or)f(false.)53 +b(The)33 b(phrase)f(\\a)g(true)h(v)-5 b(alue")-300 2519 +y(\(or)39 b(sometimes)g(just)h(\\true"\))f(means)g(an)n(y)f(ob)5 +b(ject)39 b(treated)h(as)-300 2619 y(true)22 b(b)n(y)g(the)g +(conditional)g(expressions,)f(and)h(the)h(phrase)e(\\a)g(false)-300 +2719 y(v)-5 b(alue")22 b(\(or)g(\\false"\))f(means)h(an)n(y)f(ob)5 +b(ject)23 b(treated)f(as)f(false)h(b)n(y)g(the)-300 2818 +y(conditional)27 b(expressions.)-300 2969 y(Of)g(all)h(the)g(standard)e +(Sc)n(heme)h(v)-5 b(alues,)28 b(only)f Fq(#f)f Fy(coun)n(ts)h(as)g +(false)-300 3069 y(in)43 b(conditional)f(expressions.)80 +b(Except)42 b(for)g Fq(#f)p Fy(,)k(all)c(standard)-300 +3169 y(Sc)n(heme)37 b(v)-5 b(alues,)39 b(including)e +Fq(#t)p Fy(,)i(pairs,)f(the)g(empt)n(y)f(list,)i(sym-)-300 +3268 y(b)r(ols,)c(n)n(um)n(b)r(ers,)g(strings,)g(v)n(ectors,)f(and)g +(pro)r(cedures,)g(coun)n(t)f(as)-300 3368 y(true.)-300 +3519 y Fj(Note:)136 b Fl(Programmers)42 b(accustomed)g(to)h(other)g +(dialects)g(of)g(Lisp)-300 3619 y(should)37 b(b)r(e)h(a)n(w)n(are)g +(that)g(Sc)n(heme)e(distinguishes)i(b)r(oth)f Fm(#f)h +Fl(and)f(the)-300 3718 y(empt)n(y)24 b(list)52 b(from)25 +b(the)g(sym)n(b)r(ol)g Fm(nil)p Fl(.)-300 3869 y Fy(Bo)r(olean)30 +b(constan)n(ts)h(ev)-5 b(aluate)31 b(to)g(themselv)n(es,)h(so)f(they)h +(do)f(not)-300 3969 y(need)d(to)f(b)r(e)h(quoted)g(in)f(programs.)-143 +4143 y Fm(#t)1020 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 +4235 y(#f)1020 b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 4326 +y('#f)981 b Fl(=)-13 b Fk(\))78 b Fm(#f)-300 4630 y Fq(\(not)42 +b Fw(obj)12 b Fq(\))1102 b Fy(library)26 b(pro)r(cedure)-300 +4781 y Fq(Not)g Fy(returns)h Fq(#t)g Fy(if)h Fw(obj)41 +b Fy(is)28 b(false,)f(and)g(returns)g Fq(#f)g Fy(otherwise.)-143 +4956 y Fm(\(not)40 b(#t\))785 b Fl(=)-13 b Fk(\))78 b +Fm(#f)-143 5047 y(\(not)40 b(3\))824 b Fl(=)-13 b Fk(\))78 +b Fm(#f)-143 5138 y(\(not)40 b(\(list)g(3\)\))550 b Fl(=)-13 +b Fk(\))78 b Fm(#f)-143 5230 y(\(not)40 b(#f\))785 b +Fl(=)-13 b Fk(\))78 b Fm(#t)-143 5321 y(\(not)40 b('\(\)\))746 +b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 5412 y(\(not)40 b(\(list\)\))629 +b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 5504 y(\(not)40 b('nil\))707 +b Fl(=)-13 b Fk(\))78 b Fm(#f)1933 82 y Fq(\(boolean?)40 +b Fw(obj)12 b Fq(\))884 b Fy(library)26 b(pro)r(cedure)1933 +227 y Fq(Boolean?)i Fy(returns)i Fq(#t)h Fy(if)g Fw(obj)44 +b Fy(is)31 b(either)g Fq(#t)g Fy(or)f Fq(#f)g Fy(and)h(returns)1933 +327 y Fq(#f)c Fy(otherwise.)2090 487 y Fm(\(boolean?)41 +b(#f\))590 b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 578 y(\(boolean?)41 +b(0\))629 b Fl(=)-13 b Fk(\))78 b Fm(#f)2090 670 y(\(boolean?)41 +b('\(\)\))551 b Fl(=)-13 b Fk(\))78 b Fm(#f)1933 972 +y Fv(6.3.2.)46 b(P)m(airs)32 b(and)g(lists)1933 1155 +y Fy(A)21 b Fw(p)l(air)h Fy(\(sometimes)e(called)g(a)g +Fw(dotte)l(d)k(p)l(air)p Fy(\))d(is)g(a)f(record)f(structure)1933 +1254 y(with)31 b(t)n(w)n(o)e(\014elds)h(called)g(the)g(car)f(and)h(cdr) +f(\014elds)i(\(for)e(historical)1933 1354 y(reasons\).)58 +b(P)n(airs)33 b(are)h(created)h(b)n(y)g(the)g(pro)r(cedure)f +Fq(cons)p Fy(.)58 b(The)1933 1454 y(car)29 b(and)g(cdr)g(\014elds)g +(are)f(accessed)g(b)n(y)h(the)h(pro)r(cedures)e Fq(car)g +Fy(and)1933 1553 y Fq(cdr)p Fy(.)35 b(The)25 b(car)f(and)h(cdr)g +(\014elds)g(are)f(assigned)f(b)n(y)i(the)g(pro)r(cedures)1933 +1653 y Fq(set-car!)g Fy(and)i Fq(set-cdr!)p Fy(.)1933 +1798 y(P)n(airs)32 b(are)h(used)h(primarily)f(to)h(represen)n(t)f +(lists.)56 b(A)34 b(list)g(can)g(b)r(e)1933 1898 y(de\014ned)26 +b(recursiv)n(ely)d(as)i(either)g(the)h(empt)n(y)f(list)h(or)e(a)h(pair) +g(whose)1933 1998 y(cdr)34 b(is)f(a)h(list.)56 b(More)33 +b(precisely)-7 b(,)34 b(the)g(set)g(of)g(lists)g(is)g(de\014ned)g(as) +1933 2097 y(the)28 b(smallest)f(set)h Fw(X)41 b Fy(suc)n(h)27 +b(that)2016 2332 y Fp(\017)41 b Fy(The)28 b(empt)n(y)g(list)g(is)f(in)h +Fw(X)13 b Fy(.)2016 2506 y Fp(\017)41 b Fy(If)31 b Fw(list)38 +b Fy(is)30 b(in)g Fw(X)13 b Fy(,)31 b(then)f(an)n(y)g(pair)f(whose)g +(cdr)h(\014eld)g(con)n(tains)2099 2606 y Fw(list)36 b +Fy(is)28 b(also)e(in)i Fw(X)13 b Fy(.)1933 2840 y(The)25 +b(ob)5 b(jects)25 b(in)g(the)g(car)f(\014elds)h(of)f(successiv)n(e)g +(pairs)g(of)h(a)f(list)h(are)1933 2940 y(the)35 b(elemen)n(ts)f(of)h +(the)f(list.)58 b(F)-7 b(or)34 b(example,)i(a)e(t)n(w)n(o-elemen)n(t)f +(list)1933 3040 y(is)d(a)e(pair)h(whose)g(car)f(is)h(the)h(\014rst)f +(elemen)n(t)h(and)f(whose)f(cdr)h(is)h(a)1933 3139 y(pair)e(whose)f +(car)g(is)h(the)g(second)g(elemen)n(t)g(and)g(whose)f(cdr)h(is)g(the) +1933 3239 y(empt)n(y)g(list.)37 b(The)27 b(length)h(of)f(a)h(list)f(is) +h(the)g(n)n(um)n(b)r(er)f(of)g(elemen)n(ts,)1933 3338 +y(whic)n(h)h(is)f(the)h(same)f(as)g(the)h(n)n(um)n(b)r(er)g(of)f +(pairs.)1933 3484 y(The)g(empt)n(y)f(list)g(is)h(a)e(sp)r(ecial)h(ob)5 +b(ject)26 b(of)h(its)f(o)n(wn)g(t)n(yp)r(e)g(\(it)h(is)f(not)1933 +3583 y(a)h(pair\);)h(it)g(has)f(no)g(elemen)n(ts)h(and)f(its)h(length)f +(is)h(zero.)1933 3729 y Fj(Note:)108 b Fl(The)36 b(ab)r(o)n(v)n(e)g +(de\014nitions)f(imply)f(that)h(all)i(lists)f(ha)n(v)n(e)f(\014nite) +1933 3828 y(length)26 b(and)f(are)h(terminated)f(b)n(y)g(the)g(empt)n +(y)f(list.)1933 3974 y Fy(The)43 b(most)f(general)f(notation)h +(\(external)g(represen)n(tation\))f(for)1933 4073 y(Sc)n(heme)27 +b(pairs)e(is)i(the)f(\\dotted")g(notation)g Fq(\()p Fw(c)3414 +4085 y Fr(1)3495 4073 y Fq(.)43 b Fw(c)3620 4085 y Fr(2)3657 +4073 y Fq(\))27 b Fy(where)f Fw(c)4005 4085 y Fr(1)1933 +4173 y Fy(is)32 b(the)f(v)-5 b(alue)32 b(of)f(the)h(car)e(\014eld)i +(and)f Fw(c)3160 4185 y Fr(2)3229 4173 y Fy(is)g(the)h(v)-5 +b(alue)31 b(of)h(the)g(cdr)1933 4273 y(\014eld.)60 b(F)-7 +b(or)34 b(example)h Fq(\(4)42 b(.)i(5\))34 b Fy(is)h(a)f(pair)h(whose)f +(car)g(is)h(4)f(and)1933 4372 y(whose)e(cdr)h(is)g(5.)52 +b(Note)32 b(that)i Fq(\(4)42 b(.)h(5\))33 b Fy(is)f(the)h(external)f +(repre-)1933 4472 y(sen)n(tation)g(of)g(a)g(pair,)h(not)g(an)f +(expression)f(that)i(ev)-5 b(aluates)31 b(to)i(a)1933 +4571 y(pair.)1933 4717 y(A)41 b(more)f(streamlined)g(notation)g(can)g +(b)r(e)h(used)g(for)f(lists:)63 b(the)1933 4816 y(elemen)n(ts)26 +b(of)g(the)g(list)g(are)f(simply)h(enclosed)f(in)h(paren)n(theses)e +(and)1933 4916 y(separated)34 b(b)n(y)g(spaces.)57 b(The)35 +b(empt)n(y)f(list)h(is)g(written)g Fq(\(\))f Fy(.)58 +b(F)-7 b(or)1933 5016 y(example,)2090 5175 y Fm(\(a)40 +b(b)f(c)h(d)f(e\))1933 5344 y Fy(and)2090 5504 y Fm(\(a)h(.)f(\(b)h(.)f +(\(c)h(.)g(\(d)f(.)h(\(e)f(.)h(\(\)\)\)\)\)\))p eop +%%Page: 26 26 +26 25 bop -300 -125 a Fy(26)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y(are)27 b(equiv)-5 b(alen)n(t)27 +b(notations)g(for)g(a)g(list)h(of)f(sym)n(b)r(ols.)-300 +219 y(A)32 b(c)n(hain)f(of)h(pairs)e(not)i(ending)f(in)h(the)g(empt)n +(y)g(list)f(is)h(called)f(an)-300 319 y Fw(impr)l(op)l(er)44 +b(list)p Fy(.)78 b(Note)41 b(that)h(an)f(improp)r(er)g(list)g(is)g(not) +h(a)f(list.)-300 418 y(The)21 b(list)g(and)g(dotted)h(notations)e(can)h +(b)r(e)g(com)n(bined)g(to)g(represen)n(t)-300 518 y(improp)r(er)27 +b(lists:)-143 661 y Fm(\(a)40 b(b)f(c)h(.)f(d\))-300 +812 y Fy(is)27 b(equiv)-5 b(alen)n(t)28 b(to)-143 956 +y Fm(\(a)40 b(.)f(\(b)h(.)f(\(c)h(.)f(d\)\)\))-300 1107 +y Fy(Whether)25 b(a)g(giv)n(en)f(pair)h(is)g(a)f(list)i(dep)r(ends)f +(up)r(on)h(what)f(is)g(stored)-300 1207 y(in)h(the)g(cdr)f(\014eld.)37 +b(When)26 b(the)g Fq(set-cdr!)d Fy(pro)r(cedure)h(is)i(used,)g(an)-300 +1306 y(ob)5 b(ject)27 b(can)h(b)r(e)g(a)f(list)h(one)f(momen)n(t)g(and) +h(not)f(the)h(next:)-143 1449 y Fm(\(define)41 b(x)e(\(list)i('a)e('b)h +('c\)\))-143 1541 y(\(define)h(y)e(x\))-143 1632 y(y)1059 +b Fl(=)-13 b Fk(\))78 b Fm(\(a)40 b(b)g(c\))-143 1723 +y(\(list?)h(y\))745 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 +1815 y(\(set-cdr!)41 b(x)f(4\))549 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)-143 1906 y Fm(x)1059 b Fl(=)-13 +b Fk(\))78 b Fm(\(a)40 b(.)g(4\))-143 1997 y(\(eqv?)g(x)g(y\))706 +b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 2088 y(y)1059 b Fl(=)-13 +b Fk(\))78 b Fm(\(a)40 b(.)g(4\))-143 2180 y(\(list?)h(y\))745 +b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 2271 y(\(set-cdr!)41 +b(x)f(x\))549 b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +2362 y Fm(\(list?)41 b(x\))745 b Fl(=)-13 b Fk(\))78 +b Fm(#f)-300 2514 y Fy(Within)63 b(literal)e(expressions)f(and)i +(represen)n(tations)e(of)h(ob-)-300 2613 y(jects)43 b(read)f(b)n(y)g +(the)h Fq(read)f Fy(pro)r(cedure,)j(the)e(forms)f Fq(')p +Fp(h)p Fy(datum)p Fp(i)q Fy(,)-300 2713 y Fq(\022)p Fp(h)p +Fy(datum)p Fp(i)p Fy(,)73 b Fq(,)p Fp(h)p Fy(datum)p +Fp(i)p Fy(,)f(and)63 b Fq(,@)p Fp(h)p Fy(datum)p Fp(i)g +Fy(denote)g(t)n(w)n(o-ele-)-300 2813 y(men)n(t)44 b(lists)g(whose)g +(\014rst)g(elemen)n(ts)g(are)f(the)h(sym)n(b)r(ols)g +Fq(quote)p Fy(,)-300 2912 y Fq(quasiquote)p Fy(,)51 b +Fq(unquote)m Fy(,)56 b(and)49 b Fq(unquote-splicing)o +Fy(,)h(resp)r(ec-)-300 3012 y(tiv)n(ely)-7 b(.)47 b(The)31 +b(second)g(elemen)n(t)g(in)g(eac)n(h)g(case)f(is)h Fp(h)p +Fy(datum)p Fp(i)p Fy(.)48 b(This)-300 3112 y(con)n(v)n(en)n(tion)e(is)h +(supp)r(orted)h(so)e(that)i(arbitrary)e(Sc)n(heme)h(pro-)-300 +3211 y(grams)36 b(ma)n(y)g(b)r(e)i(represen)n(ted)e(as)g(lists.)131 +b(That)37 b(is,)j(according)-300 3311 y(to)24 b(Sc)n(heme's)g(grammar,) +f(ev)n(ery)f Fp(h)p Fy(expression)p Fp(i)h Fy(is)h(also)f(a)h +Fp(h)p Fy(datum)p Fp(i)-300 3410 y Fy(\(see)32 b(section)f(7.1.2\).)49 +b(Among)32 b(other)f(things,)i(this)f(p)r(ermits)g(the)-300 +3510 y(use)c(of)g(the)h Fq(read)d Fy(pro)r(cedure)h(to)h(parse)f(Sc)n +(heme)i(programs.)36 b(See)-300 3610 y(section)27 b(3.3.)-300 +3855 y Fq(\(pair?)41 b Fw(obj)12 b Fq(\))1285 b Fy(pro)r(cedure)-300 +3992 y Fq(Pair?)22 b Fy(returns)i Fq(#t)g Fy(if)g Fw(obj)38 +b Fy(is)24 b(a)g(pair,)g(and)g(otherwise)g(returns)g +Fq(#f)p Fy(.)-143 4135 y Fm(\(pair?)41 b('\(a)e(.)h(b\)\))471 +b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 4226 y(\(pair?)41 +b('\(a)e(b)h(c\)\))471 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 +4317 y(\(pair?)41 b('\(\)\))667 b Fl(=)-13 b Fk(\))78 +b Fm(#f)-143 4409 y(\(pair?)41 b('#\(a)f(b\)\))510 b +Fl(=)-13 b Fk(\))78 b Fm(#f)-300 4659 y Fq(\(cons)42 +b Fw(obj)67 4671 y Fr(1)148 4659 y Fw(obj)253 4671 y +Fr(2)292 4659 y Fq(\))1115 b Fy(pro)r(cedure)-300 4796 +y(Returns)22 b(a)g(newly)g(allo)r(cated)g(pair)f(whose)h(car)f(is)h +Fw(obj)1375 4808 y Fr(1)1435 4796 y Fy(and)h(whose)-300 +4896 y(cdr)30 b(is)h Fw(obj)38 4908 y Fr(2)76 4896 y +Fy(.)46 b(The)31 b(pair)f(is)h(guaran)n(teed)e(to)h(b)r(e)h(di\013eren) +n(t)g(\(in)g(the)-300 4995 y(sense)c(of)h Fq(eqv?)p Fy(\))e(from)h(ev)n +(ery)g(existing)g(ob)5 b(ject.)-143 5138 y Fm(\(cons)40 +b('a)g('\(\)\))589 b Fl(=)-13 b Fk(\))78 b Fm(\(a\))-143 +5230 y(\(cons)40 b('\(a\))g('\(b)g(c)g(d\)\))314 b Fl(=)-13 +b Fk(\))78 b Fm(\(\(a\))41 b(b)e(c)h(d\))-143 5321 y(\(cons)g("a")g +('\(b)g(c\)\))432 b Fl(=)-13 b Fk(\))78 b Fm(\("a")41 +b(b)e(c\))-143 5412 y(\(cons)h('a)g(3\))667 b Fl(=)-13 +b Fk(\))78 b Fm(\(a)40 b(.)g(3\))-143 5504 y(\(cons)g('\(a)g(b\))g +('c\))471 b Fl(=)-13 b Fk(\))78 b Fm(\(\(a)40 b(b\))g(.)g(c\))1933 +82 y Fq(\(car)i Fw(p)l(air)9 b Fq(\))1340 b Fy(pro)r(cedure)1933 +226 y(Returns)30 b(the)g(con)n(ten)n(ts)f(of)g(the)h(car)f(\014eld)h +(of)f Fw(p)l(air)10 b Fy(.)43 b(Note)30 b(that)g(it)1933 +326 y(is)e(an)f(error)f(to)h(tak)n(e)g(the)h(car)f(of)g(the)h(empt)n(y) +g(list.)2090 482 y Fm(\(car)40 b('\(a)g(b)g(c\)\))550 +b Fl(=)-13 b Fk(\))78 b Fm(a)2090 574 y(\(car)40 b('\(\(a\))h(b)e(c)h +(d\)\))393 b Fl(=)-13 b Fk(\))78 b Fm(\(a\))2090 665 +y(\(car)40 b('\(1)g(.)g(2\)\))550 b Fl(=)-13 b Fk(\))78 +b Fm(1)2090 756 y(\(car)40 b('\(\)\))747 b Fl(=)-13 b +Fk(\))78 b Fj(err)l(or)1933 1041 y Fq(\(cdr)42 b Fw(p)l(air)9 +b Fq(\))1340 b Fy(pro)r(cedure)1933 1185 y(Returns)29 +b(the)h(con)n(ten)n(ts)f(of)g(the)g(cdr)g(\014eld)h(of)f +Fw(p)l(air)10 b Fy(.)42 b(Note)29 b(that)h(it)1933 1284 +y(is)e(an)f(error)f(to)h(tak)n(e)g(the)h(cdr)f(of)h(the)g(empt)n(y)f +(list.)2090 1441 y Fm(\(cdr)40 b('\(\(a\))h(b)e(c)h(d\)\))393 +b Fl(=)-13 b Fk(\))78 b Fm(\(b)39 b(c)h(d\))2090 1532 +y(\(cdr)g('\(1)g(.)g(2\)\))550 b Fl(=)-13 b Fk(\))78 +b Fm(2)2090 1624 y(\(cdr)40 b('\(\)\))747 b Fl(=)-13 +b Fk(\))78 b Fj(err)l(or)1933 1908 y Fq(\(set-car!)40 +b Fw(p)l(air)45 b(obj)12 b Fq(\))969 b Fy(pro)r(cedure)1933 +2052 y(Stores)30 b Fw(obj)44 b Fy(in)31 b(the)g(car)f(\014eld)h(of)f +Fw(p)l(air)10 b Fy(.)47 b(The)31 b(v)-5 b(alue)30 b(returned)g(b)n(y) +1933 2152 y Fq(set-car!)25 b Fy(is)i(unsp)r(eci\014ed.)2090 +2308 y Fm(\(define)41 b(\(f\))f(\(list)g('not-a-constant-list\)\))2090 +2400 y(\(define)h(\(g\))f('\(constant-list\)\))2090 2491 +y(\(set-car!)h(\(f\))f(3\))472 b Fl(=)-13 b Fk(\))78 +b Fj(unsp)l(e)l(ci\014e)l(d)2090 2582 y Fm(\(set-car!)41 +b(\(g\))f(3\))472 b Fl(=)-13 b Fk(\))78 b Fj(err)l(or)1933 +2867 y Fq(\(set-cdr!)40 b Fw(p)l(air)45 b(obj)12 b Fq(\))969 +b Fy(pro)r(cedure)1933 3011 y(Stores)30 b Fw(obj)43 b +Fy(in)31 b(the)g(cdr)f(\014eld)g(of)h Fw(p)l(air)10 b +Fy(.)45 b(The)30 b(v)-5 b(alue)30 b(returned)g(b)n(y)1933 +3110 y Fq(set-cdr!)25 b Fy(is)i(unsp)r(eci\014ed.)1933 +3374 y Fq(\(caar)42 b Fw(p)l(air)9 b Fq(\))1026 b Fy(library)26 +b(pro)r(cedure)1933 3474 y Fq(\(cadr)42 b Fw(p)l(air)9 +b Fq(\))1026 b Fy(library)26 b(pro)r(cedure)2139 3559 +y Fq(.)2139 3592 y(.)2139 3625 y(.)3716 3559 y Fy(.)3716 +3592 y(.)3716 3625 y(.)1933 3725 y Fq(\(cdddar)41 b Fw(p)l(air)9 +b Fq(\))939 b Fy(library)26 b(pro)r(cedure)1933 3824 +y Fq(\(cddddr)41 b Fw(p)l(air)9 b Fq(\))939 b Fy(library)26 +b(pro)r(cedure)1933 3968 y(These)i(pro)r(cedures)f(are)h(comp)r +(ositions)f(of)i Fq(car)e Fy(and)h Fq(cdr)p Fy(,)g(where)1933 +4068 y(for)f(example)h Fq(caddr)d Fy(could)j(b)r(e)g(de\014ned)f(b)n(y) +2090 4224 y Fm(\(define)41 b(caddr)f(\(lambda)h(\(x\))f(\(car)g(\(cdr)g +(\(cdr)h(x\)\)\)\)\))p Fl(.)1933 4389 y Fy(Arbitrary)j(comp)r +(ositions,)k(up)d(to)f(four)g(deep,)49 b(are)44 b(pro)n(vided.)1933 +4489 y(There)27 b(are)g(t)n(w)n(en)n(t)n(y-eigh)n(t)f(of)i(these)f(pro) +r(cedures)g(in)g(all.)1933 4753 y Fq(\(null?)41 b Fw(obj)12 +b Fq(\))1015 b Fy(library)26 b(pro)r(cedure)1933 4896 +y(Returns)i Fq(#t)f Fy(if)h Fw(obj)40 b Fy(is)28 b(the)g(empt)n(y)g +(list,)g(otherwise)e(returns)h Fq(#f)p Fy(.)1933 5160 +y Fq(\(list?)41 b Fw(obj)12 b Fq(\))1015 b Fy(library)26 +b(pro)r(cedure)1933 5304 y(Returns)g Fq(#t)f Fy(if)h +Fw(obj)39 b Fy(is)26 b(a)f(list,)i(otherwise)e(returns)g +Fq(#f)p Fy(.)36 b(By)25 b(de\014ni-)1933 5404 y(tion,)30 +b(all)f(lists)g(ha)n(v)n(e)f(\014nite)i(length)f(and)g(are)f +(terminated)h(b)n(y)g(the)1933 5504 y(empt)n(y)f(list.)p +eop +%%Page: 27 27 +27 26 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(27)171 82 y Fm(\(list?)40 b('\(a)g(b)g(c\)\))157 b +Fl(=)-13 b Fk(\))78 b Fm(#t)171 174 y(\(list?)40 b('\(\)\))354 +b Fl(=)-13 b Fk(\))78 b Fm(#t)171 265 y(\(list?)40 b('\(a)g(.)g(b\)\)) +157 b Fl(=)-13 b Fk(\))78 b Fm(#f)171 356 y(\(let)40 +b(\(\(x)g(\(list)g('a\)\)\))249 447 y(\(set-cdr!)h(x)f(x\))249 +539 y(\(list?)h(x\)\))314 b Fl(=)-13 b Fk(\))78 b Fm(#f)-300 +815 y Fq(\(list)42 b Fw(obj)56 b Fo(:)14 b(:)g(:)g Fq(\))903 +b Fy(library)26 b(pro)r(cedure)-300 958 y(Returns)h(a)h(newly)f(allo)r +(cated)g(list)h(of)f(its)h(argumen)n(ts.)-143 1110 y +Fm(\(list)40 b('a)g(\(+)g(3)f(4\))h('c\))314 b Fl(=)-13 +b Fk(\))78 b Fm(\(a)40 b(7)g(c\))-143 1202 y(\(list\))864 +b Fl(=)-13 b Fk(\))78 b Fm(\(\))-300 1478 y Fq(\(length)41 +b Fw(list)8 b Fq(\))972 b Fy(library)26 b(pro)r(cedure)-300 +1620 y(Returns)h(the)h(length)g(of)g Fw(list)8 b Fy(.)-143 +1773 y Fm(\(length)41 b('\(a)f(b)f(c\)\))432 b Fl(=)-13 +b Fk(\))78 b Fm(3)-143 1864 y(\(length)41 b('\(a)f(\(b\))g(\(c)f(d)h +(e\)\)\))118 b Fl(=)-13 b Fk(\))78 b Fm(3)-143 1956 y(\(length)41 +b('\(\)\))628 b Fl(=)-13 b Fk(\))78 b Fm(0)-300 2232 +y Fq(\(append)41 b Fw(list)i Fo(:)14 b(:)g(:)g Fq(\))826 +b Fy(library)26 b(pro)r(cedure)-300 2375 y(Returns)37 +b(a)h(list)f(consisting)g(of)h(the)g(elemen)n(ts)f(of)g(the)h(\014rst)g +Fw(list)-300 2474 y Fy(follo)n(w)n(ed)27 b(b)n(y)g(the)h(elemen)n(ts)f +(of)h(the)g(other)f Fw(list)8 b Fy(s.)-143 2627 y Fm(\(append)41 +b('\(x\))f('\(y\)\))393 b Fl(=)-13 b Fk(\))78 b Fm(\(x)40 +b(y\))-143 2718 y(\(append)h('\(a\))f('\(b)g(c)f(d\)\))236 +b Fl(=)-13 b Fk(\))78 b Fm(\(a)40 b(b)g(c)f(d\))-143 +2810 y(\(append)i('\(a)f(\(b\)\))g('\(\(c\)\)\))158 b +Fl(=)-13 b Fk(\))78 b Fm(\(a)40 b(\(b\))g(\(c\)\))-300 +2971 y Fy(The)e(resulting)f(list)g(is)h(alw)n(a)n(ys)d(newly)j(allo)r +(cated,)h(except)f(that)-300 3070 y(it)d(shares)f(structure)h(with)g +(the)h(last)f Fw(list)43 b Fy(argumen)n(t.)58 b(The)35 +b(last)-300 3170 y(argumen)n(t)40 b(ma)n(y)g(actually)g(b)r(e)h(an)n(y) +g(ob)5 b(ject;)47 b(an)40 b(improp)r(er)h(list)-300 3270 +y(results)27 b(if)h(the)g(last)f(argumen)n(t)g(is)g(not)h(a)f(prop)r +(er)g(list.)-143 3422 y Fm(\(append)41 b('\(a)f(b\))f('\(c)h(.)g(d\)\)) +157 b Fl(=)-13 b Fk(\))78 b Fm(\(a)40 b(b)g(c)f(.)h(d\))-143 +3514 y(\(append)h('\(\))f('a\))510 b Fl(=)-13 b Fk(\))78 +b Fm(a)-300 3790 y Fq(\(reverse)40 b Fw(list)8 b Fq(\))929 +b Fy(library)26 b(pro)r(cedure)-300 3932 y(Returns)e(a)f(newly)h(allo)r +(cated)f(list)i(consisting)e(of)h(the)g(elemen)n(ts)g(of)-300 +4032 y Fw(list)36 b Fy(in)28 b(rev)n(erse)d(order.)-143 +4185 y Fm(\(reverse)41 b('\(a)f(b)f(c\)\))393 b Fl(=)-13 +b Fk(\))78 b Fm(\(c)40 b(b)g(a\))-143 4276 y(\(reverse)h('\(a)f(\(b)g +(c\))f(d)h(\(e)f(\(f\)\)\)\))249 4367 y Fl(=)-13 b Fk(\))78 +b Fm(\(\(e)40 b(\(f\)\))g(d)g(\(b)g(c\))f(a\))-300 4644 +y Fq(\(list-tail)g Fw(list)44 b Fo(k)s Fq(\))760 b Fy(library)26 +b(pro)r(cedure)-300 4786 y(Returns)h(the)g(sublist)h(of)f +Fw(list)35 b Fy(obtained)27 b(b)n(y)f(omitting)i(the)f(\014rst)g +Fo(k)-300 4886 y Fy(elemen)n(ts.)50 b(It)32 b(is)g(an)g(error)e(if)j +Fw(list)40 b Fy(has)31 b(few)n(er)h(than)g Fo(k)j Fy(elemen)n(ts.)-300 +4985 y Fq(List-tail)24 b Fy(could)j(b)r(e)h(de\014ned)g(b)n(y)-143 +5138 y Fm(\(define)41 b(list-tail)-65 5230 y(\(lambda)g(\(x)f(k\))14 +5321 y(\(if)g(\(zero?)g(k\))171 5412 y(x)171 5504 y(\(list-tail)h +(\(cdr)f(x\))g(\(-)g(k)f(1\)\)\)\)\))1933 82 y Fq(\(list-ref)h +Fw(list)k Fo(k)s Fq(\))803 b Fy(library)26 b(pro)r(cedure)1933 +220 y(Returns)31 b(the)h Fo(k)s Fy(th)g(elemen)n(t)f(of)g +Fw(list)8 b Fy(.)48 b(\(This)32 b(is)f(the)g(same)g(as)g(the)1933 +319 y(car)c(of)h Fq(\(list-tail)40 b Fw(list)51 b Fo(k)s +Fq(\))p Fy(.\))38 b(It)29 b(is)f(an)f(error)f(if)j Fw(list)36 +b Fy(has)28 b(few)n(er)1933 419 y(than)g Fo(k)j Fy(elemen)n(ts.)2090 +563 y Fm(\(list-ref)41 b('\(a)f(b)g(c)f(d\))h(2\))197 +b Fl(=)-13 b Fk(\))78 b Fm(c)2090 654 y(\(list-ref)41 +b('\(a)f(b)g(c)f(d\))2482 746 y(\(inexact->exact)k(\(round)e(1.8\)\)\)) +2482 837 y Fl(=)-13 b Fk(\))79 b Fm(c)1933 1090 y Fq(\(memq)42 +b Fw(obj)i(list)8 b Fq(\))910 b Fy(library)26 b(pro)r(cedure)1933 +1190 y Fq(\(memv)42 b Fw(obj)i(list)8 b Fq(\))910 b Fy(library)26 +b(pro)r(cedure)1933 1290 y Fq(\(member)41 b Fw(obj)k(list)8 +b Fq(\))822 b Fy(library)26 b(pro)r(cedure)1933 1427 +y(These)k(pro)r(cedures)f(return)h(the)h(\014rst)f(sublist)g(of)g +Fw(list)39 b Fy(whose)29 b(car)1933 1527 y(is)37 b Fw(obj)13 +b Fy(,)40 b(where)d(the)g(sublists)g(of)g Fw(list)46 +b Fy(are)36 b(the)h(non-empt)n(y)g(lists)1933 1626 y(returned)25 +b(b)n(y)g Fq(\(list-tail)39 b Fw(list)52 b(k)9 b Fq(\))25 +b Fy(for)g Fw(k)34 b Fy(less)25 b(than)g(the)h(length)1933 +1726 y(of)c Fw(list)8 b Fy(.)36 b(If)22 b Fw(obj)36 b +Fy(do)r(es)21 b(not)i(o)r(ccur)e(in)h Fw(list)9 b Fy(,)23 +b(then)g Fq(#f)e Fy(\(not)h(the)h(empt)n(y)1933 1826 +y(list\))34 b(is)f(returned.)52 b Fq(Memq)31 b Fy(uses)i +Fq(eq?)f Fy(to)h(compare)e Fw(obj)46 b Fy(with)34 b(the)1933 +1925 y(elemen)n(ts)40 b(of)f Fw(list)9 b Fy(,)42 b(while)e +Fq(memv)e Fy(uses)i Fq(eqv?)e Fy(and)h Fq(member)f Fy(uses)1933 +2025 y Fq(equal?)p Fy(.)2090 2169 y Fm(\(memq)j('a)e('\(a)h(b)g(c\)\)) +393 b Fl(=)-13 b Fk(\))78 b Fm(\(a)39 b(b)h(c\))2090 +2260 y(\(memq)h('b)e('\(a)h(b)g(c\)\))393 b Fl(=)-13 +b Fk(\))78 b Fm(\(b)39 b(c\))2090 2352 y(\(memq)i('a)e('\(b)h(c)g +(d\)\))393 b Fl(=)-13 b Fk(\))78 b Fm(#f)2090 2443 y(\(memq)41 +b(\(list)f('a\))g('\(b)g(\(a\))g(c\)\))g Fl(=)-13 b Fk(\))78 +b Fm(#f)2090 2534 y(\(member)41 b(\(list)f('a\))2404 +2626 y('\(b)g(\(a\))g(c\)\))354 b Fl(=)-13 b Fk(\))78 +b Fm(\(\(a\))40 b(c\))2090 2717 y(\(memq)h(101)e('\(100)i(101)f +(102\)\))119 b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)2090 +2808 y Fm(\(memv)41 b(101)e('\(100)i(101)f(102\)\))119 +b Fl(=)-13 b Fk(\))78 b Fm(\(101)40 b(102\))1933 3062 +y Fq(\(assq)i Fw(obj)i(alist)8 b Fq(\))868 b Fy(library)26 +b(pro)r(cedure)1933 3161 y Fq(\(assv)42 b Fw(obj)i(alist)8 +b Fq(\))868 b Fy(library)26 b(pro)r(cedure)1933 3261 +y Fq(\(assoc)41 b Fw(obj)k(alist)8 b Fq(\))824 b Fy(library)26 +b(pro)r(cedure)1933 3399 y Fw(A)n(list)36 b Fy(\(for)27 +b(\\asso)r(ciation)e(list"\))j(m)n(ust)f(b)r(e)h(a)f(list)h(of)g +(pairs.)35 b(These)1933 3498 y(pro)r(cedures)24 b(\014nd)h(the)g +(\014rst)f(pair)g(in)h Fw(alist)34 b Fy(whose)24 b(car)f(\014eld)i(is)g +Fw(obj)13 b Fy(,)1933 3598 y(and)26 b(returns)f(that)i(pair.)35 +b(If)27 b(no)e(pair)g(in)i Fw(alist)34 b Fy(has)26 b +Fw(obj)39 b Fy(as)25 b(its)h(car,)1933 3697 y(then)i +Fq(#f)e Fy(\(not)h(the)h(empt)n(y)f(list\))g(is)g(returned.)36 +b Fq(Assq)26 b Fy(uses)g Fq(eq?)g Fy(to)1933 3797 y(compare)i +Fw(obj)41 b Fy(with)29 b(the)g(car)f(\014elds)h(of)f(the)h(pairs)f(in)g +Fw(alist)9 b Fy(,)29 b(while)1933 3897 y Fq(assv)d Fy(uses)i +Fq(eqv?)e Fy(and)h Fq(assoc)f Fy(uses)h Fq(equal?)p Fy(.)2090 +4041 y Fm(\(define)41 b(e)e('\(\(a)i(1\))e(\(b)h(2\))g(\(c)f(3\)\)\)) +2090 4132 y(\(assq)i('a)e(e\))668 b Fl(=)-13 b Fk(\))78 +b Fm(\(a)39 b(1\))2090 4223 y(\(assq)i('b)e(e\))668 b +Fl(=)-13 b Fk(\))78 b Fm(\(b)39 b(2\))2090 4315 y(\(assq)i('d)e(e\))668 +b Fl(=)-13 b Fk(\))78 b Fm(#f)2090 4406 y(\(assq)41 b(\(list)f('a\))g +('\(\(\(a\)\))h(\(\(b\)\))f(\(\(c\)\)\)\))3189 4497 y +Fl(=)-13 b Fk(\))78 b Fm(#f)2090 4589 y(\(assoc)41 b(\(list)f('a\))g +('\(\(\(a\)\))h(\(\(b\)\))f(\(\(c\)\)\)\))3189 4680 y +Fl(=)-13 b Fk(\))78 b Fm(\(\(a\)\))2090 4771 y(\(assq)41 +b(5)e('\(\(2)h(3\))g(\(5)g(7\))f(\(11)h(13\)\)\))3189 +4863 y Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)2090 +4954 y Fm(\(assv)41 b(5)e('\(\(2)h(3\))g(\(5)g(7\))f(\(11)h(13\)\)\)) +3189 5045 y Fl(=)-13 b Fk(\))78 b Fm(\(5)39 b(7\))1933 +5198 y Fj(R)l(ationale:)100 b Fl(Although)33 b(they)g(are)h(ordinarily) +h(used)e(as)h(predicates,)1933 5297 y Fm(memq)p Fl(,)22 +b Fm(memv)p Fl(,)f Fm(member)p Fl(,)h Fm(assq)p Fl(,)g +Fm(assv)p Fl(,)f(and)e Fm(assoc)h Fl(do)f(not)g(ha)n(v)n(e)f(question) +1933 5397 y(marks)28 b(in)g(their)h(names)f(b)r(ecause)h(they)e(return) +h(useful)h(v)l(alues)g(rather)1933 5497 y(than)c(just)h +Fm(#t)g Fl(or)g Fm(#f)p Fl(.)p eop +%%Page: 28 28 +28 27 bop -300 -125 a Fy(28)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fv(6.3.3.)46 b(Sym)m(b)s(ols)-300 +254 y Fy(Sym)n(b)r(ols)22 b(are)g(ob)5 b(jects)22 b(whose)g(usefulness) +h(rests)e(on)i(the)g(fact)g(that)-300 354 y(t)n(w)n(o)g(sym)n(b)r(ols)g +(are)f(iden)n(tical)i(\(in)g(the)g(sense)f(of)g Fq(eqv?)p +Fy(\))g(if)h(and)f(only)-300 453 y(if)g(their)f(names)h(are)e(sp)r +(elled)i(the)g(same)f(w)n(a)n(y)-7 b(.)34 b(This)22 b(is)h(exactly)e +(the)-300 553 y(prop)r(ert)n(y)31 b(needed)h(to)g(represen)n(t)f(iden)n +(ti\014ers)h(in)g(programs,)f(and)-300 652 y(so)22 b(most)g(implemen)n +(tations)g(of)g(Sc)n(heme)g(use)g(them)h(in)n(ternally)e(for)-300 +752 y(that)30 b(purp)r(ose.)43 b(Sym)n(b)r(ols)29 b(are)g(useful)h(for) +f(man)n(y)h(other)f(applica-)-300 852 y(tions;)f(for)g(instance,)g +(they)h(ma)n(y)e(b)r(e)i(used)f(the)h(w)n(a)n(y)d(en)n(umerated)-300 +951 y(v)-5 b(alues)27 b(are)g(used)g(in)h(P)n(ascal.)-300 +1087 y(The)e(rules)f(for)g(writing)h(a)f(sym)n(b)r(ol)g(are)g(exactly)g +(the)h(same)f(as)g(the)-300 1187 y(rules)i(for)g(writing)g(an)h(iden)n +(ti\014er;)f(see)g(sections)g(2.1)g(and)g(7.1.1.)-300 +1323 y(It)c(is)g(guaran)n(teed)e(that)i(an)n(y)f(sym)n(b)r(ol)g(that)i +(has)e(b)r(een)h(returned)g(as)-300 1422 y(part)30 b(of)g(a)g(literal)g +(expression,)g(or)g(read)f(using)h(the)h Fq(read)e Fy(pro)r(ce-)-300 +1522 y(dure,)c(and)f(subsequen)n(tly)g(written)g(out)h(using)f(the)g +Fq(write)f Fy(pro)r(ce-)-300 1622 y(dure,)g(will)g(read)e(bac)n(k)h(in) +g(as)g(the)h(iden)n(tical)f(sym)n(b)r(ol)g(\(in)h(the)f(sense)-300 +1721 y(of)35 b Fq(eqv?)p Fy(\).)58 b(The)36 b Fq(string->symbol)29 +b Fy(pro)r(cedure,)36 b(ho)n(w)n(ev)n(er,)f(can)-300 +1821 y(create)h(sym)n(b)r(ols)g(for)h(whic)n(h)f(this)i(write/read)d +(in)n(v)-5 b(ariance)36 b(ma)n(y)-300 1921 y(not)26 b(hold)f(b)r +(ecause)g(their)h(names)f(con)n(tain)g(sp)r(ecial)g(c)n(haracters)f(or) +-300 2020 y(letters)j(in)h(the)g(non-standard)e(case.)-300 +2148 y Fj(Note:)68 b Fl(Some)25 b(implemen)n(tations)f(of)i(Sc)n(heme)e +(ha)n(v)n(e)h(a)g(feature)h(kno)n(wn)-300 2239 y(as)k +(\\slashi\014cation")i(in)d(order)h(to)g(guaran)n(tee)g(write/read)h +(in)n(v)l(ariance)-300 2331 y(for)c(all)g(sym)n(b)r(ols,)g(but)e +(historically)j(the)e(most)g(imp)r(ortan)n(t)f(use)i(of)g(this)-300 +2422 y(feature)35 b(has)g(b)r(een)f(to)g(comp)r(ensate)g(for)h(the)f +(lac)n(k)h(of)g(a)g(string)f(data)-300 2513 y(t)n(yp)r(e.)-300 +2649 y(Some)28 b(implemen)n(tations)h(also)h(ha)n(v)n(e)f(\\unin)n +(terned)f(sym)n(b)r(ols",)j(whic)n(h)-300 2749 y(defeat)50 +b(write/read)i(in)n(v)l(ariance)e(ev)n(en)f(in)h(implemen)n(tations)e +(with)-300 2848 y(slashi\014cation,)26 b(and)d(also)i(generate)f +(exceptions)f(to)h(the)f(rule)g(that)g(t)n(w)n(o)-300 +2948 y(sym)n(b)r(ols)i(are)h(the)f(same)g(if)h(and)f(only)g(if)h(their) +f(names)g(are)h(sp)r(elled)g(the)-300 3048 y(same.)-300 +3291 y Fq(\(symbol?)40 b Fw(obj)12 b Fq(\))1198 b Fy(pro)r(cedure)-300 +3427 y(Returns)27 b Fq(#t)g Fy(if)h Fw(obj)41 b Fy(is)28 +b(a)f(sym)n(b)r(ol,)g(otherwise)g(returns)g Fq(#f)p Fy(.)-143 +3569 y Fm(\(symbol?)41 b('foo\))550 b Fl(=)-13 b Fk(\))78 +b Fm(#t)-143 3660 y(\(symbol?)41 b(\(car)f('\(a)g(b\)\)\))236 +b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 3751 y(\(symbol?)41 +b("bar"\))511 b Fl(=)-13 b Fk(\))78 b Fm(#f)-143 3843 +y(\(symbol?)41 b('nil\))550 b Fl(=)-13 b Fk(\))78 b Fm(#t)-143 +3934 y(\(symbol?)41 b('\(\)\))589 b Fl(=)-13 b Fk(\))78 +b Fm(#f)-143 4025 y(\(symbol?)41 b(#f\))628 b Fl(=)-13 +b Fk(\))78 b Fm(#f)-300 4272 y Fq(\(symbol->string)37 +b Fw(symb)l(ol)9 b Fq(\))762 b Fy(pro)r(cedure)-300 4408 +y(Returns)25 b(the)h(name)f(of)h Fw(symb)l(ol)34 b Fy(as)25 +b(a)g(string.)35 b(If)26 b(the)g(sym)n(b)r(ol)f(w)n(as)-300 +4507 y(part)j(of)h(an)f(ob)5 b(ject)28 b(returned)g(as)g(the)h(v)-5 +b(alue)28 b(of)h(a)f(literal)g(expres-)-300 4607 y(sion)c(\(section)h +(4.1.2\))f(or)g(b)n(y)g(a)h(call)f(to)h(the)g Fq(read)f +Fy(pro)r(cedure,)g(and)-300 4707 y(its)39 b(name)g(con)n(tains)f +(alphab)r(etic)i(c)n(haracters,)f(then)h(the)g(string)-300 +4806 y(returned)e(will)h(con)n(tain)f(c)n(haracters)e(in)j(the)g +(implemen)n(tation's)-300 4906 y(preferred)22 b(standard)g(case|some)f +(implemen)n(tations)i(will)g(prefer)-300 5005 y(upp)r(er)29 +b(case,)g(others)g(lo)n(w)n(er)e(case.)41 b(If)30 b(the)f(sym)n(b)r(ol) +g(w)n(as)f(returned)-300 5105 y(b)n(y)37 b Fq(string->symbol)p +Fy(,)c(the)k(case)f(of)h(c)n(haracters)d(in)j(the)h(string)-300 +5205 y(returned)e(will)i(b)r(e)f(the)g(same)f(as)h(the)g(case)f(in)h +(the)g(string)g(that)-300 5304 y(w)n(as)g(passed)h(to)g +Fq(string->symbol)p Fy(.)64 b(It)39 b(is)f(an)g(error)f(to)h(apply)-300 +5404 y(m)n(utation)26 b(pro)r(cedures)g(lik)n(e)g Fq(string-set!)c +Fy(to)27 b(strings)e(returned)-300 5504 y(b)n(y)i(this)h(pro)r(cedure.) +1933 82 y(The)g(follo)n(wing)e(examples)h(assume)g(that)g(the)h +(implemen)n(tation's)1933 182 y(standard)f(case)g(is)g(lo)n(w)n(er)f +(case:)2090 337 y Fm(\(symbol->string)43 b('flying-fish\))3189 +428 y Fl(=)-13 b Fk(\))78 b Fm("flying-fish")2090 520 +y(\(symbol->string)43 b('Martin\))159 b Fl(=)-13 b Fk(\))78 +b Fm("martin")2090 611 y(\(symbol->string)2208 702 y(\(string->symbol) +43 b("Malvina"\)\))3189 794 y Fl(=)-13 b Fk(\))78 b Fm("Malvina")1933 +1075 y Fq(\(string->symbol)38 b Fw(string)7 b Fq(\))795 +b Fy(pro)r(cedure)1933 1219 y(Returns)27 b(the)g(sym)n(b)r(ol)g(whose)f +(name)h(is)f Fw(string)8 b Fy(.)36 b(This)27 b(pro)r(cedure)1933 +1318 y(can)j(create)f(sym)n(b)r(ols)g(with)i(names)e(con)n(taining)h +(sp)r(ecial)f(c)n(harac-)1933 1418 y(ters)34 b(or)g(letters)g(in)g(the) +h(non-standard)e(case,)i(but)g(it)f(is)h(usually)1933 +1517 y(a)29 b(bad)g(idea)g(to)f(create)h(suc)n(h)f(sym)n(b)r(ols)h(b)r +(ecause)f(in)i(some)e(imple-)1933 1617 y(men)n(tations)i(of)g(Sc)n +(heme)g(they)g(cannot)g(b)r(e)g(read)f(as)h(themselv)n(es.)1933 +1717 y(See)e Fq(symbol->string)p Fy(.)1933 1860 y(The)g(follo)n(wing)e +(examples)h(assume)g(that)g(the)h(implemen)n(tation's)1933 +1960 y(standard)f(case)g(is)g(lo)n(w)n(er)f(case:)2090 +2115 y Fm(\(eq?)40 b('mISSISSIppi)i('mississippi\))2482 +2206 y Fl(=)-13 b Fk(\))79 b Fm(#t)2090 2298 y(\(string->symbol)43 +b("mISSISSIppi"\))2482 2389 y Fl(=)-13 b Fk(\))79 b Fl(the)38 +b(sym)n(b)r(ol)f(with)i(name)g Fm("mISSISSIppi")2090 +2480 y(\(eq?)h('bitBlt)h(\(string->symbol)i("bitBlt"\)\))2482 +2572 y Fl(=)-13 b Fk(\))79 b Fm(#f)2090 2663 y(\(eq?)40 +b('JollyWog)2286 2754 y(\(string->symbol)2365 2846 y(\(symbol->string)i +('JollyWog\)\)\))2482 2937 y Fl(=)-13 b Fk(\))79 b Fm(#t)2090 +3028 y(\(string=?)41 b("K.)f(Harper,)h(M.D.")2482 3119 +y(\(symbol->string)2561 3211 y(\(string->symbol)i("K.)c(Harper,)i +(M.D."\)\)\))2482 3302 y Fl(=)-13 b Fk(\))79 b Fm(#t)1933 +3592 y Fv(6.3.4.)46 b(Characters)1933 3772 y Fy(Characters)38 +b(are)g(ob)5 b(jects)39 b(that)h(represen)n(t)e(prin)n(ted)h(c)n +(haracters)1933 3871 y(suc)n(h)23 b(as)f(letters)h(and)g(digits.)35 +b(Characters)22 b(are)g(written)h(using)g(the)1933 3971 +y(notation)31 b Fq(#\\)p Fp(h)p Fy(c)n(haracter)p Fp(i)e +Fy(or)h Fq(#\\)p Fp(h)p Fy(c)n(haracter)25 b(name)p Fp(i)p +Fy(.)47 b(F)-7 b(or)31 b(exam-)1933 4071 y(ple:)2095 +4377 y Fq(#\\a)360 b Fy(;)28 b(lo)n(w)n(er)e(case)h(letter)2095 +4477 y Fq(#\\A)360 b Fy(;)28 b(upp)r(er)g(case)e(letter)2095 +4577 y Fq(#\\\()360 b Fy(;)28 b(left)g(paren)n(thesis)2095 +4676 y Fq(#\\)404 b Fy(;)28 b(the)g(space)f(c)n(haracter)2095 +4776 y Fq(#\\space)184 b Fy(;)28 b(the)g(preferred)e(w)n(a)n(y)h(to)g +(write)h(a)f(space)2095 4875 y Fq(#\\newline)96 b Fy(;)28 +b(the)g(newline)g(c)n(haracter)1933 5105 y(Case)20 b(is)h(signi\014can) +n(t)f(in)h Fq(#\\)p Fp(h)p Fy(c)n(haracter)p Fp(i)m Fy(,)i(but)e(not)g +(in)g Fq(#\\)p Fp(h)p Fy(c)n(haracter)1933 5205 y(name)p +Fp(i)p Fy(.)47 b(If)31 b Fp(h)p Fy(c)n(haracter)p Fp(i)f +Fy(in)h Fq(#\\)p Fp(h)p Fy(c)n(haracter)p Fp(i)d Fy(is)j(alphab)r +(etic,)h(then)1933 5304 y(the)45 b(c)n(haracter)d(follo)n(wing)g +Fp(h)p Fy(c)n(haracter)p Fp(i)h Fy(m)n(ust)h(b)r(e)g(a)g(delimiter)1933 +5404 y(c)n(haracter)22 b(suc)n(h)h(as)g(a)g(space)g(or)f(paren)n +(thesis.)35 b(This)23 b(rule)g(resolv)n(es)1933 5504 +y(the)38 b(am)n(biguous)e(case)h(where,)j(for)d(example,)i(the)f +(sequence)f(of)p eop +%%Page: 29 29 +29 28 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(29)-300 82 y(c)n(haracters)26 b(\\)p Fq(#\\space)p +Fy(")e(could)k(b)r(e)h(tak)n(en)f(to)g(b)r(e)g(either)g(a)g(repre-)-300 +182 y(sen)n(tation)g(of)g(the)g(space)g(c)n(haracter)e(or)h(a)h +(represen)n(tation)e(of)i(the)-300 281 y(c)n(haracter)21 +b(\\)p Fq(#\\s)p Fy(")g(follo)n(w)n(ed)h(b)n(y)g(a)h(represen)n(tation) +e(of)i(the)g(sym)n(b)r(ol)-300 381 y(\\)p Fq(pace)p Fy(.")-300 +524 y(Characters)30 b(written)j(in)f(the)g Fq(#\\)g Fy(notation)g(are)f +(self-ev)-5 b(aluating.)-300 624 y(That)28 b(is,)f(they)h(do)f(not)h +(ha)n(v)n(e)e(to)i(b)r(e)g(quoted)f(in)h(programs.)-300 +767 y(Some)i(of)g(the)h(pro)r(cedures)e(that)i(op)r(erate)e(on)h(c)n +(haracters)e(ignore)-300 867 y(the)23 b(di\013erence)f(b)r(et)n(w)n +(een)g(upp)r(er)g(case)g(and)g(lo)n(w)n(er)e(case.)35 +b(The)22 b(pro-)-300 966 y(cedures)f(that)g(ignore)f(case)h(ha)n(v)n(e) +f(\\)p Fq(-ci)p Fy(")f(\(for)i(\\case)f(insensitiv)n(e"\))-300 +1066 y(em)n(b)r(edded)28 b(in)g(their)f(names.)-300 1322 +y Fq(\(char?)41 b Fw(obj)12 b Fq(\))1285 b Fy(pro)r(cedure)-300 +1465 y(Returns)27 b Fq(#t)g Fy(if)h Fw(obj)41 b Fy(is)28 +b(a)f(c)n(haracter,)e(otherwise)i(returns)g Fq(#f)p Fy(.)-300 +1726 y Fq(\(char=?)41 b Fw(char)206 1738 y Fr(1)288 1726 +y Fw(char)445 1738 y Fr(2)483 1726 y Fq(\))924 b Fy(pro)r(cedure)-300 +1825 y Fq(\(char?)41 b Fw(char)206 1937 y Fr(1)288 1925 +y Fw(char)445 1937 y Fr(2)483 1925 y Fq(\))924 b Fy(pro)r(cedure)-300 +2025 y Fq(\(char<=?)40 b Fw(char)249 2037 y Fr(1)331 +2025 y Fw(char)488 2037 y Fr(2)526 2025 y Fq(\))881 b +Fy(pro)r(cedure)-300 2124 y Fq(\(char>=?)40 b Fw(char)249 +2136 y Fr(1)331 2124 y Fw(char)488 2136 y Fr(2)526 2124 +y Fq(\))881 b Fy(pro)r(cedure)-300 2267 y(These)41 b(pro)r(cedures)e +(imp)r(ose)i(a)g(total)g(ordering)e(on)i(the)g(set)g(of)-300 +2367 y(c)n(haracters.)35 b(It)28 b(is)f(guaran)n(teed)f(that)i(under)f +(this)h(ordering:)-217 2596 y Fp(\017)41 b Fy(The)29 +b(upp)r(er)f(case)g(c)n(haracters)e(are)h(in)i(order.)38 +b(F)-7 b(or)28 b(example,)-134 2696 y Fq(\(char?)39 +b Fw(char)336 4675 y Fr(1)418 4663 y Fw(char)575 4675 +y Fr(2)614 4663 y Fq(\))523 b Fy(library)26 b(pro)r(cedure)-300 +4763 y Fq(\(char-ci<=?)39 b Fw(char)380 4775 y Fr(1)462 +4763 y Fw(char)619 4775 y Fr(2)657 4763 y Fq(\))480 b +Fy(library)26 b(pro)r(cedure)-300 4862 y Fq(\(char-ci>=?)39 +b Fw(char)380 4874 y Fr(1)462 4862 y Fw(char)619 4874 +y Fr(2)657 4862 y Fq(\))480 b Fy(library)26 b(pro)r(cedure)-300 +5005 y(These)e(pro)r(cedures)f(are)h(similar)f(to)i Fq(char=?)d +Fy(et)i(cetera,)h(but)g(they)-300 5105 y(treat)34 b(upp)r(er)g(case)f +(and)h(lo)n(w)n(er)e(case)h(letters)h(as)f(the)i(same.)55 +b(F)-7 b(or)-300 5205 y(example,)31 b Fq(\(char-ci=?)40 +b(#\\A)i(#\\a\))29 b Fy(returns)h Fq(#t)p Fy(.)46 b(Some)31 +b(imple-)-300 5304 y(men)n(tations)g(ma)n(y)f(generalize)g(these)i(pro) +r(cedures)e(to)h(tak)n(e)g(more)-300 5404 y(than)e(t)n(w)n(o)f(argumen) +n(ts,)g(as)h(with)g(the)h(corresp)r(onding)d(n)n(umerical)-300 +5504 y(predicates.)1933 82 y Fq(\(char-alphabetic?)37 +b Fw(char)9 b Fq(\))486 b Fy(library)26 b(pro)r(cedure)1933 +182 y Fq(\(char-numeric?)38 b Fw(char)9 b Fq(\))617 b +Fy(library)26 b(pro)r(cedure)1933 281 y Fq(\(char-whitespace?)37 +b Fw(char)9 b Fq(\))486 b Fy(library)26 b(pro)r(cedure)1933 +381 y Fq(\(char-upper-case?)37 b Fw(letter)9 b Fq(\))455 +b Fy(library)26 b(pro)r(cedure)1933 481 y Fq(\(char-lower-case?)37 +b Fw(letter)9 b Fq(\))455 b Fy(library)26 b(pro)r(cedure)1933 +626 y(These)32 b(pro)r(cedures)f(return)h Fq(#t)g Fy(if)h(their)f +(argumen)n(ts)f(are)g(alpha-)1933 725 y(b)r(etic,)c(n)n(umeric,)e +(whitespace,)h(upp)r(er)g(case,)f(or)f(lo)n(w)n(er)g(case)h(c)n(har-) +1933 825 y(acters,)j(resp)r(ectiv)n(ely)-7 b(,)28 b(otherwise)f(they)i +(return)f Fq(#f)p Fy(.)39 b(The)28 b(follo)n(w-)1933 +925 y(ing)d(remarks,)f(whic)n(h)g(are)g(sp)r(eci\014c)h(to)g(the)g +(ASCI)r(I)g(c)n(haracter)e(set,)1933 1024 y(are)d(in)n(tended)i(only)e +(as)h(a)f(guide:)33 b(The)22 b(alphab)r(etic)e(c)n(haracters)f(are)1933 +1124 y(the)31 b(52)e(upp)r(er)i(and)f(lo)n(w)n(er)e(case)i(letters.)44 +b(The)30 b(n)n(umeric)g(c)n(harac-)1933 1223 y(ters)d(are)g(the)h(ten)g +(decimal)g(digits.)37 b(The)27 b(whitespace)g(c)n(haracters)1933 +1323 y(are)g(space,)g(tab,)g(line)h(feed,)g(form)g(feed,)g(and)f +(carriage)e(return.)1933 1591 y Fq(\(char->integer)38 +b Fw(char)9 b Fq(\))887 b Fy(pro)r(cedure)1933 1691 y +Fq(\(integer->char)38 b Fo(n)p Fq(\))1003 b Fy(pro)r(cedure)1933 +1836 y(Giv)n(en)32 b(a)g(c)n(haracter,)g Fq(char->integer)27 +b Fy(returns)k(an)i(exact)e(in)n(te-)1933 1936 y(ger)i(represen)n +(tation)e(of)i(the)h(c)n(haracter.)52 b(Giv)n(en)33 b(an)g(exact)f(in)n +(te-)1933 2035 y(ger)24 b(that)h(is)f(the)h(image)f(of)g(a)g(c)n +(haracter)f(under)h Fq(char->integer)p Fy(,)1933 2135 +y Fq(integer->char)i Fy(returns)k(that)h(c)n(haracter.)44 +b(These)30 b(pro)r(cedures)1933 2235 y(implemen)n(t)e(order-preserving) +d(isomorphisms)h(b)r(et)n(w)n(een)h(the)h(set)1933 2334 +y(of)e(c)n(haracters)d(under)i(the)h Fq(char<=?)d Fy(ordering)h(and)h +(some)g(subset)1933 2434 y(of)j(the)g(in)n(tegers)e(under)i(the)g +Fq(<=)f Fy(ordering.)35 b(That)27 b(is,)h(if)2090 2593 +y Fm(\(char<=?)41 b Fh(a)e(b)p Fm(\))h Fl(=)-13 b Fk(\))38 +b Fm(#t)79 b Fl(and)g Fm(\(<=)39 b Fh(x)g(y)s Fm(\))g +Fl(=)-13 b Fk(\))39 b Fm(#t)1933 2760 y Fy(and)28 b Fo(x)g +Fy(and)f Fo(y)k Fy(are)26 b(in)i(the)g(domain)f(of)h +Fq(integer->char)p Fy(,)22 b(then)2090 2919 y Fm(\(<=)40 +b(\(char->integer)j Fh(a)o Fm(\))2247 3011 y(\(char->integer)g +Fh(b)o Fm(\)\))243 b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 +3193 y(\(char<=?)41 b(\(integer->char)i Fh(x)o Fm(\))2443 +3285 y(\(integer->char)g Fh(y)r Fm(\)\))c Fl(=)-13 b +Fk(\))78 b Fm(#t)1933 3575 y Fq(\(char-upcase)39 b Fw(char)9 +b Fq(\))704 b Fy(library)26 b(pro)r(cedure)1933 3675 +y Fq(\(char-downcase)38 b Fw(char)9 b Fq(\))617 b Fy(library)26 +b(pro)r(cedure)1933 3820 y(These)56 b(pro)r(cedures)g(return)g(a)g(c)n +(haracter)e Fw(char)3579 3832 y Fr(2)3674 3820 y Fy(suc)n(h)i(that)1933 +3920 y Fq(\(char-ci=?)40 b Fw(char)53 b(char)2780 3932 +y Fr(2)2819 3920 y Fq(\))p Fy(.)67 b(In)38 b(addition,)j(if)d +Fw(char)48 b Fy(is)38 b(alpha-)1933 4019 y(b)r(etic,)i(then)d(the)g +(result)g(of)g Fq(char-upcase)32 b Fy(is)k(upp)r(er)h(case)f(and)1933 +4119 y(the)28 b(result)g(of)f Fq(char-downcase)22 b Fy(is)28 +b(lo)n(w)n(er)e(case.)1933 4397 y Fv(6.3.5.)46 b(Strings)1933 +4579 y Fy(Strings)39 b(are)f(sequences)h(of)g(c)n(haracters.)70 +b(Strings)39 b(are)f(written)1933 4679 y(as)j(sequences)f(of)h(c)n +(haracters)e(enclosed)h(within)i(doublequotes)1933 4778 +y(\()p Fq(")p Fy(\).)f(A)30 b(doublequote)e(can)h(b)r(e)g(written)g +(inside)g(a)g(string)f(only)g(b)n(y)1933 4878 y(escaping)f(it)h(with)g +(a)f(bac)n(kslash)f(\()p Fq(\\)p Fy(\),)i(as)f(in)2090 +5037 y Fm("The)40 b(word)g(\\"recursion\\")j(has)d(many)g(meanings.") +1933 5205 y Fy(A)23 b(bac)n(kslash)e(can)h(b)r(e)h(written)g(inside)g +(a)f(string)g(only)g(b)n(y)g(escaping)1933 5304 y(it)39 +b(with)g(another)e(bac)n(kslash.)68 b(Sc)n(heme)38 b(do)r(es)g(not)g +(sp)r(ecify)h(the)1933 5404 y(e\013ect)26 b(of)f(a)g(bac)n(kslash)e +(within)j(a)f(string)g(that)g(is)g(not)g(follo)n(w)n(ed)f(b)n(y)1933 +5504 y(a)j(doublequote)h(or)e(bac)n(kslash.)p eop +%%Page: 30 30 +30 29 bop -300 -125 a Fy(30)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y(A)28 b(string)g(constan)n(t)f(ma)n(y)g +(con)n(tin)n(ue)h(from)f(one)h(line)g(to)g(the)h(next,)-300 +182 y(but)f(the)g(exact)f(con)n(ten)n(ts)g(of)h(suc)n(h)f(a)g(string)g +(are)g(unsp)r(eci\014ed.)-300 318 y(The)32 b Fw(length)f +Fy(of)h(a)f(string)g(is)g(the)h(n)n(um)n(b)r(er)f(of)h(c)n(haracters)d +(that)i(it)-300 418 y(con)n(tains.)63 b(This)36 b(n)n(um)n(b)r(er)g(is) +h(an)f(exact,)i(non-negativ)n(e)d(in)n(teger)-300 517 +y(that)29 b(is)f(\014xed)g(when)h(the)g(string)e(is)h(created.)39 +b(The)28 b Fw(valid)k(indexes)-300 617 y Fy(of)38 b(a)f(string)h(are)f +(the)h(exact)f(non-negativ)n(e)g(in)n(tegers)f(less)i(than)-300 +717 y(the)26 b(length)g(of)g(the)g(string.)36 b(The)26 +b(\014rst)f(c)n(haracter)f(of)i(a)f(string)g(has)-300 +816 y(index)j(0,)f(the)h(second)f(has)g(index)h(1,)f(and)g(so)g(on.) +-300 953 y(In)c(phrases)g(suc)n(h)f(as)h(\\the)g(c)n(haracters)e(of)j +Fw(string)30 b Fy(b)r(eginning)23 b(with)-300 1052 y(index)32 +b Fw(start)39 b Fy(and)32 b(ending)g(with)g(index)g Fw(end)9 +b Fy(,")33 b(it)f(is)g(understo)r(o)r(d)-300 1152 y(that)h(the)g(index) +g Fw(start)40 b Fy(is)33 b(inclusiv)n(e)f(and)g(the)h(index)g +Fw(end)42 b Fy(is)32 b(ex-)-300 1251 y(clusiv)n(e.)48 +b(Th)n(us)32 b(if)g Fw(start)39 b Fy(and)31 b Fw(end)41 +b Fy(are)31 b(the)h(same)f(index,)h(a)g(n)n(ull)-300 +1351 y(substring)c(is)g(referred)f(to,)i(and)f(if)h Fw(start)36 +b Fy(is)28 b(zero)g(and)g Fw(end)37 b Fy(is)28 b(the)-300 +1451 y(length)g(of)f Fw(string)7 b Fy(,)28 b(then)g(the)g(en)n(tire)f +(string)g(is)h(referred)e(to.)-300 1587 y(Some)i(of)g(the)h(pro)r +(cedures)e(that)h(op)r(erate)f(on)h(strings)g(ignore)e(the)-300 +1687 y(di\013erence)21 b(b)r(et)n(w)n(een)h(upp)r(er)f(and)h(lo)n(w)n +(er)d(case.)34 b(The)22 b(v)n(ersions)e(that)-300 1786 +y(ignore)31 b(case)h(ha)n(v)n(e)f(\\)p Fq(-ci)p Fy(")f(\(for)i(\\case)g +(insensitiv)n(e"\))f(em)n(b)r(edded)-300 1886 y(in)d(their)f(names.) +-300 2130 y Fq(\(string?)40 b Fw(obj)12 b Fq(\))1198 +b Fy(pro)r(cedure)-300 2266 y(Returns)27 b Fq(#t)g Fy(if)h +Fw(obj)41 b Fy(is)28 b(a)f(string,)g(otherwise)g(returns)f +Fq(#f)p Fy(.)-300 2500 y Fq(\(make-string)39 b Fo(k)r +Fq(\))1095 b Fy(pro)r(cedure)-300 2599 y Fq(\(make-string)39 +b Fo(k)46 b Fw(char)9 b Fq(\))885 b Fy(pro)r(cedure)-300 +2736 y Fq(Make-string)23 b Fy(returns)28 b(a)f(newly)h(allo)r(cated)f +(string)g(of)h(length)g Fo(k)s Fy(.)-300 2835 y(If)40 +b Fw(char)49 b Fy(is)39 b(giv)n(en,)j(then)e(all)f(elemen)n(ts)g(of)g +(the)h(string)f(are)f(ini-)-300 2935 y(tialized)d(to)g +Fw(char)10 b Fy(,)37 b(otherwise)d(the)h(con)n(ten)n(ts)f(of)h(the)h +Fw(string)42 b Fy(are)-300 3035 y(unsp)r(eci\014ed.)-300 +3268 y Fq(\(string)f Fw(char)j Fo(:)14 b(:)g(:)g Fq(\))776 +b Fy(library)26 b(pro)r(cedure)-300 3405 y(Returns)39 +b(a)f(newly)h(allo)r(cated)f(string)g(comp)r(osed)g(of)h(the)g(argu-) +-300 3504 y(men)n(ts.)-300 3738 y Fq(\(string-length)f +Fw(string)7 b Fq(\))839 b Fy(pro)r(cedure)-300 3874 y(Returns)27 +b(the)h(n)n(um)n(b)r(er)g(of)f(c)n(haracters)f(in)h(the)h(giv)n(en)f +Fw(string)7 b Fy(.)-300 4108 y Fq(\(string-ref)39 b Fw(string)k +Fo(k)s Fq(\))888 b Fy(pro)r(cedure)-300 4244 y Fo(k)42 +b Fy(m)n(ust)e(b)r(e)g(a)f(v)-5 b(alid)40 b(index)f(of)h +Fw(string)7 b Fy(.)73 b Fq(String-ref)36 b Fy(returns)-300 +4344 y(c)n(haracter)26 b Fo(k)k Fy(of)e Fw(string)34 +b Fy(using)28 b(zero-origin)d(indexing.)-300 4577 y Fq(\(string-set!)39 +b Fw(string)k(k)h(char)9 b Fq(\))642 b Fy(pro)r(cedure)-300 +4714 y Fo(k)24 b Fy(m)n(ust)e(b)r(e)g(a)f(v)-5 b(alid)22 +b(index)g(of)f Fw(string)7 b Fy(.)35 b Fq(String-set!)17 +b Fy(stores)k Fw(char)-300 4813 y Fy(in)28 b(elemen)n(t)g +Fo(k)i Fy(of)e Fw(string)35 b Fy(and)27 b(returns)g(an)g(unsp)r +(eci\014ed)h(v)-5 b(alue.)-143 4956 y Fm(\(define)41 +b(\(f\))f(\(make-string)i(3)d(#\\*\)\))-143 5047 y(\(define)i(\(g\))f +("***"\))-143 5138 y(\(string-set!)i(\(f\))e(0)f(#\\?\))197 +b Fl(=)-13 b Fk(\))78 b Fj(unsp)l(e)l(ci\014e)l(d)-143 +5230 y Fm(\(string-set!)42 b(\(g\))e(0)f(#\\?\))197 b +Fl(=)-13 b Fk(\))78 b Fj(err)l(or)-143 5321 y Fm(\(string-set!)42 +b(\(symbol->string)h('immutable\))367 5412 y(0)367 5504 +y(#\\?\))432 b Fl(=)-13 b Fk(\))78 b Fj(err)l(or)1933 +82 y Fq(\(string=?)40 b Fw(string)2576 94 y Fr(1)2657 +82 y Fw(string)2864 94 y Fr(2)2901 82 y Fq(\))469 b Fy(library)26 +b(pro)r(cedure)1933 182 y Fq(\(string-ci=?)39 b Fw(string)2707 +194 y Fr(1)2788 182 y Fw(string)2995 194 y Fr(2)3032 +182 y Fq(\))338 b Fy(library)26 b(pro)r(cedure)1933 317 +y(Returns)g Fq(#t)e Fy(if)i(the)g(t)n(w)n(o)f(strings)g(are)f(the)i +(same)f(length)h(and)f(con-)1933 417 y(tain)32 b(the)f(same)g(c)n +(haracters)e(in)i(the)h(same)e(p)r(ositions,)i(otherwise)1933 +516 y(returns)d Fq(#f)p Fy(.)42 b Fq(String-ci=?)25 b +Fy(treats)k(upp)r(er)h(and)f(lo)n(w)n(er)f(case)h(let-)1933 +616 y(ters)21 b(as)g(though)h(they)g(w)n(ere)e(the)i(same)f(c)n +(haracter,)g(but)h Fq(string=?)1933 716 y Fy(treats)27 +b(upp)r(er)h(and)f(lo)n(w)n(er)f(case)h(as)g(distinct)h(c)n(haracters.) +1933 945 y Fq(\(string?)40 +b Fw(string)2576 1057 y Fr(1)2657 1045 y Fw(string)2864 +1057 y Fr(2)2901 1045 y Fq(\))469 b Fy(library)26 b(pro)r(cedure)1933 +1145 y Fq(\(string<=?)40 b Fw(string)2620 1157 y Fr(1)2700 +1145 y Fw(string)2907 1157 y Fr(2)2945 1145 y Fq(\))425 +b Fy(library)26 b(pro)r(cedure)1933 1244 y Fq(\(string>=?)40 +b Fw(string)2620 1256 y Fr(1)2700 1244 y Fw(string)2907 +1256 y Fr(2)2945 1244 y Fq(\))425 b Fy(library)26 b(pro)r(cedure)1933 +1344 y Fq(\(string-ci?)39 +b Fw(string)2707 1456 y Fr(1)2788 1444 y Fw(string)2995 +1456 y Fr(2)3032 1444 y Fq(\))338 b Fy(library)26 b(pro)r(cedure)1933 +1543 y Fq(\(string-ci<=?)38 b Fw(string)2750 1555 y Fr(1)2831 +1543 y Fw(string)3038 1555 y Fr(2)3075 1543 y Fq(\))295 +b Fy(library)26 b(pro)r(cedure)1933 1643 y Fq(\(string-ci>=?)38 +b Fw(string)2750 1655 y Fr(1)2831 1643 y Fw(string)3038 +1655 y Fr(2)3075 1643 y Fq(\))295 b Fy(library)26 b(pro)r(cedure)1933 +1778 y(These)60 b(pro)r(cedures)f(are)g(the)h(lexicographic)e +(extensions)h(to)1933 1878 y(strings)32 b(of)g(the)h(corresp)r(onding)e +(orderings)f(on)j(c)n(haracters.)49 b(F)-7 b(or)1933 +1977 y(example,)24 b Fq(stringlist)38 b Fw(string)7 b Fq(\))613 +b Fy(library)26 b(pro)r(cedure)1933 4505 y Fq(\(list->string)38 +b Fw(list)8 b Fq(\))711 b Fy(library)26 b(pro)r(cedure)1933 +4640 y Fq(String->list)20 b Fy(returns)j(a)h(newly)h(allo)r(cated)e +(list)i(of)f(the)h(c)n(harac-)1933 4740 y(ters)h(that)h(mak)n(e)f(up)h +(the)g(giv)n(en)e(string.)36 b Fq(List->string)22 b Fy(returns)1933 +4839 y(a)k(newly)g(allo)r(cated)g(string)f(formed)h(from)g(the)g(c)n +(haracters)e(in)j(the)1933 4939 y(list)g Fw(list)8 b +Fy(,)28 b(whic)n(h)e(m)n(ust)h(b)r(e)g(a)g(list)g(of)g(c)n(haracters.) +34 b Fq(String->list)1933 5039 y Fy(and)k Fq(list->string)33 +b Fy(are)k(in)n(v)n(erses)g(so)g(far)h(as)f Fq(equal?)f +Fy(is)i(con-)1933 5138 y(cerned.)1933 5368 y Fq(\(string-copy)h +Fw(string)7 b Fq(\))656 b Fy(library)26 b(pro)r(cedure)1933 +5504 y(Returns)i(a)f(newly)g(allo)r(cated)g(cop)n(y)g(of)h(the)g(giv)n +(en)e Fw(string)8 b Fy(.)p eop +%%Page: 31 31 +31 30 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(31)-300 82 y Fq(\(string-fill!)38 b Fw(string)44 b(char)9 +b Fq(\))410 b Fy(library)26 b(pro)r(cedure)-300 212 y(Stores)19 +b Fw(char)30 b Fy(in)21 b(ev)n(ery)d(elemen)n(t)j(of)f(the)g(giv)n(en)f +Fw(string)28 b Fy(and)20 b(returns)-300 311 y(an)27 b(unsp)r(eci\014ed) +h(v)-5 b(alue.)-300 527 y Fv(6.3.6.)46 b(V)-8 b(ectors)-300 +692 y Fy(V)h(ectors)22 b(are)g(heterogenous)f(structures)h(whose)g +(elemen)n(ts)h(are)f(in-)-300 792 y(dexed)34 b(b)n(y)f(in)n(tegers.)54 +b(A)34 b(v)n(ector)e(t)n(ypically)h(o)r(ccupies)g(less)h(space)-300 +891 y(than)i(a)g(list)g(of)h(the)f(same)g(length,)i(and)e(the)h(a)n(v)n +(erage)c(time)k(re-)-300 991 y(quired)i(to)h(access)f(a)g(randomly)g(c) +n(hosen)g(elemen)n(t)h(is)f(t)n(ypically)-300 1091 y(less)27 +b(for)g(the)h(v)n(ector)e(than)i(for)f(the)h(list.)-300 +1220 y(The)35 b Fw(length)h Fy(of)f(a)g(v)n(ector)f(is)i(the)f(n)n(um)n +(b)r(er)g(of)h(elemen)n(ts)f(that)g(it)-300 1320 y(con)n(tains.)68 +b(This)38 b(n)n(um)n(b)r(er)g(is)h(a)e(non-negativ)n(e)g(in)n(teger)g +(that)i(is)-300 1419 y(\014xed)d(when)f(the)h(v)n(ector)f(is)g +(created.)60 b(The)36 b Fw(valid)j(indexes)d Fy(of)f(a)-300 +1519 y(v)n(ector)k(are)g(the)h(exact)g(non-negativ)n(e)f(in)n(tegers)g +(less)g(than)h(the)-300 1619 y(length)19 b(of)g(the)g(v)n(ector.)33 +b(The)18 b(\014rst)h(elemen)n(t)g(in)g(a)f(v)n(ector)g(is)h(indexed) +-300 1718 y(b)n(y)32 b(zero,)g(and)g(the)g(last)g(elemen)n(t)g(is)g +(indexed)g(b)n(y)g(one)f(less)h(than)-300 1818 y(the)c(length)g(of)f +(the)h(v)n(ector.)-300 1947 y(V)-7 b(ectors)39 b(are)f(written)i(using) +f(the)h(notation)f Fq(#\()p Fw(obj)56 b Fo(:)14 b(:)g(:)f +Fq(\))p Fy(.)72 b(F)-7 b(or)-300 2047 y(example,)31 b(a)f(v)n(ector)g +(of)g(length)h(3)f(con)n(taining)g(the)h(n)n(um)n(b)r(er)f(zero)-300 +2147 y(in)41 b(elemen)n(t)g(0,)j(the)d(list)g Fq(\(2)i(2)g(2)g(2\))d +Fy(in)h(elemen)n(t)g(1,)j(and)c(the)-300 2246 y(string)27 +b Fq("Anna")e Fy(in)j(elemen)n(t)g(2)f(can)g(b)r(e)h(written)g(as)f +(follo)n(wing:)-143 2378 y Fm(#\(0)40 b(\(2)g(2)f(2)g(2\))h("Anna"\)) +-300 2519 y Fy(Note)19 b(that)h(this)g(is)f(the)h(external)f(represen)n +(tation)f(of)h(a)g(v)n(ector,)h(not)-300 2618 y(an)33 +b(expression)f(ev)-5 b(aluating)33 b(to)h(a)f(v)n(ector.)53 +b(Lik)n(e)33 b(list)h(constan)n(ts,)-300 2718 y(v)n(ector)26 +b(constan)n(ts)h(m)n(ust)h(b)r(e)g(quoted:)-143 2850 +y Fm('#\(0)40 b(\(2)g(2)f(2)h(2\))f("Anna"\))249 2941 +y Fl(=)-13 b Fk(\))78 b Fm(#\(0)40 b(\(2)g(2)f(2)h(2\))g("Anna"\))-300 +3185 y Fq(\(vector?)g Fw(obj)12 b Fq(\))1198 b Fy(pro)r(cedure)-300 +3314 y(Returns)27 b Fq(#t)g Fy(if)h Fw(obj)41 b Fy(is)28 +b(a)f(v)n(ector,)f(otherwise)h(returns)g Fq(#f)p Fy(.)-300 +3522 y Fq(\(make-vector)39 b Fw(k)9 b Fq(\))1093 b Fy(pro)r(cedure)-300 +3622 y Fq(\(make-vector)39 b Fw(k)k(\014l)t(l)9 b Fq(\))957 +b Fy(pro)r(cedure)-300 3751 y(Returns)22 b(a)g(newly)g(allo)r(cated)g +(v)n(ector)f(of)h Fw(k)32 b Fy(elemen)n(ts.)j(If)23 b(a)e(second)-300 +3851 y(argumen)n(t)31 b(is)g(giv)n(en,)h(then)h(eac)n(h)e(elemen)n(t)g +(is)h(initialized)g(to)g Fw(\014l)t(l)9 b Fy(.)-300 3950 +y(Otherwise)31 b(the)i(initial)f(con)n(ten)n(ts)f(of)h(eac)n(h)g +(elemen)n(t)g(is)g(unsp)r(eci-)-300 4050 y(\014ed.)-300 +4258 y Fq(\(vector)41 b Fw(obj)j Fo(:)14 b(:)g(:)g Fq(\))828 +b Fy(library)26 b(pro)r(cedure)-300 4387 y(Returns)32 +b(a)h(newly)f(allo)r(cated)g(v)n(ector)f(whose)h(elemen)n(ts)h(con)n +(tain)-300 4487 y(the)28 b(giv)n(en)f(argumen)n(ts.)35 +b(Analogous)26 b(to)i Fq(list)p Fy(.)-143 4619 y Fm(\(vector)41 +b('a)e('b)h('c\))432 b Fl(=)-13 b Fk(\))78 b Fm(#\(a)40 +b(b)g(c\))-300 4837 y Fq(\(vector-length)e Fw(ve)l(ctor)9 +b Fq(\))829 b Fy(pro)r(cedure)-300 4967 y(Returns)31 +b(the)g(n)n(um)n(b)r(er)f(of)h(elemen)n(ts)g(in)g Fw(ve)l(ctor)40 +b Fy(as)30 b(an)h(exact)f(in-)-300 5067 y(teger.)-300 +5274 y Fq(\(vector-ref)39 b Fw(ve)l(ctor)44 b(k)9 b Fq(\))878 +b Fy(pro)r(cedure)-300 5404 y Fo(k)28 b Fy(m)n(ust)e(b)r(e)f(a)g(v)-5 +b(alid)26 b(index)f(of)g Fw(ve)l(ctor)9 b Fy(.)37 b Fq(Vector-ref)21 +b Fy(returns)j(the)-300 5504 y(con)n(ten)n(ts)j(of)g(elemen)n(t)h +Fo(k)j Fy(of)c Fw(ve)l(ctor)10 b Fy(.)2090 82 y Fm(\(vector-ref)42 +b('#\(1)e(1)g(2)f(3)g(5)h(8)f(13)h(21\))2561 174 y(5\))2482 +265 y Fl(=)-13 b Fk(\))79 b Fm(8)2090 356 y(\(vector-ref)42 +b('#\(1)e(1)g(2)f(3)g(5)h(8)f(13)h(21\))2561 447 y(\(let)g(\(\(i)g +(\(round)h(\(*)e(2)h(\(acos)g(-1\)\)\)\)\))2639 539 y(\(if)g +(\(inexact?)i(i\))2796 630 y(\(inexact->exact)h(i\))2796 +721 y(i\)\)\))2482 813 y Fl(=)-13 b Fk(\))39 b Fm(13)1933 +1045 y Fq(\(vector-set!)g Fw(ve)l(ctor)44 b(k)g(obj)12 +b Fq(\))682 b Fy(pro)r(cedure)1933 1178 y Fo(k)29 b Fy(m)n(ust)d(b)r(e) +g(a)f(v)-5 b(alid)26 b(index)g(of)g Fw(ve)l(ctor)9 b +Fy(.)36 b Fq(Vector-set!)21 b Fy(stores)k Fw(obj)1933 +1277 y Fy(in)20 b(elemen)n(t)g Fo(k)j Fy(of)d Fw(ve)l(ctor)9 +b Fy(.)35 b(The)20 b(v)-5 b(alue)20 b(returned)f(b)n(y)h +Fq(vector-set!)1933 1377 y Fy(is)28 b(unsp)r(eci\014ed.)2090 +1514 y Fm(\(let)40 b(\(\(vec)h(\(vector)g(0)e('\(2)h(2)f(2)h(2\))f +("Anna"\)\)\))2169 1605 y(\(vector-set!)j(vec)e(1)f('\("Sue")i +("Sue"\)\))2169 1696 y(vec\))2482 1788 y Fl(=)-13 b Fk(\))79 +b Fm(#\(0)40 b(\("Sue")g("Sue"\))h("Anna"\))2090 1970 +y(\(vector-set!)h('#\(0)e(1)g(2\))f(1)h("doe"\))2482 +2062 y Fl(=)-13 b Fk(\))79 b Fj(err)l(or)h Fm(;)39 b(constant)i(vector) +1933 2294 y Fq(\(vector->list)d Fw(ve)l(ctor)9 b Fq(\))603 +b Fy(library)26 b(pro)r(cedure)1933 2394 y Fq(\(list->vector)38 +b Fw(list)8 b Fq(\))711 b Fy(library)26 b(pro)r(cedure)1933 +2526 y Fq(Vector->list)20 b Fy(returns)25 b(a)f(newly)h(allo)r(cated)f +(list)h(of)g(the)h(ob)5 b(jects)1933 2626 y(con)n(tained)22 +b(in)g(the)g(elemen)n(ts)g(of)g Fw(ve)l(ctor)10 b Fy(.)35 +b Fq(List->vector)17 b Fy(returns)1933 2726 y(a)22 b(newly)g(created)g +(v)n(ector)f(initialized)h(to)g(the)h(elemen)n(ts)f(of)g(the)h(list) +1933 2825 y Fw(list)8 b Fy(.)2090 2962 y Fm(\(vector->list)42 +b('#\(dah)f(dah)f(didah\)\))2482 3053 y Fl(=)-13 b Fk(\))79 +b Fm(\(dah)40 b(dah)g(didah\))2090 3145 y(\(list->vector)i('\(dididit)g +(dah\)\))2482 3236 y Fl(=)-13 b Fk(\))79 b Fm(#\(dididit)41 +b(dah\))1933 3468 y Fq(\(vector-fill!)d Fw(ve)l(ctor)44 +b(\014l)t(l)9 b Fq(\))466 b Fy(library)26 b(pro)r(cedure)1933 +3601 y(Stores)k Fw(\014l)t(l)40 b Fy(in)31 b(ev)n(ery)e(elemen)n(t)i +(of)f Fw(ve)l(ctor)9 b Fy(.)46 b(The)31 b(v)-5 b(alue)31 +b(returned)1933 3701 y(b)n(y)d Fq(vector-fill!)22 b Fy(is)28 +b(unsp)r(eci\014ed.)1933 3953 y Fu(6.4.)57 b(Con)m(trol)36 +b(features)1933 4157 y Fy(This)28 b(c)n(hapter)e(describ)r(es)h(v)-5 +b(arious)27 b(primitiv)n(e)g(pro)r(cedures)f(whic)n(h)1933 +4257 y(con)n(trol)d(the)i(\015o)n(w)e(of)h(program)f(execution)g(in)i +(sp)r(ecial)f(w)n(a)n(ys.)34 b(The)1933 4357 y Fq(procedure?)24 +b Fy(predicate)j(is)g(also)g(describ)r(ed)g(here.)1933 +4595 y Fq(\(procedure?)39 b Fw(obj)12 b Fq(\))1067 b +Fy(pro)r(cedure)1933 4727 y(Returns)28 b Fq(#t)f Fy(if)h +Fw(obj)40 b Fy(is)28 b(a)f(pro)r(cedure,)g(otherwise)f(returns)h +Fq(#f)p Fy(.)2090 4864 y Fm(\(procedure?)42 b(car\))472 +b Fl(=)-13 b Fk(\))78 b Fm(#t)2090 4956 y(\(procedure?)42 +b('car\))433 b Fl(=)-13 b Fk(\))78 b Fm(#f)2090 5047 +y(\(procedure?)42 b(\(lambda)f(\(x\))f(\(*)f(x)h(x\)\)\))3189 +5138 y Fl(=)-13 b Fk(\))78 b Fm(#t)2090 5230 y(\(procedure?)42 +b('\(lambda)f(\(x\))f(\(*)g(x)f(x\)\)\))3189 5321 y Fl(=)-13 +b Fk(\))78 b Fm(#f)2090 5412 y(\(call-with-current-continuat)q(ion)45 +b(procedure?\))3189 5504 y Fl(=)-13 b Fk(\))78 b Fm(#t)p +eop +%%Page: 32 32 +32 31 bop -300 -125 a Fy(32)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fq(\(apply)41 b Fw(pr)l(o)l(c)j(ar)l(g) +309 94 y Fr(1)390 82 y Fo(:)14 b(:)g(:)44 b Fw(ar)l(gs)7 +b Fq(\))724 b Fy(pro)r(cedure)-300 220 y Fw(Pr)l(o)l(c)37 +b Fy(m)n(ust)c(b)r(e)f(a)g(pro)r(cedure)f(and)h Fw(ar)l(gs)39 +b Fy(m)n(ust)32 b(b)r(e)h(a)f(list.)50 b(Calls)-300 319 +y Fw(pr)l(o)l(c)g Fy(with)45 b(the)g(elemen)n(ts)g(of)g(the)g(list)g +Fq(\(append)c(\(list)g Fw(ar)l(g)1771 331 y Fr(1)-300 +419 y Fo(:)14 b(:)g(:)g Fq(\))43 b Fw(ar)l(gs)7 b Fq(\))27 +b Fy(as)g(the)h(actual)f(argumen)n(ts.)-143 563 y Fm(\(apply)41 +b(+)e(\(list)h(3)g(4\)\))314 b Fl(=)-13 b Fk(\))78 b +Fm(7)-143 746 y(\(define)41 b(compose)-65 837 y(\(lambda)g(\(f)f(g\))14 +929 y(\(lambda)h(args)92 1020 y(\(f)f(\(apply)h(g)e(args\)\)\)\)\))-143 +1203 y(\(\(compose)i(sqrt)f(*\))g(12)g(75\))157 b Fl(=)-13 +b Fk(\))78 b Fm(30)-300 1456 y Fq(\(map)42 b Fw(pr)l(o)l(c)i(list)219 +1468 y Fr(1)300 1456 y Fw(list)408 1468 y Fr(2)489 1456 +y Fo(:)14 b(:)g(:)g Fq(\))537 b Fy(library)26 b(pro)r(cedure)-300 +1594 y(The)19 b Fw(list)8 b Fy(s)18 b(m)n(ust)h(b)r(e)g(lists,)h(and)f +Fw(pr)l(o)l(c)24 b Fy(m)n(ust)19 b(b)r(e)g(a)f(pro)r(cedure)f(taking) +-300 1693 y(as)23 b(man)n(y)f(argumen)n(ts)g(as)h(there)g(are)f +Fw(list)p Fy(s)h(and)g(returning)g(a)f(single)-300 1793 +y(v)-5 b(alue.)57 b(If)35 b(more)e(than)i(one)e Fw(list)43 +b Fy(is)34 b(giv)n(en,)h(then)g(they)g(m)n(ust)f(all)-300 +1892 y(b)r(e)d(the)h(same)e(length.)47 b Fq(Map)30 b +Fy(applies)h Fw(pr)l(o)l(c)36 b Fy(elemen)n(t-wise)31 +b(to)f(the)-300 1992 y(elemen)n(ts)37 b(of)g(the)g Fw(list)8 +b Fy(s)37 b(and)g(returns)f(a)g(list)i(of)e(the)i(results,)h(in)-300 +2092 y(order.)k(The)30 b(dynamic)g(order)f(in)h(whic)n(h)g +Fw(pr)l(o)l(c)35 b Fy(is)30 b(applied)g(to)g(the)-300 +2191 y(elemen)n(ts)d(of)h(the)g Fw(list)8 b Fy(s)28 b(is)f(unsp)r +(eci\014ed.)-143 2336 y Fm(\(map)40 b(cadr)g('\(\(a)g(b\))g(\(d)g(e\))f +(\(g)h(h\)\)\))249 2427 y Fl(=)-13 b Fk(\))78 b Fm(\(b)40 +b(e)g(h\))-143 2610 y(\(map)g(\(lambda)h(\(n\))f(\(expt)g(n)g(n\)\))53 +2701 y('\(1)g(2)f(3)h(4)f(5\)\))249 2792 y Fl(=)-13 b +Fk(\))78 b Fm(\(1)40 b(4)g(27)f(256)h(3125\))-143 2975 +y(\(map)g(+)g('\(1)f(2)h(3\))g('\(4)f(5)h(6\)\))118 b +Fl(=)-13 b Fk(\))78 b Fm(\(5)40 b(7)g(9\))-143 3157 y(\(let)g +(\(\(count)h(0\)\))-65 3249 y(\(map)g(\(lambda)f(\(ignored\))210 +3340 y(\(set!)g(count)h(\(+)e(count)i(1\)\))210 3431 +y(count\))132 3523 y('\(a)e(b\)\)\))511 b Fl(=)-13 b +Fk(\))78 b Fm(\(1)40 b(2\))g Fj(or)48 b Fm(\(2)39 b(1\))-300 +3868 y Fq(\(for-each)h Fw(pr)l(o)l(c)k(list)437 3880 +y Fr(1)518 3868 y Fw(list)626 3880 y Fr(2)707 3868 y +Fo(:)14 b(:)g(:)g Fq(\))319 b Fy(library)26 b(pro)r(cedure)-300 +4005 y(The)e(argumen)n(ts)e(to)h Fq(for-each)d Fy(are)j(lik)n(e)g(the)g +(argumen)n(ts)g(to)g Fq(map)p Fy(,)-300 4105 y(but)29 +b Fq(for-each)c Fy(calls)j Fw(pr)l(o)l(c)34 b Fy(for)28 +b(its)h(side)f(e\013ects)h(rather)f(than)g(for)-300 4204 +y(its)d(v)-5 b(alues.)35 b(Unlik)n(e)25 b Fq(map)p Fy(,)f +Fq(for-each)e Fy(is)j(guaran)n(teed)e(to)h(call)g Fw(pr)l(o)l(c)-300 +4304 y Fy(on)41 b(the)g(elemen)n(ts)g(of)g(the)g Fw(list)9 +b Fy(s)40 b(in)i(order)d(from)i(the)g(\014rst)g(ele-)-300 +4404 y(men)n(t\(s\))25 b(to)g(the)g(last,)h(and)e(the)i(v)-5 +b(alue)24 b(returned)h(b)n(y)f Fq(for-each)e Fy(is)-300 +4503 y(unsp)r(eci\014ed.)-143 4647 y Fm(\(let)40 b(\(\(v)g +(\(make-vector)i(5\)\)\))-65 4739 y(\(for-each)g(\(lambda)e(\(i\))406 +4830 y(\(vector-set!)i(v)e(i)f(\(*)h(i)f(i\)\)\))328 +4921 y('\(0)h(1)f(2)g(3)h(4\)\))-65 5013 y(v\))942 b +Fl(=)-13 b Fk(\))78 b Fm(#\(0)40 b(1)g(4)f(9)h(16\))-300 +5266 y Fq(\(force)h Fw(pr)l(omise)6 b Fq(\))846 b Fy(library)26 +b(pro)r(cedure)-300 5404 y(F)-7 b(orces)20 b(the)h(v)-5 +b(alue)21 b(of)g Fw(pr)l(omise)29 b Fy(\(see)21 b Fq(delay)p +Fy(,)f(section)h(4.2.5\).)34 b(If)21 b(no)-300 5504 y(v)-5 +b(alue)31 b(has)g(b)r(een)g(computed)g(for)g(the)g(promise,)h(then)f(a) +g(v)-5 b(alue)31 b(is)1933 82 y(computed)21 b(and)e(returned.)34 +b(The)20 b(v)-5 b(alue)20 b(of)g(the)h(promise)e(is)h(cac)n(hed)1933 +182 y(\(or)30 b(\\memoized"\))g(so)h(that)g(if)g(it)g(is)g(forced)f(a)g +(second)h(time,)h(the)1933 281 y(previously)27 b(computed)g(v)-5 +b(alue)28 b(is)f(returned.)2090 432 y Fm(\(force)41 b(\(delay)f(\(+)g +(1)g(2\)\)\))197 b Fl(=)-13 b Fk(\))78 b Fm(3)2090 524 +y(\(let)40 b(\(\(p)g(\(delay)h(\(+)f(1)f(2\)\)\)\))2169 +615 y(\(list)h(\(force)h(p\))e(\(force)i(p\)\)\))3189 +706 y Fl(=)-13 b Fk(\))78 b Fm(\(3)39 b(3\))2090 889 +y(\(define)i(a-stream)2169 980 y(\(letrec)f(\(\(next)2561 +1072 y(\(lambda)h(\(n\))2639 1163 y(\(cons)g(n)e(\(delay)i(\(next)f +(\(+)g(n)f(1\)\)\)\)\)\)\))2247 1254 y(\(next)h(0\)\)\))2090 +1346 y(\(define)h(head)f(car\))2090 1437 y(\(define)h(tail)2169 +1528 y(\(lambda)f(\(stream\))i(\(force)e(\(cdr)g(stream\)\)\)\))2090 +1711 y(\(head)h(\(tail)f(\(tail)g(a-stream\)\)\))3189 +1802 y Fl(=)-13 b Fk(\))78 b Fm(2)1933 1961 y Fq(Force)19 +b Fy(and)i Fq(delay)f Fy(are)g(mainly)h(in)n(tended)g(for)g(programs)e +(written)1933 2061 y(in)30 b(functional)g(st)n(yle.)43 +b(The)29 b(follo)n(wing)g(examples)g(should)g(not)h(b)r(e)1933 +2161 y(considered)e(to)g(illustrate)g(go)r(o)r(d)g(programming)e(st)n +(yle,)i(but)h(they)1933 2260 y(illustrate)c(the)h(prop)r(ert)n(y)f +(that)g(only)g(one)g(v)-5 b(alue)26 b(is)f(computed)h(for)1933 +2360 y(a)h(promise,)g(no)h(matter)f(ho)n(w)g(man)n(y)g(times)h(it)g(is) +f(forced.)2090 2511 y Fm(\(define)41 b(count)f(0\))2090 +2602 y(\(define)h(p)2169 2694 y(\(delay)f(\(begin)h(\(set!)f(count)h +(\(+)e(count)i(1\)\))2718 2785 y(\(if)f(\(>)f(count)i(x\))2875 +2876 y(count)2875 2968 y(\(force)f(p\)\)\)\)\))2090 3059 +y(\(define)h(x)e(5\))2090 3150 y(p)1060 b Fl(=)-13 b +Fk(\))78 b Fj(a)39 b(pr)l(omise)2090 3242 y Fm(\(force)i(p\))746 +b Fl(=)-13 b Fk(\))78 b Fm(6)2090 3333 y(p)1060 b Fl(=)-13 +b Fk(\))78 b Fj(a)39 b(pr)l(omise,)h(stil)t(l)2090 3424 +y Fm(\(begin)h(\(set!)f(x)g(10\))2365 3516 y(\(force)g(p\)\))433 +b Fl(=)-13 b Fk(\))78 b Fm(6)1933 3675 y Fy(Here)42 b(is)f(a)g(p)r +(ossible)h(implemen)n(tation)f(of)h Fq(delay)e Fy(and)h +Fq(force)p Fy(.)1933 3774 y(Promises)29 b(are)h(implemen)n(ted)i(here)e +(as)h(pro)r(cedures)e(of)i(no)g(argu-)1933 3874 y(men)n(ts,)d(and)f +Fq(force)f Fy(simply)i(calls)f(its)g(argumen)n(t:)2090 +4025 y Fm(\(define)41 b(force)2169 4116 y(\(lambda)f(\(object\))2247 +4208 y(\(object\)\)\))1933 4367 y Fy(W)-7 b(e)28 b(de\014ne)g(the)g +(expression)2090 4518 y Fm(\(delay)41 b Fk(h)p Fl(expression)p +Fk(i)p Fm(\))1933 4677 y Fy(to)28 b(ha)n(v)n(e)e(the)i(same)f(meaning)g +(as)g(the)h(pro)r(cedure)f(call)2090 4828 y Fm(\(make-promise)42 +b(\(lambda)f(\(\))f Fk(h)p Fl(expression)p Fk(i)p Fm(\)\))1933 +5079 y Fy(as)27 b(follo)n(ws)2090 5230 y Fm(\(define-syntax)43 +b(delay)2169 5321 y(\(syntax-rules)f(\(\))2247 5412 y(\(\(delay)f +(expression\))2286 5504 y(\(make-promise)i(\(lambda)d(\(\))g +(expression\)\)\)\)\),)p eop +%%Page: 33 33 +33 32 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(33)-300 82 y(where)27 b Fq(make-promise)c Fy(is)k(de\014ned)h(as)f +(follo)n(ws:)-143 229 y Fm(\(define)41 b(make-promise)-65 +320 y(\(lambda)g(\(proc\))14 412 y(\(let)f(\(\(result-ready?)j(#f\))249 +503 y(\(result)e(#f\)\))92 594 y(\(lambda)g(\(\))171 +686 y(\(if)f(result-ready?)328 777 y(result)328 868 y(\(let)g(\(\(x)g +(\(proc\)\)\))406 960 y(\(if)g(result-ready?)563 1051 +y(result)563 1142 y(\(begin)h(\(set!)f(result-ready?)i(#t\))838 +1234 y(\(set!)e(result)h(x\))838 1325 y(result\)\)\)\)\)\)\)\))-300 +1480 y Fj(R)l(ationale:)101 b Fl(A)33 b(promise)h(ma)n(y)e(refer)j(to)f +(its)g(o)n(wn)g(v)l(alue,)i(as)e(in)g(the)-300 1580 y(last)39 +b(example)f(ab)r(o)n(v)n(e.)72 b(F)-6 b(orcing)39 b(suc)n(h)f(a)g +(promise)g(ma)n(y)f(cause)i(the)-300 1679 y(promise)25 +b(to)g(b)r(e)h(forced)g(a)f(second)h(time)e(b)r(efore)i(the)f(v)l(alue) +g(of)h(the)f(\014rst)-300 1779 y(force)36 b(has)g(b)r(een)f(computed.) +61 b(This)36 b(complicates)g(the)f(de\014nition)g(of)-300 +1879 y Fm(make-promise)p Fl(.)-300 2018 y Fy(V)-7 b(arious)33 +b(extensions)g(to)g(this)h(seman)n(tics)f(of)h Fq(delay)d +Fy(and)j Fq(force)-300 2118 y Fy(are)27 b(supp)r(orted)g(in)h(some)f +(implemen)n(tations:)-217 2336 y Fp(\017)41 b Fy(Calling)26 +b Fq(force)e Fy(on)i(an)g(ob)5 b(ject)26 b(that)h(is)f(not)g(a)g +(promise)g(ma)n(y)-134 2435 y(simply)i(return)f(the)h(ob)5 +b(ject.)-217 2600 y Fp(\017)41 b Fy(It)34 b(ma)n(y)g(b)r(e)g(the)h +(case)e(that)h(there)g(is)g(no)g(means)f(b)n(y)h(whic)n(h)-134 +2699 y(a)28 b(promise)g(can)g(b)r(e)i(op)r(erationally)d(distinguished) +h(from)h(its)-134 2799 y(forced)36 b(v)-5 b(alue.)64 +b(That)37 b(is,)i(expressions)c(lik)n(e)h(the)h(follo)n(wing)-134 +2899 y(ma)n(y)28 b(ev)-5 b(aluate)29 b(to)g(either)g +Fq(#t)f Fy(or)g(to)h Fq(#f)p Fy(,)g(dep)r(ending)h(on)e(the)-134 +2998 y(implemen)n(tation:)23 3201 y Fm(\(eqv?)40 b(\(delay)h(1\))f(1\)) +392 b Fl(=)-13 b Fk(\))79 b Fj(unsp)l(e)l(ci\014e)l(d)23 +3292 y Fm(\(pair?)41 b(\(delay)f(\(cons)h(1)e(2\)\)\))79 +b Fl(=)-13 b Fk(\))79 b Fj(unsp)l(e)l(ci\014e)l(d)-217 +3503 y Fp(\017)41 b Fy(Some)27 b(implemen)n(tations)g(ma)n(y)g +(implemen)n(t)g(\\implicit)h(forc-)-134 3602 y(ing,")f(where)g(the)h(v) +-5 b(alue)28 b(of)g(a)f(promise)g(is)h(forced)f(b)n(y)g(primi-)-134 +3702 y(tiv)n(e)g(pro)r(cedures)g(lik)n(e)g Fq(cdr)42 +b(and)h(+:)23 3904 y Fm(\(+)d(\(delay)g(\(*)g(3)f(7\)\))h(13\))236 +b Fl(=)-13 b Fk(\))79 b Fm(34)-300 4228 y Fq(\(call-with-curre)o(nt-)o +(co)o(nt)o(inu)o(at)o(ion)37 b Fw(pr)l(o)l(c)5 b Fq(\))158 +b Fy(pro)r(cedure)-300 4368 y Fw(Pr)l(o)l(c)28 b Fy(m)n(ust)23 +b(b)r(e)g(a)g(pro)r(cedure)e(of)i(one)g(argumen)n(t.)34 +b(The)23 b(pro)r(cedure)-300 4467 y Fq(call-with-curren)o(t-c)o(on)o +(ti)o(nua)o(ti)o(on)28 b Fy(pac)n(k)-5 b(ages)32 b(up)i(the)h(cur-)-300 +4567 y(ren)n(t)d(con)n(tin)n(uation)g(\(see)h(the)g(rationale)e(b)r +(elo)n(w\))h(as)g(an)h(\\escap)r(e)-300 4667 y(pro)r(cedure")27 +b(and)i(passes)f(it)h(as)f(an)g(argumen)n(t)g(to)h Fw(pr)l(o)l(c)5 +b Fy(.)41 b(The)28 b(es-)-300 4766 y(cap)r(e)36 b(pro)r(cedure)e(is)i +(a)g(Sc)n(heme)f(pro)r(cedure)g(that,)j(if)f(it)f(is)f(later)-300 +4866 y(called,)g(will)e(abandon)g(whatev)n(er)f(con)n(tin)n(uation)h +(is)g(in)h(e\013ect)g(at)-300 4966 y(that)c(later)g(time)h(and)f(will)g +(instead)g(use)g(the)g(con)n(tin)n(uation)g(that)-300 +5065 y(w)n(as)23 b(in)h(e\013ect)g(when)g(the)h(escap)r(e)e(pro)r +(cedure)g(w)n(as)g(created.)34 b(Call-)-300 5165 y(ing)19 +b(the)h(escap)r(e)e(pro)r(cedure)h(ma)n(y)f(cause)h(the)g(in)n(v)n(o)r +(cation)f(of)i Fw(b)l(efor)l(e)-300 5264 y Fy(and)27 +b Fw(after)38 b Fy(th)n(unks)27 b(installed)h(using)f +Fq(dynamic-wind)p Fy(.)-300 5404 y(The)47 b(escap)r(e)e(pro)r(cedure)h +(accepts)g(the)h(same)e(n)n(um)n(b)r(er)i(of)f(ar-)-300 +5504 y(gumen)n(ts)63 b(as)f(the)h(con)n(tin)n(uation)g(to)f(the)i +(original)d(call)i(to)1933 82 y Fq(call-with-current)o(-c)o(ont)o(in)o +(uat)o(io)o(n)p Fy(.)30 b(Except)c(for)g(con)n(tin)n(ua-)1933 +182 y(tions)21 b(created)f(b)n(y)h(the)g Fq(call-with-values)15 +b Fy(pro)r(cedure,)21 b(all)g(con-)1933 281 y(tin)n(uations)26 +b(tak)n(e)g(exactly)g(one)g(v)-5 b(alue.)36 b(The)27 +b(e\013ect)g(of)f(passing)f(no)1933 381 y(v)-5 b(alue)35 +b(or)f(more)g(than)i(one)e(v)-5 b(alue)35 b(to)g(con)n(tin)n(uations)f +(that)h(w)n(ere)1933 481 y(not)28 b(created)f(b)n(y)g +Fq(call-with-values)21 b Fy(is)28 b(unsp)r(eci\014ed.)1933 +623 y(The)e(escap)r(e)g(pro)r(cedure)f(that)i(is)f(passed)f(to)h +Fw(pr)l(o)l(c)32 b Fy(has)25 b(unlimited)1933 722 y(exten)n(t)j(just)g +(lik)n(e)f(an)n(y)f(other)h(pro)r(cedure)f(in)i(Sc)n(heme.)36 +b(It)28 b(ma)n(y)f(b)r(e)1933 822 y(stored)d(in)i(v)-5 +b(ariables)24 b(or)g(data)g(structures)g(and)h(ma)n(y)g(b)r(e)g(called) +g(as)1933 922 y(man)n(y)i(times)h(as)f(desired.)1933 +1064 y(The)g(follo)n(wing)e(examples)h(sho)n(w)f(only)h(the)h(most)f +(common)g(w)n(a)n(ys)1933 1163 y(in)39 b(whic)n(h)g Fq +(call-with-curren)o(t-c)o(on)o(tin)o(ua)o(tio)o(n)33 +b Fy(is)38 b(used.)71 b(If)1933 1263 y(all)52 b(real)e(uses)i(w)n(ere)f +(as)g(simple)g(as)g(these)h(examples,)57 b(there)1933 +1363 y(w)n(ould)50 b(b)r(e)g(no)f(need)h(for)f(a)h(pro)r(cedure)e(with) +j(the)f(p)r(o)n(w)n(er)e(of)1933 1462 y Fq(call-with-current)o(-c)o +(ont)o(in)o(uat)o(io)o(n)p Fy(.)2090 1614 y Fm +(\(call-with-current-continuat)q(ion)2169 1705 y(\(lambda)40 +b(\(exit\))2247 1797 y(\(for-each)h(\(lambda)g(\(x\))2718 +1888 y(\(if)f(\(negative?)h(x\))2875 1979 y(\(exit)f(x\)\)\))2639 +2071 y('\(54)h(0)e(37)h(-3)f(245)h(19\)\))2247 2162 y(#t\)\))786 +b Fl(=)-13 b Fk(\))78 b Fm(-3)2090 2345 y(\(define)41 +b(list-length)2169 2436 y(\(lambda)f(\(obj\))2247 2527 +y(\(call-with-current-continuati)q(on)2326 2619 y(\(lambda)g +(\(return\))2404 2710 y(\(letrec)h(\(\(r)2796 2801 y(\(lambda)g +(\(obj\))2875 2892 y(\(cond)f(\(\(null?)h(obj\))f(0\))3110 +2984 y(\(\(pair?)h(obj\))3149 3075 y(\(+)f(\(r)g(\(cdr)g(obj\)\))g +(1\)\))3110 3166 y(\(else)g(\(return)h(#f\)\)\)\)\)\))2482 +3258 y(\(r)f(obj\)\)\)\)\)\))2090 3440 y(\(list-length)i('\(1)e(2)g(3)f +(4\)\))158 b Fl(=)-13 b Fk(\))78 b Fm(4)2090 3623 y(\(list-length)42 +b('\(a)e(b)g(.)f(c\)\))158 b Fl(=)-13 b Fk(\))78 b Fm(#f)1933 +3775 y Fj(R)l(ationale:)1933 3909 y Fl(A)47 b(common)e(use)i(of)g +Fm(call-with-current-continuati)q(on)53 b Fl(is)47 b(for)1933 +4000 y(structured,)25 b(non-lo)r(cal)h(exits)g(from)f(lo)r(ops)h(or)f +(pro)r(cedure)h(b)r(o)r(dies,)g(but)1933 4091 y(in)34 +b(fact)g Fm(call-with-current-continuatio)q(n)39 b Fl(is)34 +b(extremely)e(useful)1933 4183 y(for)24 b(implemen)n(ting)d(a)j(wide)f +(v)l(ariet)n(y)f(of)i(adv)l(anced)e(con)n(trol)i(structures.)1933 +4316 y(Whenev)n(er)30 b(a)h(Sc)n(heme)f(expression)h(is)h(ev)l(aluated) +e(there)h(is)h(a)f Fj(c)l(ontin-)1933 4408 y(uation)g +Fl(w)n(an)n(ting)f(the)f(result)h(of)g(the)f(expression.)47 +b(The)30 b(con)n(tin)n(uation)1933 4499 y(represen)n(ts)22 +b(an)g(en)n(tire)g(\(default\))g(future)f(for)i(the)e(computation.)33 +b(If)21 b(the)1933 4590 y(expression)27 b(is)f(ev)l(aluated)g(at)g(top) +g(lev)n(el,)h(for)g(example,)e(then)h(the)f(con-)1933 +4682 y(tin)n(uation)j(migh)n(t)e(tak)n(e)h(the)g(result,)i(prin)n(t)e +(it)g(on)h(the)f(screen,)h(prompt)1933 4773 y(for)h(the)f(next)g +(input,)g(ev)l(aluate)h(it,)g(and)f(so)h(on)f(forev)n(er.)43 +b(Most)29 b(of)g(the)1933 4864 y(time)j(the)f(con)n(tin)n(uation)h +(includes)g(actions)h(sp)r(eci\014ed)f(b)n(y)f(user)h(co)r(de,)1933 +4956 y(as)24 b(in)g(a)g(con)n(tin)n(uation)f(that)g(will)i(tak)n(e)f +(the)f(result,)h(m)n(ultiply)e(it)i(b)n(y)e(the)1933 +5047 y(v)l(alue)j(stored)g(in)g(a)g(lo)r(cal)h(v)l(ariable,)g(add)e +(sev)n(en,)h(and)g(giv)n(e)g(the)f(answ)n(er)1933 5138 +y(to)37 b(the)g(top)g(lev)n(el)g(con)n(tin)n(uation)g(to)g(b)r(e)g +(prin)n(ted.)67 b(Normally)37 b(these)1933 5230 y(ubiquitous)22 +b(con)n(tin)n(uations)h(are)f(hidden)g(b)r(ehind)f(the)h(scenes)h(and)f +(pro-)1933 5321 y(grammers)29 b(do)g(not)g(think)f(m)n(uc)n(h)g(ab)r +(out)h(them.)44 b(On)29 b(rare)h(o)r(ccasions,)1933 5412 +y(ho)n(w)n(ev)n(er,)21 b(a)e(programmer)g(ma)n(y)e(need)i(to)g(deal)h +(with)f(con)n(tin)n(uations)h(ex-)1933 5504 y(plicitly)-6 +b(.)33 b Fm(Call-with-current-continuati)q(on)27 b Fl(allo)n(ws)c(Sc)n +(heme)c(pro-)p eop +%%Page: 34 34 +34 33 bop -300 -125 a Fy(34)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fl(grammers)22 b(to)i(do)f(that)g(b)n(y)f +(creating)i(a)g(pro)r(cedure)f(that)g(acts)h(just)g(lik)n(e)-300 +174 y(the)h(curren)n(t)g(con)n(tin)n(uation.)-300 316 +y(Most)i(programming)f(languages)i(incorp)r(orate)f(one)g(or)g(more)f +(sp)r(ecial-)-300 415 y(purp)r(ose)38 b(escap)r(e)h(constructs)f(with)h +(names)e(lik)n(e)h Fm(exit)p Fl(,)43 b Fm(return)q Fl(,)e(or)-300 +515 y(ev)n(en)d Fm(goto)p Fl(.)76 b(In)38 b(1965,)44 +b(ho)n(w)n(ev)n(er,)f(P)n(eter)c(Landin)f([16)r(])h(in)n(v)n(en)n(ted)e +(a)-300 615 y(general)f(purp)r(ose)g(escap)r(e)g(op)r(erator)g(called)g +(the)f(J-op)r(erator.)65 b(John)-300 714 y(Reynolds)38 +b([24)q(])g(describ)r(ed)h(a)f(simpler)g(but)g(equally)g(p)r(o)n(w)n +(erful)h(con-)-300 814 y(struct)29 b(in)g(1972.)47 b(The)29 +b Fm(catch)i Fl(sp)r(ecial)f(form)f(describ)r(ed)h(b)n(y)e(Sussman)-300 +913 y(and)c(Steele)h(in)f(the)h(1975)h(rep)r(ort)e(on)h(Sc)n(heme)e(is) +i(exactly)g(the)f(same)g(as)-300 1013 y(Reynolds's)f(construct,)g +(though)f(its)h(name)e(came)h(from)g(a)h(less)h(general)-300 +1113 y(construct)36 b(in)g(MacLisp.)66 b(Sev)n(eral)36 +b(Sc)n(heme)e(implemen)n(tors)h(noticed)-300 1212 y(that)22 +b(the)h(full)g(p)r(o)n(w)n(er)g(of)g(the)f Fm(catch)i +Fl(construct)f(could)f(b)r(e)h(pro)n(vided)f(b)n(y)-300 +1312 y(a)h(pro)r(cedure)h(instead)f(of)h(b)n(y)e(a)i(sp)r(ecial)g(syn)n +(tactic)f(construct,)h(and)f(the)-300 1412 y(name)35 +b Fm(call-with-current-continuation)42 b Fl(w)n(as)37 +b(coined)f(in)g(1982.)-300 1511 y(This)d(name)e(is)i(descriptiv)n(e,)h +(but)d(opinions)i(di\013er)f(on)g(the)g(merits)g(of)-300 +1611 y(suc)n(h)c(a)i(long)f(name,)h(and)e(some)h(p)r(eople)g(use)g(the) +g(name)f Fm(call/cc)i Fl(in-)-300 1710 y(stead.)-300 +1967 y Fq(\(values)41 b Fw(obj)j Fo(:)14 b(:)g(:)p Fq(\))1112 +b Fy(pro)r(cedure)-300 2101 y(Deliv)n(ers)35 b(all)g(of)g(its)h +(argumen)n(ts)e(to)i(its)f(con)n(tin)n(uation.)60 b(Except)-300 +2192 y(for)35 b(con)n(tin)n(uations)f(created)h(b)n(y)g(the)h +Fq(call-with-values)29 b Fy(pro-)-300 2283 y(cedure,)36 +b(all)f(con)n(tin)n(uations)f(tak)n(e)g(exactly)h(one)f(v)-5 +b(alue.)59 b Fq(Values)-300 2375 y Fy(migh)n(t)28 b(b)r(e)g(de\014ned)g +(as)e(follo)n(ws:)-143 2510 y Fm(\(define)41 b(\(values)g(.)e(things\)) +-65 2601 y(\(call-with-current-continua)q(tion)14 2692 +y(\(lambda)i(\(cont\))f(\(apply)h(cont)f(things\)\)\)\))-300 +3041 y Fq(\(call-with-value)o(s)e Fw(pr)l(o)l(duc)l(er)44 +b(c)l(onsumer)9 b Fq(\))221 b Fy(pro)r(cedure)-300 3183 +y(Calls)31 b(its)h Fw(pr)l(o)l(duc)l(er)41 b Fy(argumen)n(t)31 +b(with)h(no)g(v)-5 b(alues)31 b(and)h(a)f(con)n(tin-)-300 +3283 y(uation)d(that,)i(when)e(passed)g(some)g(v)-5 b(alues,)29 +b(calls)f(the)h Fw(c)l(onsumer)-300 3382 y Fy(pro)r(cedure)g(with)i +(those)f(v)-5 b(alues)30 b(as)f(argumen)n(ts.)44 b(The)30 +b(con)n(tin)n(ua-)-300 3482 y(tion)25 b(for)f(the)h(call)f(to)g +Fw(c)l(onsumer)34 b Fy(is)24 b(the)h(con)n(tin)n(uation)f(of)g(the)h +(call)-300 3582 y(to)i Fq(call-with-values)p Fy(.)-143 +3734 y Fm(\(call-with-values)43 b(\(lambda)e(\(\))f(\(values)g(4)g +(5\)\))563 3825 y(\(lambda)h(\(a)f(b\))f(b\)\))955 3916 +y Fl(=)-13 b Fk(\))78 b Fm(5)-143 4099 y(\(call-with-values)43 +b(*)c(-\))236 b Fl(=)-13 b Fk(\))78 b Fm(-1)-300 4465 +y Fq(\(dynamic-wind)38 b Fw(b)l(efor)l(e)45 b(thunk)e(after)9 +b Fq(\))424 b Fy(pro)r(cedure)-300 4607 y(Calls)30 b +Fw(thunk)40 b Fy(without)31 b(argumen)n(ts,)g(returning)f(the)i +(result\(s\))f(of)-300 4707 y(this)42 b(call.)77 b Fw(Befor)l(e)49 +b Fy(and)41 b Fw(after)51 b Fy(are)41 b(called,)j(also)c(without)i(ar-) +-300 4806 y(gumen)n(ts,)50 b(as)45 b(required)g(b)n(y)h(the)g(follo)n +(wing)f(rules)g(\(note)i(that)-300 4906 y(in)e(the)g(absence)e(of)i +(calls)f(to)g(con)n(tin)n(uations)f(captured)h(using)-300 +5005 y Fq(call-with-curren)o(t-c)o(on)o(ti)o(nua)o(ti)o(on)35 +b Fy(the)42 b(three)f(argumen)n(ts)-300 5105 y(are)30 +b(called)g(once)g(eac)n(h,)h(in)g(order\).)45 b Fw(Befor)l(e)38 +b Fy(is)31 b(called)f(whenev)n(er)-300 5205 y(execution)k(en)n(ters)g +(the)h(dynamic)g(exten)n(t)g(of)f(the)h(call)g(to)f Fw(thunk)-300 +5304 y Fy(and)29 b Fw(after)39 b Fy(is)29 b(called)g(whenev)n(er)g(it)h +(exits)f(that)h(dynamic)f(exten)n(t.)-300 5404 y(The)k(dynamic)f(exten) +n(t)h(of)f(a)h(pro)r(cedure)e(call)i(is)f(the)h(p)r(erio)r(d)g(b)r(e-) +-300 5504 y(t)n(w)n(een)i(when)g(the)g(call)g(is)g(initiated)h(and)e +(when)i(it)f(returns.)59 b(In)1933 82 y(Sc)n(heme,)49 +b(b)r(ecause)c(of)f Fq(call-with-current)o(-co)o(nt)o(in)o(uat)o(io)o +(n)p Fy(,)1933 182 y(the)23 b(dynamic)e(exten)n(t)h(of)g(a)f(call)h(ma) +n(y)f(not)h(b)r(e)g(a)g(single,)g(connected)1933 281 +y(time)28 b(p)r(erio)r(d.)37 b(It)28 b(is)g(de\014ned)g(as)f(follo)n +(ws:)2016 495 y Fp(\017)41 b Fy(The)29 b(dynamic)g(exten)n(t)g(is)f(en) +n(tered)h(when)g(execution)f(of)h(the)2099 594 y(b)r(o)r(dy)f(of)g(the) +g(called)f(pro)r(cedure)g(b)r(egins.)2016 766 y Fp(\017)41 +b Fy(The)68 b(dynamic)f(exten)n(t)h(is)f(also)f(en)n(tered)h(when)h +(exe-)2099 866 y(cution)61 b(is)g(not)g(within)g(the)g(dynamic)g(exten) +n(t)g(and)g(a)2099 966 y(con)n(tin)n(uation)55 b(is)h(in)n(v)n(ok)n(ed) +f(that)h(w)n(as)f(captured)g(\(using)2099 1065 y Fq(call-with-current)o +(-c)o(ont)o(in)o(uat)o(io)o(n)p Fy(\))39 b(during)44 +b(the)h(dy-)2099 1165 y(namic)28 b(exten)n(t.)2016 1337 +y Fp(\017)41 b Fy(It)28 b(is)g(exited)g(when)f(the)h(called)g(pro)r +(cedure)e(returns.)2016 1508 y Fp(\017)41 b Fy(It)26 +b(is)f(also)e(exited)j(when)f(execution)f(is)h(within)h(the)f(dynamic) +2099 1608 y(exten)n(t)20 b(and)f(a)g(con)n(tin)n(uation)g(is)g(in)n(v)n +(ok)n(ed)f(that)i(w)n(as)f(captured)2099 1708 y(while)28 +b(not)g(within)g(the)g(dynamic)f(exten)n(t.)1933 1921 +y(If)19 b(a)g(second)f(call)g(to)g Fq(dynamic-wind)c +Fy(o)r(ccurs)k(within)h(the)g(dynamic)1933 2021 y(exten)n(t)32 +b(of)g(the)h(call)e(to)h Fw(thunk)40 b Fy(and)32 b(then)h(a)e(con)n +(tin)n(uation)g(is)h(in-)1933 2120 y(v)n(ok)n(ed)24 b(in)g(suc)n(h)h(a) +f(w)n(a)n(y)f(that)i(the)g Fw(after)10 b Fy(s)24 b(from)g(these)h(t)n +(w)n(o)f(in)n(v)n(o)r(ca-)1933 2220 y(tions)e(of)g Fq(dynamic-wind)17 +b Fy(are)j(b)r(oth)j(to)e(b)r(e)h(called,)h(then)f(the)g +Fw(after)1933 2320 y Fy(asso)r(ciated)i(with)h(the)g(second)f +(\(inner\))h(call)f(to)h Fq(dynamic-wind)19 b Fy(is)1933 +2419 y(called)28 b(\014rst.)1933 2563 y(If)40 b(a)g(second)f(call)g(to) +h Fq(dynamic-wind)34 b Fy(o)r(ccurs)39 b(within)h(the)g(dy-)1933 +2663 y(namic)g(exten)n(t)h(of)f(the)h(call)f(to)g Fw(thunk)49 +b Fy(and)40 b(then)g(a)g(con)n(tin)n(ua-)1933 2763 y(tion)33 +b(is)f(in)n(v)n(ok)n(ed)e(in)j(suc)n(h)f(a)g(w)n(a)n(y)f(that)h(the)h +Fw(b)l(efor)l(e)7 b Fy(s)32 b(from)g(these)1933 2862 +y(t)n(w)n(o)39 b(in)n(v)n(o)r(cations)e(of)j Fq(dynamic-wind)34 +b Fy(are)k(b)r(oth)i(to)f(b)r(e)g(called,)1933 2962 y(then)k(the)f +Fw(b)l(efor)l(e)49 b Fy(asso)r(ciated)40 b(with)i(the)h(\014rst)e +(\(outer\))h(call)f(to)1933 3061 y Fq(dynamic-wind)23 +b Fy(is)k(called)h(\014rst.)1933 3205 y(If)i(in)n(v)n(oking)e(a)h(con)n +(tin)n(uation)g(requires)f(calling)h(the)h Fw(b)l(efor)l(e)36 +b Fy(from)1933 3305 y(one)23 b(call)f(to)h Fq(dynamic-wind)17 +b Fy(and)23 b(the)g Fw(after)32 b Fy(from)23 b(another,)g(then)1933 +3405 y(the)28 b Fw(after)38 b Fy(is)27 b(called)g(\014rst.)1933 +3549 y(The)d(e\013ect)h(of)e(using)h(a)f(captured)h(con)n(tin)n(uation) +f(to)h(en)n(ter)f(or)g(exit)1933 3648 y(the)h(dynamic)f(exten)n(t)h(of) +f(a)g(call)g(to)g Fw(b)l(efor)l(e)31 b Fy(or)22 b Fw(after)33 +b Fy(is)23 b(unde\014ned.)2090 3805 y Fm(\(let)40 b(\(\(path)h('\(\)\)) +2326 3896 y(\(c)e(#f\)\))2169 3988 y(\(let)h(\(\(add)g(\(lambda)h +(\(s\))2679 4079 y(\(set!)f(path)g(\(cons)g(s)g(path\)\)\)\)\))2247 +4170 y(\(dynamic-wind)2326 4262 y(\(lambda)g(\(\))g(\(add)g +('connect\)\))2326 4353 y(\(lambda)g(\(\))2404 4444 y(\(add)g +(\(call-with-current-continuat)q(ion)2679 4536 y(\(lambda)g(\(c0\))2757 +4627 y(\(set!)g(c)g(c0\))2757 4718 y('talk1\)\)\)\))2326 +4810 y(\(lambda)g(\(\))g(\(add)g('disconnect\)\)\))2247 +4901 y(\(if)g(\(<)g(\(length)h(path\))f(4\))2404 4992 +y(\(c)g('talk2\))2404 5084 y(\(reverse)h(path\)\)\)\))2482 +5266 y Fl(=)-13 b Fk(\))39 b Fm(\(connect)i(talk1)g(disconnect)2679 +5358 y(connect)f(talk2)h(disconnect\))p eop +%%Page: 35 35 +35 34 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(35)-300 82 y Fu(6.5.)56 b Fc(Eval)-300 404 y Fq(\(eval)42 +b Fw(expr)l(ession)i(envir)l(onment-sp)l(e)l(ci\014er)9 +b Fq(\))254 b Fy(pro)r(cedure)-300 544 y(Ev)-5 b(aluates)29 +b Fw(expr)l(ession)37 b Fy(in)30 b(the)g(sp)r(eci\014ed)g(en)n +(vironmen)n(t)f(and)h(re-)-300 643 y(turns)23 b(its)g(v)-5 +b(alue.)36 b Fw(Expr)l(ession)30 b Fy(m)n(ust)23 b(b)r(e)h(a)f(v)-5 +b(alid)23 b(Sc)n(heme)g(expres-)-300 743 y(sion)33 b(represen)n(ted)g +(as)g(data,)h(and)g Fw(envir)l(onment-sp)l(e)l(ci\014er)43 +b Fy(m)n(ust)-300 843 y(b)r(e)e(a)f(v)-5 b(alue)40 b(returned)g(b)n(y)g +(one)g(of)h(the)g(three)f(pro)r(cedures)f(de-)-300 942 +y(scrib)r(ed)25 b(b)r(elo)n(w.)36 b(Implemen)n(tations)25 +b(ma)n(y)f(extend)h Fq(eval)f Fy(to)h(allo)n(w)-300 1042 +y(non-expression)18 b(programs)g(\(de\014nitions\))j(as)e(the)i +(\014rst)f(argumen)n(t)-300 1141 y(and)39 b(to)f(allo)n(w)g(other)g(v) +-5 b(alues)38 b(as)g(en)n(vironmen)n(ts,)i(with)g(the)f(re-)-300 +1241 y(striction)33 b(that)g Fq(eval)f Fy(is)h(not)g(allo)n(w)n(ed)f +(to)h(create)g(new)g(bindings)-300 1341 y(in)24 b(the)g(en)n(vironmen)n +(ts)e(asso)r(ciated)g(with)i Fq(null-environment)17 b +Fy(or)-300 1440 y Fq(scheme-report-en)o(vir)o(on)o(me)o(nt)p +Fy(.)-143 1588 y Fm(\(eval)40 b('\(*)g(7)g(3\))f +(\(scheme-report-environment)45 b(5\)\))955 1679 y Fl(=)-13 +b Fk(\))78 b Fm(21)-143 1862 y(\(let)40 b(\(\(f)g(\(eval)g('\(lambda)h +(\(f)f(x\))g(\(f)f(x)h(x\)\))445 1953 y(\(null-environment)j(5\)\)\)\)) +-65 2045 y(\(f)d(+)g(10\)\))955 2136 y Fl(=)-13 b Fk(\))78 +b Fm(20)-300 2491 y Fq(\(scheme-report-e)o(nvi)o(ro)o(nm)o(ent)37 +b Fw(version)6 b Fq(\))265 b Fy(pro)r(cedure)-300 2590 +y Fq(\(null-environmen)o(t)38 b Fw(version)6 b Fq(\))657 +b Fy(pro)r(cedure)-300 2730 y Fw(V)-6 b(ersion)32 b Fy(m)n(ust)25 +b(b)r(e)h(the)f(exact)g(in)n(teger)f Fq(5)p Fy(,)h(corresp)r(onding)f +(to)h(this)-300 2830 y(revision)42 b(of)h(the)h(Sc)n(heme)f(rep)r(ort)g +(\(the)h(Revised)1345 2800 y Fr(5)1425 2830 y Fy(Rep)r(ort)f(on)-300 +2930 y(Sc)n(heme\).)35 b Fq(Scheme-report-en)o(vir)o(on)o(men)o(t)15 +b Fy(returns)21 b(a)g(sp)r(eci\014er)-300 3029 y(for)f(an)f(en)n +(vironmen)n(t)h(that)g(is)g(empt)n(y)g(except)g(for)g(all)g(bindings)g +(de-)-300 3129 y(\014ned)g(in)g(this)h(rep)r(ort)e(that)h(are)f(either) +g(required)g(or)g(b)r(oth)i(optional)-300 3228 y(and)h(supp)r(orted)g +(b)n(y)g(the)g(implemen)n(tation.)35 b Fq(Null-environment)-300 +3328 y Fy(returns)23 b(a)g(sp)r(eci\014er)f(for)h(an)g(en)n(vironmen)n +(t)g(that)g(is)g(empt)n(y)h(except)-300 3428 y(for)30 +b(the)i(\(syn)n(tactic\))e(bindings)h(for)g(all)f(syn)n(tactic)g(k)n +(eyw)n(ords)f(de-)-300 3527 y(\014ned)20 b(in)g(this)h(rep)r(ort)e +(that)h(are)f(either)g(required)g(or)g(b)r(oth)i(optional)-300 +3627 y(and)27 b(supp)r(orted)h(b)n(y)f(the)h(implemen)n(tation.)-300 +3767 y(Other)18 b(v)-5 b(alues)18 b(of)h Fw(version)26 +b Fy(can)18 b(b)r(e)h(used)g(to)f(sp)r(ecify)h(en)n(vironmen)n(ts)-300 +3867 y(matc)n(hing)25 b(past)g(revisions)f(of)h(this)h(rep)r(ort,)f +(but)h(their)g(supp)r(ort)f(is)-300 3966 y(not)39 b(required.)70 +b(An)40 b(implemen)n(tation)f(will)g(signal)f(an)h(error)e(if)-300 +4066 y Fw(version)45 b Fy(is)38 b(neither)f Fq(5)g Fy(nor)g(another)g +(v)-5 b(alue)38 b(supp)r(orted)f(b)n(y)g(the)-300 4165 +y(implemen)n(tation.)-300 4305 y(The)e(e\013ect)h(of)e(assigning)g +(\(through)g(the)i(use)f(of)g Fq(eval)p Fy(\))e(a)i(v)-5 +b(ari-)-300 4405 y(able)30 b(b)r(ound)g(in)h(a)f Fq(scheme-report-en)o +(vi)o(ro)o(nme)o(nt)24 b Fy(\(for)30 b(exam-)-300 4505 +y(ple)36 b Fq(car)p Fy(\))e(is)h(unsp)r(eci\014ed.)61 +b(Th)n(us)36 b(the)f(en)n(vironmen)n(ts)g(sp)r(eci\014ed)-300 +4604 y(b)n(y)27 b Fq(scheme-report-env)o(ir)o(onm)o(en)o(t)22 +b Fy(ma)n(y)27 b(b)r(e)h(imm)n(utable.)-300 4852 y Fq +(\(interaction-env)o(iro)o(nm)o(en)o(t)-6 b(\))338 b +Fy(optional)27 b(pro)r(cedure)-300 4992 y(This)22 b(pro)r(cedure)f +(returns)h(a)f(sp)r(eci\014er)h(for)g(the)g(en)n(vironmen)n(t)g(that) +-300 5091 y(con)n(tains)33 b(implementation-de\014ned)h(bindings,)h(t)n +(ypically)e(a)g(su-)-300 5191 y(p)r(erset)27 b(of)g(those)g(listed)g +(in)h(the)f(rep)r(ort.)36 b(The)28 b(in)n(ten)n(t)f(is)g(that)h(this) +-300 5291 y(pro)r(cedure)d(will)h(return)g(the)h(en)n(vironmen)n(t)e +(in)h(whic)n(h)g(the)h(imple-)-300 5390 y(men)n(tation)36 +b(w)n(ould)g(ev)-5 b(aluate)36 b(expressions)e(dynamically)i(t)n(yp)r +(ed)-300 5490 y(b)n(y)27 b(the)h(user.)1933 82 y Fu(6.6.)57 +b(Input)37 b(and)i(output)1933 297 y Fv(6.6.1.)46 b(P)m(orts)1933 +476 y Fy(P)n(orts)29 b(represen)n(t)g(input)i(and)f(output)h(devices.) +45 b(T)-7 b(o)29 b(Sc)n(heme,)i(an)1933 575 y(input)i(p)r(ort)e(is)h(a) +f(Sc)n(heme)g(ob)5 b(ject)32 b(that)g(can)f(deliv)n(er)f(c)n(haracters) +1933 675 y(up)r(on)i(command,)g(while)g(an)g(output)g(p)r(ort)f(is)h(a) +f(Sc)n(heme)g(ob)5 b(ject)1933 774 y(that)28 b(can)f(accept)h(c)n +(haracters.)1933 1029 y Fq(\(call-with-input-)o(fi)o(le)37 +b Fw(string)44 b(pr)l(o)l(c)5 b Fq(\))73 b Fy(library)26 +b(pro)r(cedure)1933 1129 y Fq(\(call-with-output)o(-f)o(ile)37 +b Fw(string)43 b(pr)l(o)l(c)5 b Fq(\))30 b Fy(library)c(pro)r(cedure) +1933 1271 y Fw(String)71 b Fy(should)64 b(b)r(e)g(a)g(string)f(naming)g +(a)h(\014le,)73 b(and)64 b Fw(pr)l(o)l(c)1933 1371 y +Fy(should)41 b(b)r(e)g(a)f(pro)r(cedure)f(that)i(accepts)f(one)g +(argumen)n(t.)75 b(F)-7 b(or)1933 1471 y Fq(call-with-input-f)o(il)o(e) +p Fy(,)28 b(the)33 b(\014le)g(should)f(already)g(exist;)j(for)1933 +1570 y Fq(call-with-output-)o(fi)o(le)p Fy(,)i(the)k(e\013ect)f(is)g +(unsp)r(eci\014ed)h(if)g(the)1933 1670 y(\014le)26 b(already)e(exists.) +36 b(These)26 b(pro)r(cedures)e(call)i Fw(pr)l(o)l(c)31 +b Fy(with)26 b(one)f(ar-)1933 1769 y(gumen)n(t:)45 b(the)33 +b(p)r(ort)e(obtained)h(b)n(y)f(op)r(ening)h(the)g(named)g(\014le)g(for) +1933 1869 y(input)h(or)e(output.)50 b(If)32 b(the)g(\014le)g(cannot)f +(b)r(e)h(op)r(ened,)h(an)e(error)f(is)1933 1969 y(signalled.)35 +b(If)23 b Fw(pr)l(o)l(c)28 b Fy(returns,)c(then)f(the)g(p)r(ort)g(is)g +(closed)f(automati-)1933 2068 y(cally)j(and)h(the)f(v)-5 +b(alue\(s\))26 b(yielded)g(b)n(y)f(the)h Fw(pr)l(o)l(c)31 +b Fy(is\(are\))25 b(returned.)1933 2168 y(If)36 b Fw(pr)l(o)l(c)k +Fy(do)r(es)35 b(not)f(return,)j(then)e(the)h(p)r(ort)e(will)i(not)e(b)r +(e)i(closed)1933 2268 y(automatically)d(unless)h(it)h(is)f(p)r(ossible) +f(to)h(pro)n(v)n(e)f(that)h(the)g(p)r(ort)1933 2367 y(will)28 +b(nev)n(er)f(again)f(b)r(e)i(used)g(for)f(a)g(read)g(or)f(write)i(op)r +(eration.)1933 2510 y Fj(R)l(ationale:)141 b Fl(Because)45 +b(Sc)n(heme's)e(escap)r(e)i(pro)r(cedures)f(ha)n(v)n(e)f(un-)1933 +2609 y(limited)35 b(exten)n(t,)h(it)f(is)g(p)r(ossible)h(to)f(escap)r +(e)g(from)g(the)f(curren)n(t)g(con-)1933 2709 y(tin)n(uation)45 +b(but)g(later)g(to)h(escap)r(e)g(bac)n(k)e(in.)93 b(If)45 +b(implemen)n(tations)1933 2809 y(w)n(ere)j(p)r(ermitted)e(to)h(close)i +(the)e(p)r(ort)g(on)g(an)n(y)f(escap)r(e)i(from)f(the)1933 +2908 y(curren)n(t)d(con)n(tin)n(uation,)50 b(then)44 +b(it)h(w)n(ould)g(b)r(e)g(imp)r(ossible)g(to)g(write)1933 +3008 y(p)r(ortable)e(co)r(de)g(using)g(b)r(oth)f Fm +(call-with-current-continuati)q(on)1933 3107 y Fl(and)26 +b Fm(call-with-input-file)k Fl(or)c Fm(call-with-output-file)p +Fl(.)1933 3365 y Fq(\(input-port?)39 b Fw(obj)12 b Fq(\))1023 +b Fy(pro)r(cedure)1933 3465 y Fq(\(output-port?)38 b +Fw(obj)12 b Fq(\))980 b Fy(pro)r(cedure)1933 3607 y(Returns)32 +b Fq(#t)f Fy(if)h Fw(obj)45 b Fy(is)32 b(an)f(input)i(p)r(ort)e(or)g +(output)h(p)r(ort)g(resp)r(ec-)1933 3707 y(tiv)n(ely)-7 +b(,)28 b(otherwise)e(returns)h Fq(#f)p Fy(.)1933 3965 +y Fq(\(current-input-po)o(rt)-7 b(\))879 b Fy(pro)r(cedure)1933 +4064 y Fq(\(current-output-p)o(or)o(t)-6 b(\))835 b Fy(pro)r(cedure) +1933 4207 y(Returns)28 b(the)g(curren)n(t)e(default)j(input)f(or)f +(output)h(p)r(ort.)1933 4464 y Fq(\(with-input-from-)o(fi)o(le)37 +b Fw(string)44 b(thunk)9 b Fq(\))3361 4564 y Fy(optional)27 +b(pro)r(cedure)1933 4664 y Fq(\(with-output-to-f)o(il)o(e)38 +b Fw(string)43 b(thunk)9 b Fq(\))3361 4763 y Fy(optional)27 +b(pro)r(cedure)1933 4906 y Fw(String)k Fy(should)24 b(b)r(e)g(a)f +(string)h(naming)f(a)g(\014le,)i(and)f Fw(pr)l(o)l(c)29 +b Fy(should)24 b(b)r(e)1933 5005 y(a)d(pro)r(cedure)e(of)i(no)g +(argumen)n(ts.)33 b(F)-7 b(or)20 b Fq(with-input-from-f)o(il)o(e)p +Fy(,)1933 5105 y(the)40 b(\014le)g(should)f(already)f(exist;)46 +b(for)39 b Fq(with-output-to-f)o(il)o(e)p Fy(,)1933 5205 +y(the)45 b(e\013ect)g(is)f(unsp)r(eci\014ed)h(if)g(the)g(\014le)g +(already)e(exists.)87 b(The)1933 5304 y(\014le)46 b(is)f(op)r(ened)g +(for)f(input)i(or)f(output,)50 b(an)44 b(input)i(or)f(output)1933 +5404 y(p)r(ort)39 b(connected)g(to)g(it)h(is)f(made)g(the)g(default)h +(v)-5 b(alue)39 b(returned)1933 5504 y(b)n(y)22 b Fq(current-input-por) +o(t)16 b Fy(or)22 b Fq(current-output-p)o(ort)16 b Fy(\(and)22 +b(is)p eop +%%Page: 36 36 +36 35 bop -300 -125 a Fy(36)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y(used)20 b(b)n(y)g Fq(\(read\))p +Fy(,)f Fq(\(write)41 b Fw(obj)13 b Fq(\))p Fy(,)22 b(and)e(so)f +(forth\),)j(and)e(the)g Fw(thunk)-300 182 y Fy(is)42 +b(called)g(with)h(no)e(argumen)n(ts.)80 b(When)42 b(the)h +Fw(thunk)50 b Fy(returns,)-300 281 y(the)44 b(p)r(ort)f(is)h(closed)e +(and)i(the)g(previous)e(default)i(is)f(restored.)-300 +381 y Fq(With-input-from-)o(fil)o(e)53 b Fy(and)59 b +Fq(with-output-to-fi)o(le)53 b Fy(re-)-300 481 y(turn\(s\))37 +b(the)g(v)-5 b(alue\(s\))36 b(yielded)h(b)n(y)f Fw(thunk)8 +b Fy(.)64 b(If)37 b(an)f(escap)r(e)g(pro-)-300 580 y(cedure)k(is)f +(used)h(to)g(escap)r(e)g(from)f(the)i(con)n(tin)n(uation)e(of)h(these) +-300 680 y(pro)r(cedures,)26 b(their)i(b)r(eha)n(vior)e(is)i(implemen)n +(tation)f(dep)r(enden)n(t.)-300 966 y Fq(\(open-input-file)37 +b Fw(\014lename)6 b Fq(\))659 b Fy(pro)r(cedure)-300 +1115 y(T)-7 b(ak)n(es)23 b(a)g(string)g(naming)g(an)h(existing)f +(\014le)h(and)g(returns)f(an)g(input)-300 1215 y(p)r(ort)32 +b(capable)g(of)h(deliv)n(ering)e(c)n(haracters)f(from)j(the)g(\014le.) +51 b(If)33 b(the)-300 1315 y(\014le)28 b(cannot)f(b)r(e)h(op)r(ened,)g +(an)f(error)f(is)h(signalled.)-300 1601 y Fq(\(open-output-fil)o(e)38 +b Fw(\014lename)6 b Fq(\))615 b Fy(pro)r(cedure)-300 +1750 y(T)-7 b(ak)n(es)38 b(a)h(string)f(naming)h(an)f(output)i(\014le)f +(to)g(b)r(e)h(created)e(and)-300 1850 y(returns)31 b(an)g(output)g(p)r +(ort)h(capable)e(of)h(writing)g(c)n(haracters)e(to)i(a)-300 +1949 y(new)36 b(\014le)h(b)n(y)f(that)h(name.)63 b(If)36 +b(the)h(\014le)g(cannot)f(b)r(e)g(op)r(ened,)j(an)-300 +2049 y(error)d(is)i(signalled.)68 b(If)38 b(a)g(\014le)g(with)h(the)f +(giv)n(en)f(name)h(already)-300 2149 y(exists,)27 b(the)h(e\013ect)g +(is)g(unsp)r(eci\014ed.)-300 2435 y Fq(\(close-input-por)o(t)38 +b Fw(p)l(ort)8 b Fq(\))771 b Fy(pro)r(cedure)-300 2534 +y Fq(\(close-output-po)o(rt)37 b Fw(p)l(ort)8 b Fq(\))728 +b Fy(pro)r(cedure)-300 2684 y(Closes)27 b(the)h(\014le)g(asso)r(ciated) +f(with)h Fw(p)l(ort)9 b Fy(,)28 b(rendering)e(the)j Fw(p)l(ort)36 +b Fy(in-)-300 2783 y(capable)28 b(of)g(deliv)n(ering)g(or)g(accepting)g +(c)n(haracters.)78 b(These)28 b(rou-)-300 2883 y(tines)d(ha)n(v)n(e)f +(no)h(e\013ect)h(if)f(the)h(\014le)f(has)f(already)g(b)r(een)h(closed.) +36 b(The)-300 2983 y(v)-5 b(alue)27 b(returned)h(is)f(unsp)r +(eci\014ed.)-300 3283 y Fv(6.6.2.)46 b(Input)-300 3561 +y Fq(\(read)n(\))1219 b Fy(library)26 b(pro)r(cedure)-300 +3661 y Fq(\(read)42 b Fw(p)l(ort)8 b Fq(\))1024 b Fy(library)26 +b(pro)r(cedure)-300 3810 y Fq(Read)32 b Fy(con)n(v)n(erts)g(external)h +(represen)n(tations)e(of)j(Sc)n(heme)f(ob)5 b(jects)-300 +3910 y(in)n(to)29 b(the)h(ob)5 b(jects)29 b(themselv)n(es.)41 +b(That)29 b(is,)h(it)g(is)f(a)g(parser)f(for)g(the)-300 +4010 y(non)n(terminal)k Fp(h)p Fy(datum)p Fp(i)h Fy(\(see)f(sections)g +(7.1.2)g(and)g(6.3.2\).)50 b Fq(Read)-300 4109 y Fy(returns)23 +b(the)g(next)h(ob)5 b(ject)23 b(parsable)f(from)g(the)i(giv)n(en)f +(input)h Fw(p)l(ort)8 b Fy(,)-300 4209 y(up)r(dating)31 +b Fw(p)l(ort)38 b Fy(to)31 b(p)r(oin)n(t)f(to)g(the)h(\014rst)f(c)n +(haracter)f(past)h(the)h(end)-300 4308 y(of)d(the)g(external)e +(represen)n(tation)g(of)i(the)g(ob)5 b(ject.)-300 4458 +y(If)22 b(an)f(end)h(of)g(\014le)g(is)f(encoun)n(tered)g(in)h(the)g +(input)g(b)r(efore)f(an)n(y)g(c)n(har-)-300 4557 y(acters)29 +b(are)f(found)i(that)g(can)f(b)r(egin)h(an)g(ob)5 b(ject,)29 +b(then)i(an)e(end)h(of)-300 4657 y(\014le)i(ob)5 b(ject)31 +b(is)g(returned.)96 b(The)32 b(p)r(ort)f(remains)f(op)r(en,)j(and)e +(fur-)-300 4757 y(ther)25 b(attempts)g(to)g(read)f(will)i(also)d +(return)i(an)g(end)g(of)g(\014le)g(ob)5 b(ject.)-300 +4856 y(If)35 b(an)f(end)h(of)f(\014le)h(is)f(encoun)n(tered)g(after)g +(the)h(b)r(eginning)g(of)f(an)-300 4956 y(ob)5 b(ject's)22 +b(external)g(represen)n(tation,)g(but)h(the)g(external)e(represen-)-300 +5055 y(tation)k(is)g(incomplete)g(and)g(therefore)f(not)h(parsable,)f +(an)h(error)e(is)-300 5155 y(signalled.)-300 5304 y(The)33 +b Fw(p)l(ort)42 b Fy(argumen)n(t)32 b(ma)n(y)h(b)r(e)h(omitted,)h(in)f +(whic)n(h)f(case)f(it)i(de-)-300 5404 y(faults)25 b(to)f(the)h(v)-5 +b(alue)25 b(returned)f(b)n(y)g Fq(current-input-por)o(t)p +Fy(.)30 b(It)25 b(is)-300 5504 y(an)i(error)f(to)h(read)g(from)g(a)h +(closed)e(p)r(ort.)1933 82 y Fq(\(read-char)l(\))1271 +b Fy(pro)r(cedure)1933 182 y Fq(\(read-char)40 b Fw(p)l(ort)8 +b Fq(\))1076 b Fy(pro)r(cedure)1933 331 y(Returns)31 +b(the)g(next)g(c)n(haracter)e(a)n(v)-5 b(ailable)29 b(from)h(the)h +(input)h Fw(p)l(ort)8 b Fy(,)1933 430 y(up)r(dating)35 +b(the)f Fw(p)l(ort)42 b Fy(to)34 b(p)r(oin)n(t)g(to)g(the)h(follo)n +(wing)e(c)n(haracter.)54 b(If)1933 530 y(no)35 b(more)g(c)n(haracters)e +(are)h(a)n(v)-5 b(ailable,)37 b(an)e(end)g(of)h(\014le)f(ob)5 +b(ject)35 b(is)1933 630 y(returned.)47 b Fw(Port)40 b +Fy(ma)n(y)30 b(b)r(e)i(omitted,)g(in)g(whic)n(h)f(case)f(it)i(defaults) +1933 729 y(to)c(the)g(v)-5 b(alue)27 b(returned)g(b)n(y)h +Fq(current-input-p)o(ort)o Fy(.)1933 1014 y Fq(\(peek-char)l(\))1271 +b Fy(pro)r(cedure)1933 1113 y Fq(\(peek-char)40 b Fw(p)l(ort)8 +b Fq(\))1076 b Fy(pro)r(cedure)1933 1262 y(Returns)31 +b(the)g(next)g(c)n(haracter)e(a)n(v)-5 b(ailable)29 b(from)h(the)h +(input)h Fw(p)l(ort)8 b Fy(,)1933 1362 y Fw(without)33 +b Fy(up)r(dating)g(the)g Fw(p)l(ort)41 b Fy(to)33 b(p)r(oin)n(t)f(to)h +(the)g(follo)n(wing)f(c)n(har-)1933 1462 y(acter.)59 +b(If)35 b(no)g(more)f(c)n(haracters)f(are)h(a)n(v)-5 +b(ailable,)36 b(an)f(end)g(of)g(\014le)1933 1561 y(ob)5 +b(ject)29 b(is)g(returned.)41 b Fw(Port)c Fy(ma)n(y)28 +b(b)r(e)i(omitted,)f(in)h(whic)n(h)f(case)f(it)1933 1661 +y(defaults)g(to)g(the)g(v)-5 b(alue)27 b(returned)g(b)n(y)g +Fq(current-input-por)o(t)p Fy(.)1933 1810 y Fj(Note:)64 +b Fl(The)20 b(v)l(alue)h(returned)e(b)n(y)h(a)g(call)i(to)f +Fm(peek-char)h Fl(is)f(the)f(same)g(as)1933 1909 y(the)i(v)l(alue)g +(that)f(w)n(ould)h(ha)n(v)n(e)g(b)r(een)f(returned)h(b)n(y)f(a)h(call)h +(to)f Fm(read-char)1933 2009 y Fl(with)c(the)g(same)g +Fj(p)l(ort)8 b Fl(.)32 b(The)18 b(only)g(di\013erence)f(is)i(that)e +(the)h(v)n(ery)f(next)g(call)1933 2109 y(to)30 b Fm(read-char)i +Fl(or)e Fm(peek-char)i Fl(on)d(that)h Fj(p)l(ort)38 b +Fl(will)31 b(return)e(the)g(v)l(alue)1933 2208 y(returned)h(b)n(y)g +(the)h(preceding)g(call)h(to)f Fm(peek-char)p Fl(.)52 +b(In)30 b(particular,)k(a)1933 2308 y(call)d(to)f Fm(peek-char)i +Fl(on)d(an)h(in)n(teractiv)n(e)g(p)r(ort)f(will)j(hang)d(w)n(aiting)i +(for)1933 2407 y(input)25 b(whenev)n(er)g(a)h(call)h(to)f +Fm(read-char)i Fl(w)n(ould)e(ha)n(v)n(e)f(h)n(ung.)1933 +2692 y Fq(\(eof-object?)39 b Fw(obj)12 b Fq(\))1023 b +Fy(pro)r(cedure)1933 2841 y(Returns)25 b Fq(#t)f Fy(if)h +Fw(obj)38 b Fy(is)25 b(an)f(end)h(of)g(\014le)g(ob)5 +b(ject,)25 b(otherwise)f(returns)1933 2941 y Fq(#f)p +Fy(.)46 b(The)31 b(precise)g(set)g(of)f(end)i(of)e(\014le)i(ob)5 +b(jects)30 b(will)h(v)-5 b(ary)30 b(among)1933 3040 y(implemen)n +(tations,)e(but)g(in)f(an)n(y)g(case)f(no)h(end)h(of)f(\014le)h(ob)5 +b(ject)27 b(will)1933 3140 y(ev)n(er)g(b)r(e)h(an)f(ob)5 +b(ject)27 b(that)h(can)g(b)r(e)g(read)e(in)i(using)f +Fq(read)p Fy(.)1933 3424 y Fq(\(char-ready?)-5 b(\))1184 +b Fy(pro)r(cedure)1933 3524 y Fq(\(char-ready?)39 b Fw(p)l(ort)8 +b Fq(\))989 b Fy(pro)r(cedure)1933 3673 y(Returns)34 +b Fq(#t)f Fy(if)h(a)f(c)n(haracter)f(is)h(ready)g(on)g(the)h(input)g +Fw(p)l(ort)42 b Fy(and)1933 3773 y(returns)32 b Fq(#f)g +Fy(otherwise.)52 b(If)33 b Fq(char-ready)c Fy(returns)j +Fq(#t)g Fy(then)i(the)1933 3872 y(next)27 b Fq(read-char)d +Fy(op)r(eration)h(on)i(the)g(giv)n(en)f Fw(p)l(ort)35 +b Fy(is)27 b(guaran)n(teed)1933 3972 y(not)f(to)g(hang.)36 +b(If)26 b(the)g Fw(p)l(ort)34 b Fy(is)26 b(at)g(end)g(of)g(\014le)g +(then)h Fq(char-ready?)1933 4071 y Fy(returns)e Fq(#t)p +Fy(.)35 b Fw(Port)e Fy(ma)n(y)24 b(b)r(e)i(omitted,)f(in)h(whic)n(h)f +(case)f(it)h(defaults)1933 4171 y(to)j(the)g(v)-5 b(alue)27 +b(returned)g(b)n(y)h Fq(current-input-p)o(ort)o Fy(.)1933 +4320 y Fj(R)l(ationale:)86 b Fm(Char-ready?)33 b Fl(exists)d(to)h(mak)n +(e)e(it)h(p)r(ossible)h(for)g(a)f(pro-)1933 4420 y(gram)18 +b(to)f(accept)h(c)n(haracters)h(from)e(in)n(teractiv)n(e)h(p)r(orts)g +(without)f(getting)1933 4519 y(stuc)n(k)22 b(w)n(aiting)i(for)g(input.) +32 b(An)n(y)22 b(input)f(editors)j(asso)r(ciated)g(with)f(suc)n(h)1933 +4619 y(p)r(orts)h(m)n(ust)f(ensure)g(that)g(c)n(haracters)i(whose)g +(existence)e(has)h(b)r(een)g(as-)1933 4718 y(serted)29 +b(b)n(y)e Fm(char-ready?)j Fl(cannot)e(b)r(e)g(rubb)r(ed)f(out.)42 +b(If)29 b Fm(char-ready?)1933 4818 y Fl(w)n(ere)37 b(to)f(return)f +Fm(#f)h Fl(at)h(end)e(of)i(\014le,)h(a)f(p)r(ort)f(at)g(end)f(of)i +(\014le)f(w)n(ould)1933 4918 y(b)r(e)24 b(indistinguishable)h(from)f +(an)g(in)n(teractiv)n(e)g(p)r(ort)g(that)f(has)h(no)g(ready)1933 +5017 y(c)n(haracters.)1933 5316 y Fv(6.6.3.)46 b(Output)p +eop +%%Page: 37 37 +37 36 bop 2996 -125 a Fy(6.)64 b(Standard)27 b(pro)r(cedures)82 +b(37)-300 82 y Fq(\(write)41 b Fw(obj)12 b Fq(\))1015 +b Fy(library)26 b(pro)r(cedure)-300 182 y Fq(\(write)41 +b Fw(obj)k(p)l(ort)8 b Fq(\))831 b Fy(library)26 b(pro)r(cedure)-300 +312 y(W)-7 b(rites)35 b(a)g(written)g(represen)n(tation)e(of)i +Fw(obj)48 b Fy(to)35 b(the)g(giv)n(en)g Fw(p)l(ort)8 +b Fy(.)-300 412 y(Strings)33 b(that)h(app)r(ear)f(in)h(the)g(written)g +(represen)n(tation)e(are)h(en-)-300 511 y(closed)26 b(in)h +(doublequotes,)g(and)f(within)i(those)f(strings)f(bac)n(kslash)-300 +611 y(and)42 b(doublequote)g(c)n(haracters)e(are)h(escap)r(ed)h(b)n(y)g +(bac)n(kslashes.)-300 711 y(Character)19 b(ob)5 b(jects)20 +b(are)g(written)h(using)g(the)g Fq(#\\)f Fy(notation.)34 +b Fq(Write)-300 810 y Fy(returns)e(an)g(unsp)r(eci\014ed)g(v)-5 +b(alue.)51 b(The)32 b Fw(p)l(ort)41 b Fy(argumen)n(t)31 +b(ma)n(y)g(b)r(e)-300 910 y(omitted,)c(in)g(whic)n(h)f(case)g(it)g +(defaults)h(to)f(the)h(v)-5 b(alue)26 b(returned)g(b)n(y)-300 +1010 y Fq(current-output-p)o(ort)o Fy(.)-300 1221 y Fq(\(display)40 +b Fw(obj)12 b Fq(\))928 b Fy(library)26 b(pro)r(cedure)-300 +1320 y Fq(\(display)40 b Fw(obj)45 b(p)l(ort)8 b Fq(\))744 +b Fy(library)26 b(pro)r(cedure)-300 1451 y(W)-7 b(rites)34 +b(a)f(represen)n(tation)f(of)h Fw(obj)47 b Fy(to)34 b(the)g(giv)n(en)e +Fw(p)l(ort)8 b Fy(.)55 b(Strings)-300 1550 y(that)27 +b(app)r(ear)f(in)h(the)h(written)f(represen)n(tation)e(are)h(not)g +(enclosed)-300 1650 y(in)47 b(doublequotes,)k(and)c(no)f(c)n(haracters) +f(are)h(escap)r(ed)g(within)-300 1749 y(those)36 b(strings.)61 +b(Character)34 b(ob)5 b(jects)36 b(app)r(ear)f(in)h(the)g(represen-) +-300 1849 y(tation)g(as)g(if)h(written)g(b)n(y)f Fq(write-char)c +Fy(instead)k(of)h(b)n(y)f Fq(write)p Fy(.)-300 1949 y +Fq(Display)26 b Fy(returns)h(an)h(unsp)r(eci\014ed)h(v)-5 +b(alue.)39 b(The)28 b Fw(p)l(ort)37 b Fy(argumen)n(t)-300 +2048 y(ma)n(y)29 b(b)r(e)h(omitted,)h(in)e(whic)n(h)h(case)f(it)h +(defaults)g(to)f(the)h(v)-5 b(alue)30 b(re-)-300 2148 +y(turned)e(b)n(y)f Fq(current-output-p)o(ort)o Fy(.)-300 +2278 y Fj(R)l(ationale:)80 b Fm(Write)30 b Fl(is)f(in)n(tended)f(for)h +(pro)r(ducing)g(mac)n(hine-readable)-300 2378 y(output)i(and)g +Fm(display)j Fl(is)e(for)h(pro)r(ducing)f(h)n(uman-readable)e(output.) +-300 2478 y(Implemen)n(tations)20 b(that)g(allo)n(w)j +(\\slashi\014cation")h(within)e(sym)n(b)r(ols)e(will)-300 +2577 y(probably)j(w)n(an)n(t)f Fm(write)i Fl(but)e(not)h +Fm(display)i Fl(to)e(slashify)h(funn)n(y)e(c)n(harac-)-300 +2677 y(ters)k(in)g(sym)n(b)r(ols.)-300 2888 y Fq(\(newline)m(\))1088 +b Fy(library)26 b(pro)r(cedure)-300 2987 y Fq(\(newline)40 +b Fw(p)l(ort)8 b Fq(\))894 b Fy(library)26 b(pro)r(cedure)-300 +3118 y(W)-7 b(rites)36 b(an)h(end)f(of)h(line)f(to)g +Fw(p)l(ort)9 b Fy(.)63 b(Exactly)35 b(ho)n(w)h(this)h(is)f(done)-300 +3217 y(di\013ers)43 b(from)g(one)f(op)r(erating)h(system)f(to)h +(another.)83 b(Returns)-300 3317 y(an)39 b(unsp)r(eci\014ed)g(v)-5 +b(alue.)70 b(The)39 b Fw(p)l(ort)47 b Fy(argumen)n(t)38 +b(ma)n(y)g(b)r(e)h(omit-)-300 3417 y(ted,)47 b(in)c(whic)n(h)f(case)g +(it)h(defaults)g(to)f(the)h(v)-5 b(alue)43 b(returned)f(b)n(y)-300 +3516 y Fq(current-output-p)o(ort)o Fy(.)-300 3727 y Fq(\(write-char)d +Fw(char)9 b Fq(\))1018 b Fy(pro)r(cedure)-300 3827 y +Fq(\(write-char)39 b Fw(char)45 b(p)l(ort)8 b Fq(\))831 +b Fy(pro)r(cedure)-300 3957 y(W)-7 b(rites)46 b(the)g(c)n(haracter)e +Fw(char)57 b Fy(\(not)46 b(an)g(external)f(represen)n(ta-)-300 +4057 y(tion)c(of)f(the)h(c)n(haracter\))e(to)h(the)h(giv)n(en)f +Fw(p)l(ort)49 b Fy(and)40 b(returns)g(an)-300 4156 y(unsp)r(eci\014ed) +53 b(v)-5 b(alue.)113 b(The)53 b Fw(p)l(ort)61 b Fy(argumen)n(t)52 +b(ma)n(y)g(b)r(e)h(omit-)-300 4256 y(ted,)47 b(in)c(whic)n(h)f(case)g +(it)h(defaults)g(to)f(the)h(v)-5 b(alue)43 b(returned)f(b)n(y)-300 +4356 y Fq(current-output-p)o(ort)o Fy(.)-300 4574 y Fv(6.6.4.)k(System) +30 b(in)m(terface)-300 4740 y Fy(Questions)g(of)h(system)g(in)n +(terface)g(generally)e(fall)i(outside)g(of)g(the)-300 +4840 y(domain)h(of)h(this)f(rep)r(ort.)51 b(Ho)n(w)n(ev)n(er,)32 +b(the)h(follo)n(wing)e(op)r(erations)-300 4940 y(are)c(imp)r(ortan)n(t) +g(enough)g(to)g(deserv)n(e)g(description)g(here.)-300 +5174 y Fq(\(load)42 b Fw(\014lename)6 b Fq(\))815 b Fy(optional)27 +b(pro)r(cedure)-300 5304 y Fw(Filename)41 b Fy(should)34 +b(b)r(e)g(a)f(string)g(naming)h(an)f(existing)h(\014le)g(con-)-300 +5404 y(taining)23 b(Sc)n(heme)g(source)f(co)r(de.)35 +b(The)23 b Fq(load)f Fy(pro)r(cedure)g(reads)g(ex-)-300 +5504 y(pressions)28 b(and)i(de\014nitions)g(from)f(the)h(\014le)g(and)f +(ev)-5 b(aluates)29 b(them)1933 82 y(sequen)n(tially)-7 +b(.)64 b(It)37 b(is)g(unsp)r(eci\014ed)h(whether)e(the)i(results)e(of)h +(the)1933 182 y(expressions)43 b(are)g(prin)n(ted.)87 +b(The)45 b Fq(load)e Fy(pro)r(cedure)g(do)r(es)h(not)1933 +281 y(a\013ect)g(the)g(v)-5 b(alues)43 b(returned)h(b)n(y)f +Fq(current-input-po)o(rt)37 b Fy(and)1933 381 y Fq(current-output-po)o +(rt)o Fy(.)30 b Fq(Load)21 b Fy(returns)h(an)h(unsp)r(eci\014ed)g(v)-5 +b(alue.)1933 522 y Fj(R)l(ationale:)78 b Fl(F)-6 b(or)28 +b(p)r(ortabilit)n(y)-6 b(,)29 b Fm(load)g Fl(m)n(ust)d(op)r(erate)j(on) +f(source)g(\014les.)1933 622 y(Its)35 b(op)r(eration)g(on)f(other)h +(kinds)f(of)h(\014les)g(necessarily)g(v)l(aries)g(among)1933 +721 y(implemen)n(tations.)1933 973 y Fq(\(transcript-on)j +Fw(\014lename)6 b Fq(\))423 b Fy(optional)27 b(pro)r(cedure)1933 +1073 y Fq(\(transcript-off)-6 b(\))730 b Fy(optional)27 +b(pro)r(cedure)1933 1214 y Fw(Filename)k Fy(m)n(ust)23 +b(b)r(e)h(a)f(string)f(naming)h(an)g(output)h(\014le)f(to)g(b)r(e)h +(cre-)1933 1314 y(ated.)49 b(The)32 b(e\013ect)g(of)g +Fq(transcript-on)26 b Fy(is)32 b(to)f(op)r(en)h(the)g(named)1933 +1413 y(\014le)41 b(for)g(output,)j(and)d(to)g(cause)f(a)h(transcript)f +(of)g(subsequen)n(t)1933 1513 y(in)n(teraction)g(b)r(et)n(w)n(een)g +(the)g(user)g(and)g(the)g(Sc)n(heme)g(system)g(to)1933 +1613 y(b)r(e)d(written)f(to)f(the)i(\014le.)62 b(The)36 +b(transcript)f(is)g(ended)h(b)n(y)g(a)g(call)1933 1712 +y(to)29 b Fq(transcript-off)p Fy(,)22 b(whic)n(h)29 b(closes)e(the)i +(transcript)e(\014le.)39 b(Only)1933 1812 y(one)20 b(transcript)f(ma)n +(y)h(b)r(e)g(in)h(progress)c(at)j(an)n(y)g(time,)i(though)e(some)1933 +1912 y(implemen)n(tations)26 b(ma)n(y)g(relax)f(this)h(restriction.)36 +b(The)26 b(v)-5 b(alues)26 b(re-)1933 2011 y(turned)i(b)n(y)f(these)h +(pro)r(cedures)e(are)h(unsp)r(eci\014ed.)p eop +%%Page: 38 38 +38 37 bop -300 -125 a Fy(38)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fu(7.)162 b(F)-9 b(ormal)36 +b(syn)m(tax)i(and)h(seman)m(tics)-300 224 y Fy(This)32 +b(c)n(hapter)e(pro)n(vides)h(formal)f(descriptions)h(of)h(what)f(has)h +(al-)-300 324 y(ready)18 b(b)r(een)i(describ)r(ed)f(informally)g(in)g +(previous)f(c)n(hapters)g(of)i(this)-300 424 y(rep)r(ort.)-300 +710 y Fu(7.1.)56 b(F)-9 b(ormal)37 b(syn)m(tax)-300 925 +y Fy(This)31 b(section)g(pro)n(vides)f(a)h(formal)g(syn)n(tax)f(for)h +(Sc)n(heme)h(written)-300 1024 y(in)c(an)f(extended)h(BNF.)-300 +1166 y(All)19 b(spaces)f(in)i(the)f(grammar)e(are)h(for)g(legibilit)n +(y)-7 b(.)34 b(Case)18 b(is)h(insignif-)-300 1266 y(ican)n(t;)26 +b(for)e(example,)i Fq(#x1A)d Fy(and)i Fq(#X1a)f Fy(are)g(equiv)-5 +b(alen)n(t.)36 b Fp(h)p Fy(empt)n(y)p Fp(i)-300 1366 +y Fy(stands)27 b(for)g(the)h(empt)n(y)g(string.)-300 +1508 y(The)e(follo)n(wing)f(extensions)g(to)h(BNF)g(are)f(used)h(to)g +(mak)n(e)f(the)h(de-)-300 1608 y(scription)c(more)f(concise:)33 +b Fp(h)p Fy(thing)p Fp(i)q Fy(*)22 b(means)f(zero)g(or)h(more)f(o)r +(ccur-)-300 1707 y(rences)k(of)g Fp(h)p Fy(thing)p Fp(i)q +Fy(;)i(and)e Fp(h)p Fy(thing)p Fp(i)757 1677 y Fr(+)838 +1707 y Fy(means)g(at)g(least)h(one)f Fp(h)p Fy(thing)p +Fp(i)q Fy(.)-300 1968 y Fv(7.1.1.)46 b(Lexical)32 b(structure)-300 +2147 y Fy(This)37 b(section)g(describ)r(es)g(ho)n(w)f(individual)i(tok) +n(ens)e(\(iden)n(ti\014ers,)-300 2246 y(n)n(um)n(b)r(ers,)h(etc.\))62 +b(are)35 b(formed)h(from)f(sequences)g(of)h(c)n(haracters.)-300 +2346 y(The)e(follo)n(wing)e(sections)h(describ)r(e)g(ho)n(w)g +(expressions)f(and)h(pro-)-300 2446 y(grams)26 b(are)h(formed)g(from)g +(sequences)g(of)h(tok)n(ens.)-300 2588 y Fp(h)p Fy(In)n(tertok)n(en)f +(space)p Fp(i)j Fy(ma)n(y)h(o)r(ccur)f(on)h(either)f(side)h(of)g(an)n +(y)f(tok)n(en,)-300 2688 y(but)e(not)g(within)g(a)f(tok)n(en.)-300 +2830 y(T)-7 b(ok)n(ens)56 b(whic)n(h)h(require)f(implicit)h +(termination)g(\(iden)n(ti\014ers,)-300 2929 y(n)n(um)n(b)r(ers,)31 +b(c)n(haracters,)f(and)h(dot\))g(ma)n(y)f(b)r(e)i(terminated)f(b)n(y)g +(an)n(y)-300 3029 y Fp(h)p Fy(delimiter)p Fp(i)q Fy(,)c(but)i(not)e +(necessarily)f(b)n(y)h(an)n(ything)g(else.)-300 3171 +y(The)e(follo)n(wing)f(\014v)n(e)h(c)n(haracters)e(are)h(reserv)n(ed)f +(for)i(future)g(exten-)-300 3271 y(sions)i(to)g(the)h(language:)36 +b Fq([)43 b(])g({)g(})g(|)-300 3432 y Fp(h)p Fy(tok)n(en)p +Fp(i)g(\000)-14 b(!)44 b(h)p Fy(iden)n(ti\014er)p Fp(i)g(j)f(h)p +Fy(b)r(o)r(olean)p Fp(i)h(j)g(h)p Fy(n)n(um)n(b)r(er)p +Fp(i)-126 3531 y(j)g(h)p Fy(c)n(haracter)p Fp(i)e(j)i(h)p +Fy(string)p Fp(i)-126 3631 y(j)g Fq(\()f Fp(j)h Fq(\))f +Fp(j)h Fq(#\()e Fp(j)i Fq(')f Fp(j)h Fq(\022)f Fp(j)h +Fq(,)f Fp(j)h Fq(,@)e Fp(j)i Fv(.)-300 3731 y Fp(h)p +Fy(delimiter)p Fp(i)g(\000)-14 b(!)44 b(h)p Fy(whitespace)p +Fp(i)f(j)h Fq(\()f Fp(j)h Fq(\))f Fp(j)h Fq(")f Fp(j)g +Fq(;)-300 3830 y Fp(h)p Fy(whitespace)p Fp(i)h(\000)-15 +b(!)44 b(h)p Fy(space)27 b(or)g(newline)p Fp(i)-300 3930 +y(h)p Fy(commen)n(t)p Fp(i)44 b(\000)-14 b(!)43 b Fq(;)g +Fp(h)p Fy(all)28 b(subsequen)n(t)f(c)n(haracters)f(up)i(to)f(a)446 +4029 y(line)h(break)p Fp(i)-300 4129 y(h)p Fy(atmosphere)p +Fp(i)43 b(\000)-14 b(!)43 b(h)p Fy(whitespace)p Fp(i)h(j)g(h)p +Fy(commen)n(t)p Fp(i)-300 4229 y(h)p Fy(in)n(tertok)n(en)27 +b(space)p Fp(i)43 b(\000)-14 b(!)43 b(h)p Fy(atmosphere)p +Fp(i)p Fy(*)-300 4408 y Fp(h)p Fy(iden)n(ti\014er)p Fp(i)h(\000)-14 +b(!)43 b(h)p Fy(initial)p Fp(i)i(h)p Fy(subsequen)n(t)p +Fp(i)p Fy(*)-126 4507 y Fp(j)f(h)p Fy(p)r(eculiar)27 +b(iden)n(ti\014er)p Fp(i)-300 4607 y(h)p Fy(initial)p +Fp(i)44 b(\000)-14 b(!)44 b(h)p Fy(letter)p Fp(i)g(j)f(h)p +Fy(sp)r(ecial)28 b(initial)p Fp(i)-300 4707 y(h)p Fy(letter)p +Fp(i)44 b(\000)-14 b(!)43 b Fq(a)h Fp(j)f Fq(b)g Fp(j)h +Fq(c)f Fp(j)h Fq(...)e Fp(j)i Fq(z)-300 4906 y Fp(h)p +Fy(sp)r(ecial)28 b(initial)p Fp(i)44 b(\000)-15 b(!)44 +b Fq(!)f Fp(j)h Fq($)f Fp(j)h Fq(\045)f Fp(j)g Fq(&)h +Fp(j)f Fq(*)g Fp(j)h Fq(/)f Fp(j)h Fq(:)f Fp(j)h Fq(<)f +Fp(j)h Fq(=)-126 5005 y Fp(j)g Fq(>)f Fp(j)h Fq(?)f Fp(j)h +Fq(^)f Fp(j)g Fq(_)h Fp(j)f Fq(~)-300 5105 y Fp(h)p Fy(subsequen)n(t)p +Fp(i)h(\000)-15 b(!)44 b(h)p Fy(initial)p Fp(i)g(j)g(h)p +Fy(digit)p Fp(i)-126 5205 y(j)g(h)p Fy(sp)r(ecial)28 +b(subsequen)n(t)p Fp(i)-300 5304 y(h)p Fy(digit)p Fp(i)44 +b(\000)-14 b(!)44 b Fq(0)f Fp(j)g Fq(1)h Fp(j)f Fq(2)g +Fp(j)h Fq(3)f Fp(j)h Fq(4)f Fp(j)h Fq(5)f Fp(j)g Fq(6)h +Fp(j)f Fq(7)g Fp(j)h Fq(8)f Fp(j)h Fq(9)-300 5404 y Fp(h)p +Fy(sp)r(ecial)28 b(subsequen)n(t)p Fp(i)43 b(\000)-14 +b(!)43 b Fq(+)h Fp(j)f Fq(-)g Fp(j)h Fq(.)f Fp(j)h Fq(@)-300 +5504 y Fp(h)p Fy(p)r(eculiar)27 b(iden)n(ti\014er)p Fp(i)44 +b(\000)-14 b(!)43 b Fq(+)h Fp(j)f Fq(-)g Fp(j)h Fq(...)1933 +82 y Fp(h)p Fy(syn)n(tactic)28 b(k)n(eyw)n(ord)p Fp(i)41 +b(\000)-14 b(!)44 b(h)p Fy(expression)26 b(k)n(eyw)n(ord)p +Fp(i)2108 182 y(j)43 b Fq(else)f Fp(j)i Fq(=>)f Fp(j)g +Fq(define)2108 281 y Fp(j)g Fq(unquote)e Fp(j)j Fq(unquote-splicin)o(g) +1933 381 y Fp(h)p Fy(expression)27 b(k)n(eyw)n(ord)p +Fp(i)42 b(\000)-15 b(!)44 b Fq(quote)d Fp(j)j Fq(lambda)d +Fp(j)j Fq(if)2108 481 y Fp(j)f Fq(set!)f Fp(j)i Fq(begin)d +Fp(j)j Fq(cond)e Fp(j)i Fq(and)e Fp(j)i Fq(or)e Fp(j)i +Fq(case)2108 580 y Fp(j)f Fq(let)g Fp(j)g Fq(let*)f Fp(j)i +Fq(letrec)d Fp(j)j Fq(do)e Fp(j)i Fq(delay)2108 680 y +Fp(j)f Fq(quasiquote)1933 879 y Fp(h)p Fy(v)-5 b(ariable)p +Fp(i)43 b(\000)-14 b(!)44 b(h)p Fy(an)n(y)27 b Fp(h)p +Fy(iden)n(ti\014er)p Fp(i)h Fy(that)g(isn't)2579 979 +y(also)e(a)h Fp(h)p Fy(syn)n(tactic)h(k)n(eyw)n(ord)p +Fp(i)n(i)1933 1178 y(h)p Fy(b)r(o)r(olean)p Fp(i)44 b(\000)-14 +b(!)43 b Fq(#t)g Fp(j)h Fq(#f)1933 1278 y Fp(h)p Fy(c)n(haracter)p +Fp(i)e(\000)-14 b(!)44 b Fq(#\\)e Fp(h)p Fy(an)n(y)28 +b(c)n(haracter)p Fp(i)2108 1377 y(j)43 b Fq(#\\)g Fp(h)p +Fy(c)n(haracter)26 b(name)p Fp(i)1933 1477 y(h)p Fy(c)n(haracter)g +(name)p Fp(i)44 b(\000)-15 b(!)44 b Fq(space)e Fp(j)h +Fq(newline)1933 1676 y Fp(h)p Fy(string)p Fp(i)h(\000)-15 +b(!)44 b Fq(")f Fp(h)p Fy(string)27 b(elemen)n(t)p Fp(i)q +Fy(*)43 b Fq(")1933 1776 y Fp(h)p Fy(string)27 b(elemen)n(t)p +Fp(i)44 b(\000)-14 b(!)44 b(h)p Fy(an)n(y)27 b(c)n(haracter)e(other)i +(than)h Fq(")f Fy(or)g Fq(\\)p Fp(i)2108 1875 y(j)43 +b Fq(\\")g Fp(j)h Fq(\\\\)1933 2047 y Fp(h)p Fy(n)n(um)n(b)r(er)p +Fp(i)g(\000)-14 b(!)43 b(h)p Fy(n)n(um)29 b(2)p Fp(i)o(j)44 +b(h)p Fy(n)n(um)28 b(8)p Fp(i)2108 2147 y(j)43 b(h)p +Fy(n)n(um)28 b(10)p Fp(ij)43 b(h)p Fy(n)n(um)28 b(16)p +Fp(i)1933 2402 y Fy(The)40 b(follo)n(wing)f(rules)g(for)g +Fp(h)p Fy(n)n(um)28 b Fo(R)q Fp(i)p Fy(,)43 b Fp(h)p +Fy(complex)27 b Fo(R)q Fp(i)p Fy(,)43 b Fp(h)p Fy(real)27 +b Fo(R)q Fp(i)p Fy(,)1933 2502 y Fp(h)p Fy(ureal)g Fo(R)q +Fp(i)p Fy(,)48 b Fp(h)p Fy(uin)n(teger)28 b Fo(R)q Fp(i)o +Fy(,)49 b(and)43 b Fp(h)p Fy(pre\014x)28 b Fo(R)q Fp(i)44 +b Fy(should)f(b)r(e)i(repli-)1933 2602 y(cated)h(for)f +Fo(R)24 b Fy(=)e(2)p Fo(;)14 b Fy(8)p Fo(;)g Fy(10)p +Fo(;)44 b Fy(and)h(16.)90 b(There)46 b(are)e(no)i(rules)f(for)1933 +2701 y Fp(h)p Fy(decimal)28 b(2)p Fp(i)p Fy(,)40 b Fp(h)p +Fy(decimal)28 b(8)p Fp(i)p Fy(,)40 b(and)e Fp(h)p Fy(decimal)27 +b(16)p Fp(i)p Fy(,)40 b(whic)n(h)e(means)1933 2801 y(that)23 +b(n)n(um)n(b)r(ers)g(con)n(taining)e(decimal)i(p)r(oin)n(ts)g(or)f(exp) +r(onen)n(ts)g(m)n(ust)1933 2900 y(b)r(e)28 b(in)g(decimal)g(radix.)1933 +3056 y Fp(h)p Fy(n)n(um)g Fo(R)q Fp(i)44 b(\000)-14 b(!)43 +b(h)p Fy(pre\014x)28 b Fo(R)q Fp(i)43 b(h)p Fy(complex)28 +b Fo(R)q Fp(i)1933 3156 y(h)p Fy(complex)g Fo(R)q Fp(i)43 +b(\000)-14 b(!)44 b(h)p Fy(real)27 b Fo(R)q Fp(i)43 b(j)h(h)p +Fy(real)27 b Fo(R)q Fp(i)43 b Fq(@)g Fp(h)p Fy(real)27 +b Fo(R)q Fp(i)2108 3256 y(j)43 b(h)p Fy(real)27 b Fo(R)q +Fp(i)44 b Fq(+)f Fp(h)p Fy(ureal)27 b Fo(R)q Fp(i)44 +b Fq(i)f Fp(j)g(h)p Fy(real)27 b Fo(R)q Fp(i)44 b Fq(-)f +Fp(h)p Fy(ureal)27 b Fo(R)q Fp(i)44 b Fq(i)2108 3355 +y Fp(j)f(h)p Fy(real)27 b Fo(R)q Fp(i)44 b Fq(+)f(i)g +Fp(j)h(h)p Fy(real)27 b Fo(R)q Fp(i)43 b Fq(-)g(i)2108 +3455 y Fp(j)g Fq(+)g Fp(h)p Fy(ureal)28 b Fo(R)q Fp(i)43 +b Fq(i)g Fp(j)h Fq(-)f Fp(h)p Fy(ureal)27 b Fo(R)q Fp(i)44 +b Fq(i)f Fp(j)h Fq(+)f(i)g Fp(j)h Fq(-)f(i)1933 3554 +y Fp(h)p Fy(real)27 b Fo(R)q Fp(i)44 b(\000)-14 b(!)43 +b(h)p Fy(sign)p Fp(i)h(h)p Fy(ureal)27 b Fo(R)q Fp(i)1933 +3654 y(h)p Fy(ureal)g Fo(R)q Fp(i)44 b(\000)-14 b(!)43 +b(h)p Fy(uin)n(teger)27 b Fo(R)q Fp(i)2108 3754 y(j)43 +b(h)p Fy(uin)n(teger)27 b Fo(R)q Fp(i)44 b Fq(/)f Fp(h)p +Fy(uin)n(teger)27 b Fo(R)q Fp(i)2108 3853 y(j)43 b(h)p +Fy(decimal)28 b Fo(R)q Fp(i)1933 3953 y(h)p Fy(decimal)g(10)p +Fp(i)43 b(\000)-14 b(!)43 b(h)p Fy(uin)n(teger)27 b(10)p +Fp(i)43 b(h)p Fy(su\016x)p Fp(i)2108 4053 y(j)g Fq(.)g +Fp(h)p Fy(digit)28 b(10)p Fp(i)2603 4022 y Fr(+)2701 +4053 y Fq(#)p Fy(*)43 b Fp(h)p Fy(su\016x)p Fp(i)2108 +4152 y(j)g(h)p Fy(digit)28 b(10)p Fp(i)2516 4122 y Fr(+)2614 +4152 y Fq(.)43 b Fp(h)p Fy(digit)28 b(10)p Fp(i)p Fy(*)43 +b Fq(#)p Fy(*)g Fp(h)p Fy(su\016x)p Fp(i)2108 4252 y(j)g(h)p +Fy(digit)28 b(10)p Fp(i)2516 4222 y Fr(+)2614 4252 y +Fq(#)2658 4222 y Fr(+)2757 4252 y Fq(.)43 b(#)p Fy(*)f +Fp(h)p Fy(su\016x)p Fp(i)1933 4351 y(h)p Fy(uin)n(teger)27 +b Fo(R)q Fp(i)44 b(\000)-14 b(!)43 b(h)p Fy(digit)28 +b Fo(R)q Fp(i)2925 4321 y Fr(+)3024 4351 y Fq(#)p Fy(*)1933 +4451 y Fp(h)p Fy(pre\014x)g Fo(R)q Fp(i)43 b(\000)-14 +b(!)44 b(h)p Fy(radix)27 b Fo(R)q Fp(i)43 b(h)p Fy(exactness)p +Fp(i)2108 4551 y(j)g(h)p Fy(exactness)p Fp(i)g(h)p Fy(radix)27 +b Fo(R)q Fp(i)1933 4806 y(h)p Fy(su\016x)p Fp(i)44 b(\000)-14 +b(!)44 b(h)p Fy(empt)n(y)p Fp(i)2108 4906 y(j)f(h)p Fy(exp)r(onen)n(t) +28 b(mark)n(er)p Fp(i)42 b(h)p Fy(sign)p Fp(i)i(h)p Fy(digit)28 +b(10)p Fp(i)3487 4876 y Fr(+)1933 5005 y Fp(h)p Fy(exp)r(onen)n(t)g +(mark)n(er)p Fp(i)42 b(\000)-14 b(!)43 b Fq(e)h Fp(j)f +Fq(s)g Fp(j)h Fq(f)f Fp(j)h Fq(d)f Fp(j)h Fq(l)1933 5105 +y Fp(h)p Fy(sign)p Fp(i)g(\000)-14 b(!)43 b(h)p Fy(empt)n(y)p +Fp(i)h(j)g Fq(+)f Fp(j)h Fq(-)1933 5205 y Fp(h)p Fy(exactness)p +Fp(i)f(\000)-14 b(!)44 b(h)p Fy(empt)n(y)p Fp(i)g(j)g +Fq(#i)e Fp(j)i Fq(#e)1933 5304 y Fp(h)p Fy(radix)27 b(2)p +Fp(i)44 b(\000)-15 b(!)44 b Fq(#b)1933 5404 y Fp(h)p +Fy(radix)27 b(8)p Fp(i)44 b(\000)-15 b(!)44 b Fq(#o)1933 +5504 y Fp(h)p Fy(radix)27 b(10)p Fp(i)43 b(\000)-14 b(!)44 +b(h)p Fy(empt)n(y)p Fp(i)g(j)f Fq(#d)p eop +%%Page: 39 39 +39 38 bop 2697 -125 a Fy(7.)55 b(F)-7 b(ormal)27 b(syn)n(tax)f(and)i +(seman)n(tics)82 b(39)-300 82 y Fp(h)p Fy(radix)27 b(16)p +Fp(i)43 b(\000)-14 b(!)43 b Fq(#x)-300 182 y Fp(h)p Fy(digit)28 +b(2)p Fp(i)43 b(\000)-14 b(!)44 b Fq(0)f Fp(j)h Fq(1)-300 +281 y Fp(h)p Fy(digit)28 b(8)p Fp(i)43 b(\000)-14 b(!)44 +b Fq(0)f Fp(j)h Fq(1)f Fp(j)g Fq(2)h Fp(j)f Fq(3)g Fp(j)h +Fq(4)f Fp(j)h Fq(5)f Fp(j)h Fq(6)f Fp(j)g Fq(7)-300 381 +y Fp(h)p Fy(digit)28 b(10)p Fp(i)43 b(\000)-14 b(!)43 +b(h)p Fy(digit)p Fp(i)-300 481 y(h)p Fy(digit)28 b(16)p +Fp(i)43 b(\000)-14 b(!)43 b(h)p Fy(digit)28 b(10)p Fp(i)43 +b(j)h Fq(a)f Fp(j)h Fq(b)f Fp(j)g Fq(c)h Fp(j)f Fq(d)g +Fp(j)h Fq(e)f Fp(j)h Fq(f)-300 741 y Fv(7.1.2.)i(External)32 +b(represen)m(tations)-300 919 y Fp(h)p Fy(Datum)p Fp(i)k +Fy(is)f(what)g(the)g Fq(read)f Fy(pro)r(cedure)g(\(section)g(6.6.2\))g +(suc-)-300 1019 y(cessfully)j(parses.)64 b(Note)37 b(that)h(an)n(y)e +(string)g(that)i(parses)e(as)g(an)-300 1119 y Fp(h)p +Fy(expression)p Fp(i)27 b Fy(will)h(also)e(parse)g(as)h(a)h +Fp(h)p Fy(datum)p Fp(i)p Fy(.)-300 1279 y Fp(h)p Fy(datum)p +Fp(i)44 b(\000)-14 b(!)44 b(h)p Fy(simple)28 b(datum)p +Fp(i)44 b(j)g(h)p Fy(comp)r(ound)27 b(datum)p Fp(i)-300 +1379 y(h)p Fy(simple)h(datum)p Fp(i)44 b(\000)-14 b(!)43 +b(h)p Fy(b)r(o)r(olean)p Fp(i)h(j)g(h)p Fy(n)n(um)n(b)r(er)p +Fp(i)-126 1478 y(j)g(h)p Fy(c)n(haracter)p Fp(i)e(j)i(h)p +Fy(string)p Fp(i)f(j)h(h)p Fy(sym)n(b)r(ol)p Fp(i)-300 +1578 y(h)p Fy(sym)n(b)r(ol)p Fp(i)g(\000)-15 b(!)44 b(h)p +Fy(iden)n(ti\014er)p Fp(i)-300 1677 y(h)p Fy(comp)r(ound)28 +b(datum)p Fp(i)44 b(\000)-14 b(!)43 b(h)p Fy(list)p Fp(i)i(j)e(h)p +Fy(v)n(ector)p Fp(i)-300 1777 y(h)p Fy(list)p Fp(i)h(\000)-14 +b(!)44 b Fq(\()p Fp(h)p Fy(datum)p Fp(i)p Fy(*)p Fq(\))f +Fp(j)g Fq(\()p Fp(h)p Fy(datum)p Fp(i)979 1747 y Fr(+)1077 +1777 y Fq(.)h Fp(h)p Fy(datum)p Fp(i)p Fq(\))-126 1877 +y Fp(j)g(h)p Fy(abbreviation)p Fp(i)-300 1976 y(h)p Fy(abbreviation)p +Fp(i)f(\000)-15 b(!)44 b(h)p Fy(abbrev)27 b(pre\014x)p +Fp(i)43 b(h)p Fy(datum)p Fp(i)-300 2076 y(h)p Fy(abbrev)27 +b(pre\014x)p Fp(i)43 b(\000)-14 b(!)44 b Fq(')f Fp(j)g +Fq(\022)h Fp(j)f Fq(,)g Fp(j)h Fq(,@)-300 2176 y Fp(h)p +Fy(v)n(ector)p Fp(i)f(\000)-14 b(!)43 b Fq(#\()p Fp(h)p +Fy(datum)p Fp(i)p Fy(*)p Fq(\))-300 2436 y Fv(7.1.3.)j(Expressions)-300 +2614 y Fp(h)p Fy(expression)p Fp(i)d(\000)-15 b(!)44 +b(h)p Fy(v)-5 b(ariable)p Fp(i)-126 2714 y(j)44 b(h)p +Fy(literal)p Fp(i)-126 2814 y(j)g(h)p Fy(pro)r(cedure)27 +b(call)p Fp(i)-126 2913 y(j)44 b(h)p Fy(lam)n(b)r(da)27 +b(expression)p Fp(i)-126 3013 y(j)44 b(h)p Fy(conditional)p +Fp(i)-126 3112 y(j)g(h)p Fy(assignmen)n(t)p Fp(i)-126 +3212 y(j)g(h)p Fy(deriv)n(ed)27 b(expression)p Fp(i)-126 +3312 y(j)44 b(h)p Fy(macro)27 b(use)p Fp(i)-126 3411 +y(j)44 b(h)p Fy(macro)27 b(blo)r(c)n(k)p Fp(i)-300 3611 +y(h)p Fy(literal)p Fp(i)44 b(\000)-15 b(!)44 b(h)p Fy(quotation)p +Fp(i)f(j)h(h)p Fy(self-ev)-5 b(aluating)p Fp(i)-300 3710 +y(h)p Fy(self-ev)g(aluating)p Fp(i)43 b(\000)-14 b(!)44 +b(h)p Fy(b)r(o)r(olean)p Fp(i)f(j)h(h)p Fy(n)n(um)n(b)r(er)p +Fp(i)-126 3810 y(j)g(h)p Fy(c)n(haracter)p Fp(i)e(j)i(h)p +Fy(string)p Fp(i)-300 3909 y(h)p Fy(quotation)p Fp(i)f(\000)-14 +b(!)44 b Fq(')p Fp(h)p Fy(datum)p Fp(i)g(j)f Fq(\(quote)e +Fp(h)p Fy(datum)p Fp(i)q Fq(\))-300 4009 y Fp(h)p Fy(pro)r(cedure)27 +b(call)p Fp(i)43 b(\000)-14 b(!)44 b Fq(\()p Fp(h)p Fy(op)r(erator)p +Fp(i)e(h)p Fy(op)r(erand)p Fp(i)o Fy(*)p Fq(\))-300 4109 +y Fp(h)p Fy(op)r(erator)p Fp(i)g(\000)-14 b(!)44 b(h)p +Fy(expression)p Fp(i)-300 4208 y(h)p Fy(op)r(erand)p +Fp(i)f(\000)-14 b(!)44 b(h)p Fy(expression)p Fp(i)-300 +4408 y(h)p Fy(lam)n(b)r(da)27 b(expression)p Fp(i)43 +b(\000)-14 b(!)43 b Fq(\(lambda)e Fp(h)p Fy(formals)p +Fp(i)i(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))-300 4507 y Fp(h)p +Fy(formals)p Fp(i)g(\000)-14 b(!)43 b Fq(\()p Fp(h)p +Fy(v)-5 b(ariable)p Fp(i)o Fy(*)p Fq(\))43 b Fp(j)h(h)p +Fy(v)-5 b(ariable)p Fp(i)-126 4607 y(j)44 b Fq(\()p Fp(h)p +Fy(v)-5 b(ariable)p Fp(i)333 4577 y Fr(+)432 4607 y Fq(.)43 +b Fp(h)p Fy(v)-5 b(ariable)p Fp(i)o Fq(\))-300 4707 y +Fp(h)p Fy(b)r(o)r(dy)p Fp(i)44 b(\000)-14 b(!)44 b(h)p +Fy(de\014nition)p Fp(i)q Fy(*)f Fp(h)p Fy(sequence)p +Fp(i)-300 4806 y(h)p Fy(sequence)p Fp(i)h(\000)-15 b(!)44 +b(h)p Fy(command)p Fp(i)p Fy(*)f Fp(h)p Fy(expression)p +Fp(i)-300 4906 y(h)p Fy(command)p Fp(i)h(\000)-15 b(!)44 +b(h)p Fy(expression)p Fp(i)-300 5105 y(h)p Fy(conditional)p +Fp(i)f(\000)-14 b(!)44 b Fq(\(if)e Fp(h)p Fy(test)p Fp(i)j(h)p +Fy(consequen)n(t)p Fp(i)e(h)p Fy(alternate)p Fp(i)o Fq(\))-300 +5205 y Fp(h)p Fy(test)p Fp(i)h(\000)-14 b(!)44 b(h)p +Fy(expression)p Fp(i)-300 5304 y(h)p Fy(consequen)n(t)p +Fp(i)f(\000)-14 b(!)44 b(h)p Fy(expression)p Fp(i)-300 +5404 y(h)p Fy(alternate)p Fp(i)f(\000)-14 b(!)44 b(h)p +Fy(expression)p Fp(i)e(j)i(h)p Fy(empt)n(y)p Fp(i)1933 +82 y(h)p Fy(assignmen)n(t)p Fp(i)f(\000)-14 b(!)44 b +Fq(\(set!)d Fp(h)p Fy(v)-5 b(ariable)p Fp(i)43 b(h)p +Fy(expression)p Fp(i)o Fq(\))1933 281 y Fp(h)p Fy(deriv)n(ed)27 +b(expression)p Fp(i)43 b(\000)-15 b(!)2174 381 y Fq(\(cond)42 +b Fp(h)p Fy(cond)27 b(clause)p Fp(i)2916 351 y Fr(+)2971 +381 y Fq(\))2108 481 y Fp(j)43 b Fq(\(cond)f Fp(h)p Fy(cond)27 +b(clause)p Fp(i)p Fy(*)43 b Fq(\(else)f Fp(h)p Fy(sequence)p +Fp(i)p Fq(\)\))2108 580 y Fp(j)h Fq(\(case)f Fp(h)p Fy(expression)p +Fp(i)2261 680 y(h)p Fy(case)27 b(clause)p Fp(i)2719 650 +y Fr(+)2774 680 y Fq(\))2108 780 y Fp(j)43 b Fq(\(case)f +Fp(h)p Fy(expression)p Fp(i)2261 879 y(h)p Fy(case)27 +b(clause)p Fp(i)p Fy(*)2261 979 y Fq(\(else)42 b Fp(h)p +Fy(sequence)p Fp(i)p Fq(\)\))2108 1078 y Fp(j)h Fq(\(and)f +Fp(h)p Fy(test)p Fp(i)q Fy(*)p Fq(\))2108 1178 y Fp(j)h +Fq(\(or)g Fp(h)p Fy(test)p Fp(i)p Fy(*)p Fq(\))2108 1278 +y Fp(j)g Fq(\(let)f(\()p Fp(h)p Fy(binding)28 b(sp)r(ec)p +Fp(i)p Fy(*)p Fq(\))43 b Fp(h)p Fy(b)r(o)r(dy)p Fp(i)q +Fq(\))2108 1377 y Fp(j)g Fq(\(let)f Fp(h)p Fy(v)-5 b(ariable)p +Fp(i)43 b Fq(\()p Fp(h)p Fy(binding)28 b(sp)r(ec)p Fp(i)p +Fy(*)p Fq(\))43 b Fp(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))2108 +1477 y Fp(j)g Fq(\(let*)f(\()p Fp(h)p Fy(binding)27 b(sp)r(ec)p +Fp(i)q Fy(*)o Fq(\))43 b Fp(h)p Fy(b)r(o)r(dy)p Fp(i)q +Fq(\))2108 1577 y Fp(j)g Fq(\(letrec)e(\()p Fp(h)p Fy(binding)28 +b(sp)r(ec)p Fp(i)p Fy(*)o Fq(\))44 b Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)p Fq(\))2108 1676 y Fp(j)f Fq(\(begin)e Fp(h)p Fy(sequence)p +Fp(i)p Fq(\))2108 1776 y Fp(j)i Fq(\(do)g(\()p Fp(h)p +Fy(iteration)26 b(sp)r(ec)p Fp(i)q Fy(*)o Fq(\))2349 +1875 y(\()p Fp(h)p Fy(test)p Fp(i)44 b(h)p Fy(do)27 b(result)p +Fp(i)p Fq(\))2261 1975 y Fp(h)p Fy(command)p Fp(i)q Fy(*)o +Fq(\))2108 2075 y Fp(j)43 b Fq(\(delay)e Fp(h)p Fy(expression)p +Fp(i)o Fq(\))2108 2174 y Fp(j)i(h)p Fy(quasiquotation)p +Fp(i)1933 2374 y(h)p Fy(cond)28 b(clause)p Fp(i)43 b(\000)-14 +b(!)43 b Fq(\()p Fp(h)p Fy(test)p Fp(i)h(h)p Fy(sequence)p +Fp(i)p Fq(\))2108 2473 y Fp(j)f Fq(\()p Fp(h)p Fy(test)p +Fp(i)q Fq(\))2108 2573 y Fp(j)g Fq(\()p Fp(h)p Fy(test)p +Fp(i)h Fq(=>)f Fp(h)p Fy(recipien)n(t)p Fp(i)p Fq(\))1933 +2672 y Fp(h)p Fy(recipien)n(t)p Fp(i)h(\000)-14 b(!)43 +b(h)p Fy(expression)p Fp(i)1933 2772 y(h)p Fy(case)27 +b(clause)p Fp(i)43 b(\000)-14 b(!)44 b Fq(\(\()p Fp(h)p +Fy(datum)p Fp(i)p Fy(*)o Fq(\))f Fp(h)p Fy(sequence)p +Fp(i)p Fq(\))1933 2872 y Fp(h)p Fy(binding)28 b(sp)r(ec)p +Fp(i)44 b(\000)-14 b(!)44 b Fq(\()p Fp(h)p Fy(v)-5 b(ariable)p +Fp(i)42 b(h)p Fy(expression)p Fp(i)o Fq(\))1933 2971 +y Fp(h)p Fy(iteration)28 b(sp)r(ec)p Fp(i)43 b(\000)-14 +b(!)44 b Fq(\()p Fp(h)p Fy(v)-5 b(ariable)p Fp(i)42 b(h)p +Fy(init)p Fp(i)j(h)p Fy(step)p Fp(i)q Fq(\))2108 3071 +y Fp(j)e Fq(\()p Fp(h)p Fy(v)-5 b(ariable)p Fp(i)43 b(h)p +Fy(init)p Fp(i)q Fq(\))1933 3171 y Fp(h)p Fy(init)p Fp(i)i(\000)-14 +b(!)43 b(h)p Fy(expression)p Fp(i)1933 3270 y(h)p Fy(step)p +Fp(i)i(\000)-15 b(!)44 b(h)p Fy(expression)p Fp(i)1933 +3370 y(h)p Fy(do)28 b(result)p Fp(i)43 b(\000)-14 b(!)44 +b(h)p Fy(sequence)p Fp(i)f(j)h(h)p Fy(empt)n(y)p Fp(i)1933 +3569 y(h)p Fy(macro)27 b(use)p Fp(i)44 b(\000)-15 b(!)44 +b Fq(\()p Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)e(h)p Fy(datum)p +Fp(i)p Fy(*)p Fq(\))1933 3669 y Fp(h)p Fy(k)n(eyw)n(ord)p +Fp(i)g(\000)-14 b(!)44 b(h)p Fy(iden)n(ti\014er)p Fp(i)1933 +3868 y(h)p Fy(macro)27 b(blo)r(c)n(k)p Fp(i)43 b(\000)-14 +b(!)2108 3968 y Fq(\(let-syntax)39 b(\()p Fp(h)p Fy(syn)n(tax)26 +b(sp)r(ec)p Fp(i)p Fy(*)p Fq(\))43 b Fp(h)p Fy(b)r(o)r(dy)p +Fp(i)q Fq(\))2108 4067 y Fp(j)g Fq(\(letrec-syntax)38 +b(\()p Fp(h)p Fy(syn)n(tax)27 b(sp)r(ec)p Fp(i)p Fy(*)o +Fq(\))44 b Fp(h)p Fy(b)r(o)r(dy)p Fp(i)p Fq(\))1933 4167 +y Fp(h)p Fy(syn)n(tax)27 b(sp)r(ec)p Fp(i)44 b(\000)-14 +b(!)43 b Fq(\()p Fp(h)p Fy(k)n(eyw)n(ord)p Fp(i)f(h)p +Fy(transformer)26 b(sp)r(ec)p Fp(i)q Fq(\))1933 4644 +y Fv(7.1.4.)46 b(Quasiquotations)1933 4831 y Fy(The)36 +b(follo)n(wing)e(grammar)f(for)h(quasiquote)h(expressions)e(is)i(not) +1933 4931 y(con)n(text-free.)48 b(It)31 b(is)h(presen)n(ted)f(as)f(a)h +(recip)r(e)h(for)e(generating)g(an)1933 5030 y(in\014nite)d(n)n(um)n(b) +r(er)f(of)g(pro)r(duction)g(rules.)36 b(Imagine)26 b(a)f(cop)n(y)h(of)g +(the)1933 5130 y(follo)n(wing)35 b(rules)h(for)g Fo(D)j +Fy(=)f(1)p Fo(;)14 b Fy(2)p Fo(;)g Fy(3)p Fo(;)g(:)g(:)g(:)n +Fy(.)63 b Fo(D)38 b Fy(k)n(eeps)d(trac)n(k)h(of)g(the)1933 +5229 y(nesting)28 b(depth.)1933 5404 y Fp(h)p Fy(quasiquotation)p +Fp(i)43 b(\000)-14 b(!)43 b(h)p Fy(quasiquotation)27 +b(1)p Fp(i)1933 5504 y(h)p Fy(qq)h(template)g(0)p Fp(i)43 +b(\000)-14 b(!)44 b(h)p Fy(expression)p Fp(i)p eop +%%Page: 40 40 +40 39 bop -300 -125 a Fy(40)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fp(h)p Fy(quasiquotation)26 +b Fo(D)r Fp(i)44 b(\000)-14 b(!)44 b Fq(\022)p Fp(h)p +Fy(qq)27 b(template)h Fo(D)r Fp(i)-126 182 y(j)44 b Fq(\(quasiquote)39 +b Fp(h)p Fy(qq)28 b(template)g Fo(D)r Fp(i)p Fq(\))-300 +281 y Fp(h)p Fy(qq)g(template)g Fo(D)r Fp(i)43 b(\000)-14 +b(!)44 b(h)p Fy(simple)28 b(datum)p Fp(i)-126 381 y(j)44 +b(h)p Fy(list)28 b(qq)f(template)h Fo(D)r Fp(i)-126 481 +y(j)44 b(h)p Fy(v)n(ector)27 b(qq)g(template)h Fo(D)r +Fp(i)-126 580 y(j)44 b(h)p Fy(unquotation)27 b Fo(D)r +Fp(i)-300 680 y(h)p Fy(list)h(qq)f(template)h Fo(D)r +Fp(i)44 b(\000)-14 b(!)44 b Fq(\()p Fp(h)p Fy(qq)27 b(template)h(or)e +(splice)i Fo(D)r Fp(i)p Fy(*)p Fq(\))-126 780 y Fp(j)44 +b Fq(\()p Fp(h)p Fy(qq)27 b(template)h(or)f(splice)g +Fo(D)r Fp(i)910 749 y Fr(+)1008 780 y Fq(.)43 b Fp(h)p +Fy(qq)28 b(template)g Fo(D)r Fp(i)p Fq(\))-126 879 y +Fp(j)44 b Fq(')p Fp(h)p Fy(qq)27 b(template)h Fo(D)r +Fp(i)-126 979 y(j)44 b(h)p Fy(quasiquotation)26 b Fo(D)21 +b Fy(+)d(1)p Fp(i)-300 1078 y(h)p Fy(v)n(ector)27 b(qq)g(template)h +Fo(D)r Fp(i)44 b(\000)-15 b(!)44 b Fq(#\()p Fp(h)p Fy(qq)27 +b(template)h(or)e(splice)i Fo(D)r Fp(i)p Fy(*)p Fq(\))-300 +1178 y Fp(h)p Fy(unquotation)f Fo(D)r Fp(i)44 b(\000)-14 +b(!)44 b Fq(,)p Fp(h)p Fy(qq)27 b(template)h Fo(D)20 +b Fp(\000)e Fy(1)p Fp(i)-126 1278 y(j)44 b Fq(\(unquote)c +Fp(h)p Fy(qq)28 b(template)g Fo(D)20 b Fp(\000)e Fy(1)p +Fp(i)p Fq(\))-300 1377 y Fp(h)p Fy(qq)28 b(template)g(or)e(splice)i +Fo(D)r Fp(i)44 b(\000)-15 b(!)44 b(h)p Fy(qq)28 b(template)f +Fo(D)r Fp(i)-126 1477 y(j)44 b(h)p Fy(splicing)28 b(unquotation)f +Fo(D)r Fp(i)-300 1577 y(h)p Fy(splicing)h(unquotation)f +Fo(D)r Fp(i)44 b(\000)-15 b(!)44 b Fq(,@)p Fp(h)p Fy(qq)27 +b(template)h Fo(D)20 b Fp(\000)e Fy(1)p Fp(i)-126 1676 +y(j)44 b Fq(\(unquote-splicin)o(g)38 b Fp(h)p Fy(qq)27 +b(template)h Fo(D)21 b Fp(\000)d Fy(1)p Fp(i)o Fq(\))-300 +1836 y Fy(In)52 b Fp(h)p Fy(quasiquotation)p Fp(i)o Fy(s,)58 +b(a)52 b Fp(h)p Fy(list)28 b(qq)g(template)g Fo(D)r Fp(i)52 +b Fy(can)g(some-)-300 1936 y(times)j(b)r(e)g(confused)f(with)h(either)g +(an)f Fp(h)p Fy(unquotation)28 b Fo(D)r Fp(i)55 b Fy(or)-300 +2036 y(a)f Fp(h)p Fy(splicing)27 b(unquotation)h Fo(D)r +Fp(i)p Fy(.)117 b(The)54 b(in)n(terpretation)g(as)f(an)-300 +2135 y Fp(h)p Fy(unquotation)p Fp(i)j Fy(or)f Fp(h)p +Fy(splicing)27 b(unquotation)h Fo(D)r Fp(i)56 b Fy(tak)n(es)f(prece-) +-300 2235 y(dence.)-300 2495 y Fv(7.1.5.)46 b(T)-8 b(ransformers)-300 +2674 y Fp(h)p Fy(transformer)26 b(sp)r(ec)p Fp(i)44 b(\000)-14 +b(!)-126 2773 y Fq(\(syntax-rules)39 b(\()p Fp(h)p Fy(iden)n(ti\014er)p +Fp(i)o Fy(*)p Fq(\))k Fp(h)p Fy(syn)n(tax)27 b(rule)p +Fp(i)p Fy(*)p Fq(\))-300 2873 y Fp(h)p Fy(syn)n(tax)g(rule)p +Fp(i)43 b(\000)-14 b(!)44 b Fq(\()p Fp(h)p Fy(pattern)p +Fp(i)f(h)p Fy(template)p Fp(i)q Fq(\))-300 2973 y Fp(h)p +Fy(pattern)p Fp(i)h(\000)-14 b(!)43 b(h)p Fy(pattern)28 +b(iden)n(ti\014er)p Fp(i)-126 3072 y(j)44 b Fq(\()p Fp(h)p +Fy(pattern)p Fp(i)p Fy(*)o Fq(\))-126 3172 y Fp(j)g Fq(\()p +Fp(h)p Fy(pattern)p Fp(i)317 3142 y Fr(+)416 3172 y Fq(.)f +Fp(h)p Fy(pattern)p Fp(i)p Fq(\))-126 3271 y Fp(j)h Fq(\()p +Fp(h)p Fy(pattern)p Fp(i)p Fy(*)f Fp(h)p Fy(pattern)p +Fp(i)h(h)p Fy(ellipsis)p Fp(i)p Fq(\))-126 3371 y Fp(j)g +Fq(#\()p Fp(h)p Fy(pattern)p Fp(i)o Fy(*)p Fq(\))-126 +3471 y Fp(j)g Fq(#\()p Fp(h)p Fy(pattern)p Fp(i)o Fy(*)g +Fp(h)p Fy(pattern)p Fp(i)f(h)p Fy(ellipsis)p Fp(i)q Fq(\))-126 +3570 y Fp(j)h(h)p Fy(pattern)28 b(datum)p Fp(i)-300 3670 +y(h)p Fy(pattern)g(datum)p Fp(i)44 b(\000)-14 b(!)43 +b(h)p Fy(string)p Fp(i)-126 3770 y(j)h(h)p Fy(c)n(haracter)p +Fp(i)-126 3869 y(j)g(h)p Fy(b)r(o)r(olean)p Fp(i)-126 +3969 y(j)g(h)p Fy(n)n(um)n(b)r(er)p Fp(i)-300 4068 y(h)p +Fy(template)p Fp(i)g(\000)-14 b(!)44 b(h)p Fy(pattern)27 +b(iden)n(ti\014er)p Fp(i)-126 4168 y(j)44 b Fq(\()p Fp(h)p +Fy(template)28 b(elemen)n(t)p Fp(i)p Fy(*)p Fq(\))-126 +4268 y Fp(j)44 b Fq(\()p Fp(h)p Fy(template)28 b(elemen)n(t)p +Fp(i)674 4238 y Fr(+)773 4268 y Fq(.)43 b Fp(h)p Fy(template)p +Fp(i)q Fq(\))-126 4367 y Fp(j)h Fq(#\()p Fp(h)p Fy(template)27 +b(elemen)n(t)p Fp(i)q Fy(*)o Fq(\))-126 4467 y Fp(j)44 +b(h)p Fy(template)28 b(datum)p Fp(i)-300 4567 y(h)p Fy(template)g +(elemen)n(t)p Fp(i)44 b(\000)-14 b(!)43 b(h)p Fy(template)p +Fp(i)-126 4666 y(j)h(h)p Fy(template)p Fp(i)g(h)p Fy(ellipsis)p +Fp(i)-300 4766 y(h)p Fy(template)28 b(datum)p Fp(i)44 +b(\000)-14 b(!)44 b(h)p Fy(pattern)27 b(datum)p Fp(i)-300 +4865 y(h)p Fy(pattern)h(iden)n(ti\014er)p Fp(i)43 b(\000)-14 +b(!)44 b(h)p Fy(an)n(y)27 b(iden)n(ti\014er)g(except)h +Fq(...)p Fp(i)-300 4965 y(h)p Fy(ellipsis)p Fp(i)44 b(\000)-14 +b(!)43 b(h)p Fy(the)29 b(iden)n(ti\014er)e Fq(...)p Fp(i)-300 +5325 y Fv(7.1.6.)46 b(Programs)30 b(and)j(de\014nitions)-300 +5504 y Fp(h)p Fy(program)p Fp(i)42 b(\000)-14 b(!)43 +b(h)p Fy(command)28 b(or)f(de\014nition)p Fp(i)p Fy(*)1933 +82 y Fp(h)p Fy(command)h(or)e(de\014nition)p Fp(i)45 +b(\000)-15 b(!)44 b(h)p Fy(command)p Fp(i)2108 182 y(j)f(h)p +Fy(de\014nition)p Fp(i)2108 281 y(j)g(h)p Fy(syn)n(tax)27 +b(de\014nition)p Fp(i)2108 381 y(j)43 b Fq(\(begin)e +Fp(h)p Fy(command)28 b(or)f(de\014nition)p Fp(i)3365 +351 y Fr(+)3420 381 y Fq(\))1933 481 y Fp(h)p Fy(de\014nition)p +Fp(i)45 b(\000)-14 b(!)43 b Fq(\(define)e Fp(h)p Fy(v)-5 +b(ariable)p Fp(i)43 b(h)p Fy(expression)p Fp(i)o Fq(\))2108 +580 y Fp(j)g Fq(\(define)e(\()p Fp(h)p Fy(v)-5 b(ariable)p +Fp(i)43 b(h)p Fy(def)28 b(formals)p Fp(i)o Fq(\))43 b +Fp(h)p Fy(b)r(o)r(dy)p Fp(i)q Fq(\))2108 680 y Fp(j)g +Fq(\(begin)e Fp(h)p Fy(de\014nition)p Fp(i)q Fy(*)p Fq(\))1933 +780 y Fp(h)p Fy(def)29 b(formals)p Fp(i)42 b(\000)-14 +b(!)44 b(h)p Fy(v)-5 b(ariable)p Fp(i)o Fy(*)2108 879 +y Fp(j)43 b(h)p Fy(v)-5 b(ariable)p Fp(i)p Fy(*)43 b +Fq(.)g Fp(h)p Fy(v)-5 b(ariable)p Fp(i)1933 979 y(h)p +Fy(syn)n(tax)27 b(de\014nition)p Fp(i)44 b(\000)-14 b(!)2108 +1078 y Fq(\(define-syntax)37 b Fp(h)p Fy(k)n(eyw)n(ord)p +Fp(i)43 b(h)p Fy(transformer)26 b(sp)r(ec)p Fp(i)p Fq(\))1933 +1446 y Fu(7.2.)57 b(F)-9 b(ormal)36 b(seman)m(tics)1933 +1648 y Fy(This)c(section)f(pro)n(vides)f(a)h(formal)g(denotational)g +(seman)n(tics)g(for)1933 1748 y(the)k(primitiv)n(e)f(expressions)f(of)h +(Sc)n(heme)g(and)g(selected)h(built-in)1933 1847 y(pro)r(cedures.)47 +b(The)32 b(concepts)f(and)g(notation)g(used)g(here)g(are)f(de-)1933 +1947 y(scrib)r(ed)e(in)g([29)o(];)f(the)h(notation)f(is)h(summarized)f +(b)r(elo)n(w:)1983 2077 y Fp(h)14 b Fo(:)g(:)g(:)g Fp(i)186 +b Fy(sequence)27 b(formation)1983 2176 y Fo(s)c Fp(#)g +Fo(k)205 b(k)s Fy(th)28 b(mem)n(b)r(er)g(of)f(the)h(sequence)f +Fo(s)h Fy(\(1-based\))1983 2276 y(#)p Fo(s)267 b Fy(length)28 +b(of)g(sequence)f Fo(s)1983 2376 y(s)18 b Fp(x)h Fo(t)232 +b Fy(concatenation)27 b(of)g(sequences)g Fo(s)h Fy(and)f +Fo(t)1983 2475 y(s)18 b Fp(y)h Fo(k)219 b Fy(drop)27 +b(the)h(\014rst)g Fo(k)i Fy(mem)n(b)r(ers)d(of)h(sequence)f +Fo(s)1983 2575 y(t)c Fp(!)g Fo(a;)14 b(b)99 b Fy(McCarth)n(y)27 +b(conditional)g(\\if)g Fo(t)h Fy(then)g Fo(a)g Fy(else)f +Fo(b)p Fy(")1983 2674 y Fo(\032)p Fy([)p Fo(x=i)p Fy(])168 +b(substitution)28 b(\\)p Fo(\032)g Fy(with)g Fo(x)g Fy(for)f +Fo(i)p Fy(")1983 2774 y Fo(x)h Fy(in)g Fq(D)159 b Fy(injection)28 +b(of)g Fo(x)g Fy(in)n(to)f(domain)g Fq(D)1983 2874 y +Fo(x)14 b Fp(j)g Fq(D)233 b Fy(pro)5 b(jection)27 b(of)g +Fo(x)i Fy(to)e(domain)g Fq(D)1933 3000 y Fy(The)38 b(reason)d(that)j +(expression)d(con)n(tin)n(uations)h(tak)n(e)h(sequences)1933 +3100 y(of)31 b(v)-5 b(alues)31 b(instead)f(of)h(single)f(v)-5 +b(alues)31 b(is)g(to)f(simplify)i(the)f(formal)1933 3200 +y(treatmen)n(t)d(of)f(pro)r(cedure)g(calls)g(and)g(m)n(ultiple)h +(return)f(v)-5 b(alues.)1933 3330 y(The)22 b(b)r(o)r(olean)f(\015ag)f +(asso)r(ciated)h(with)h(pairs,)f(v)n(ectors,)h(and)f(strings)1933 +3430 y(will)36 b(b)r(e)g(true)f(for)g(m)n(utable)h(ob)5 +b(jects)35 b(and)g(false)g(for)g(imm)n(utable)1933 3530 +y(ob)5 b(jects.)1933 3660 y(The)36 b(order)e(of)i(ev)-5 +b(aluation)35 b(within)i(a)e(call)g(is)h(unsp)r(eci\014ed.)62 +b(W)-7 b(e)1933 3760 y(mimic)34 b(that)g(here)g(b)n(y)f(applying)g +(arbitrary)f(p)r(erm)n(utations)h Fw(p)l(er-)1933 3859 +y(mute)26 b Fy(and)g Fw(unp)l(ermute)p Fy(,)g(whic)n(h)g(m)n(ust)g(b)r +(e)h(in)n(v)n(erses,)e(to)h(the)h(argu-)1933 3959 y(men)n(ts)e(in)f(a)g +(call)g(b)r(efore)g(and)g(after)g(they)h(are)e(ev)-5 +b(aluated.)36 b(This)24 b(is)1933 4059 y(not)h(quite)g(righ)n(t)f +(since)g(it)h(suggests,)f(incorrectly)-7 b(,)24 b(that)h(the)g(order) +1933 4158 y(of)37 b(ev)-5 b(aluation)36 b(is)h(constan)n(t)f +(throughout)f(a)i(program)d(\(for)j(an)n(y)1933 4258 +y(giv)n(en)28 b(n)n(um)n(b)r(er)g(of)g(argumen)n(ts\),)f(but)i(it)g(is) +f(a)f(closer)g(appro)n(xima-)1933 4358 y(tion)i(to)g(the)h(in)n(tended) +f(seman)n(tics)f(than)h(a)g(left-to-righ)n(t)f(ev)-5 +b(alua-)1933 4457 y(tion)28 b(w)n(ould)f(b)r(e.)1933 +4588 y(The)41 b(storage)e(allo)r(cator)h Fw(new)h Fy(is)g(implemen)n +(tation-dep)r(enden)n(t,)1933 4687 y(but)36 b(it)f(m)n(ust)g(ob)r(ey)g +(the)g(follo)n(wing)f(axiom:)50 b(if)36 b Fw(new)18 b +Fo(\033)3714 4682 y Ff(2)3777 4687 y Fq(L)p Fy(,)37 b(then)1933 +4787 y Fo(\033)22 b Fy(\()p Fw(new)d Fo(\033)j Fp(j)c +Fq(L)p Fy(\))23 b Fp(#)g Fy(2)f(=)h Fw(false)7 b Fy(.)1933 +4918 y(The)29 b(de\014nition)g(of)g Fp(K)h Fy(is)e(omitted)h(b)r +(ecause)f(an)h(accurate)e(de\014ni-)1933 5017 y(tion)37 +b(of)f Fp(K)i Fy(w)n(ould)d(complicate)h(the)h(seman)n(tics)e(without)i +(b)r(eing)1933 5117 y(v)n(ery)27 b(in)n(teresting.)1933 +5248 y(If)j(P)e(is)h(a)g(program)e(in)i(whic)n(h)g(all)g(v)-5 +b(ariables)28 b(are)g(de\014ned)h(b)r(efore)1933 5347 +y(b)r(eing)f(referenced)f(or)g(assigned,)f(then)i(the)g(meaning)f(of)h +(P)f(is)2232 5504 y Fp(E)8 b Fy([)-14 b([)p Fq(\(\(lambda)40 +b(\()p Fy(I*)o Fq(\))j Fy(P)p Fq('\))g Fp(h)p Fy(unde\014ned)p +Fp(i)h Fo(:)14 b(:)g(:)g Fq(\))p Fy(])-14 b(])p eop +%%Page: 41 41 +41 40 bop 2688 -125 a Fy(7.)64 b(F)-7 b(ormal)27 b(syn)n(tax)f(and)i +(seman)n(tics)82 b(41)-300 82 y(where)24 b(I*)g(is)h(the)f(sequence)g +(of)h(v)-5 b(ariables)23 b(de\014ned)i(in)g(P)o(,)h(P)1565 +46 y Ff(0)1613 82 y Fy(is)e(the)-300 182 y(sequence)g(of)h(expressions) +e(obtained)h(b)n(y)h(replacing)e(ev)n(ery)h(de\014ni-)-300 +281 y(tion)34 b(in)h(P)f(b)n(y)g(an)g(assignmen)n(t,)h +Fp(h)p Fy(unde\014ned)p Fp(i)g Fy(is)f(an)g(expression)-300 +381 y(that)24 b(ev)-5 b(aluates)24 b(to)g Fw(unde\014ne)l(d)o +Fy(,)h(and)f Fp(E)31 b Fy(is)24 b(the)h(seman)n(tic)e(function)-300 +481 y(that)28 b(assigns)e(meaning)h(to)h(expressions.)-300 +749 y Fv(7.2.1.)46 b(Abstract)33 b(syn)m(tax)-250 926 +y Fy(K)-158 921 y Ff(2)-86 926 y Fy(Con)456 b(constan)n(ts,)26 +b(including)i(quotations)-216 1025 y(I)-158 1020 y Ff(2)-86 +1025 y Fy(Ide)491 b(iden)n(ti\014ers)27 b(\(v)-5 b(ariables\))-242 +1125 y(E)-158 1120 y Ff(2)-86 1125 y Fy(Exp)457 b(expressions)-238 +1225 y(\000)-158 1220 y Ff(2)-86 1225 y Fy(Com)28 b(=)f(Exp)166 +b(commands)-300 1491 y(Exp)43 b Fp(\000)-14 b(!)43 b +Fy(K)h Fp(j)f Fy(I)h Fp(j)f Fq(\()p Fy(E)482 1503 y Fr(0)563 +1491 y Fy(E*)o Fq(\))1 1590 y Fp(j)g Fq(\(lambda)e(\()p +Fy(I*)o Fq(\))i Fy(\000*)g(E)812 1602 y Fr(0)849 1590 +y Fq(\))1 1690 y Fp(j)g Fq(\(lambda)e(\()p Fy(I*)i Fv(.)g +Fy(I)p Fq(\))g Fy(\000*)g(E)955 1702 y Fr(0)993 1690 +y Fq(\))1 1790 y Fp(j)g Fq(\(lambda)e Fy(I)j(\000*)f(E)683 +1802 y Fr(0)720 1790 y Fq(\))1 1889 y Fp(j)g Fq(\(if)g +Fy(E)298 1901 y Fr(0)379 1889 y Fy(E)436 1901 y Fr(1)516 +1889 y Fy(E)573 1901 y Fr(2)610 1889 y Fq(\))g Fp(j)h +Fq(\(if)e Fy(E)995 1901 y Fr(0)1076 1889 y Fy(E)1132 +1901 y Fr(1)1169 1889 y Fq(\))1 1989 y Fp(j)h Fq(\(set!)f +Fy(I)h(E)p Fq(\))-300 2357 y Fv(7.2.2.)j(Domain)30 b(equations)-300 +2534 y Fo(\013)-219 2529 y Ff(2)-146 2534 y Fq(L)900 +b Fy(lo)r(cations)-293 2633 y Fo(\027)-219 2628 y Ff(2)-146 +2633 y Fq(N)g Fy(natural)26 b(n)n(um)n(b)r(ers)-146 2733 +y Fq(T)68 b Fy(=)27 b Fp(f)p Fw(false,)k(true)p Fp(g)294 +b Fy(b)r(o)r(oleans)-146 2832 y Fq(Q)900 b Fy(sym)n(b)r(ols)-146 +2932 y Fq(H)g Fy(c)n(haracters)-146 3032 y Fq(R)g Fy(n)n(um)n(b)r(ers) +-146 3131 y Fq(E)-102 3143 y Fr(p)-34 3131 y Fy(=)27 +b Fq(L)18 b Fp(\002)g Fq(L)g Fp(\002)g Fq(T)406 b Fy(pairs)-146 +3231 y Fq(E)-102 3243 y Fr(v)-34 3231 y Fy(=)27 b Fq(L)o +Fy(*)18 b Fp(\002)g Fq(T)510 b Fy(v)n(ectors)-146 3331 +y Fq(E)-102 3343 y Fr(s)-34 3331 y Fy(=)27 b Fq(L)o Fy(*)18 +b Fp(\002)g Fq(T)510 b Fy(strings)-146 3430 y Fq(M)68 +b Fy(=)27 b Fp(f)p Fw(false,)k(true,)e(nul)t(l,)h(unde\014ne)l(d,)g +(unsp)l(e)l(ci\014e)l(d)p Fp(g)798 3530 y Fy(miscellaneous)-296 +3630 y Fo(\036)-219 3625 y Ff(2)-146 3630 y Fq(F)68 b +Fy(=)27 b Fq(L)18 b Fp(\002)g Fy(\()p Fq(E)p Fy(*)k Fp(!)h +Fq(K)g Fp(!)g Fq(C)p Fy(\))100 b(pro)r(cedure)26 b(v)-5 +b(alues)-280 3729 y Fo(\017)-219 3724 y Ff(2)-146 3729 +y Fq(E)68 b Fy(=)27 b Fq(Q)18 b Fy(+)g Fq(H)g Fy(+)g +Fq(R)g Fy(+)g Fq(E)537 3741 y Fr(p)596 3729 y Fy(+)g +Fq(E)723 3741 y Fr(v)781 3729 y Fy(+)g Fq(E)908 3741 +y Fr(s)956 3729 y Fy(+)g Fq(M)g Fy(+)g Fq(F)798 3829 +y Fy(expressed)26 b(v)-5 b(alues)-297 3928 y Fo(\033)-219 +3923 y Ff(2)-146 3928 y Fq(S)68 b Fy(=)27 b Fq(L)22 b +Fp(!)i Fy(\()p Fq(E)18 b Fp(\002)g Fq(T)o Fy(\))315 b(stores)-290 +4028 y Fo(\032)-219 4023 y Ff(2)-146 4028 y Fq(U)68 b +Fy(=)27 b(Ide)c Fp(!)g Fq(L)454 b Fy(en)n(vironmen)n(ts)-288 +4128 y Fo(\022)-219 4123 y Ff(2)-146 4128 y Fq(C)68 b +Fy(=)27 b Fq(S)22 b Fp(!)i Fq(A)523 b Fy(command)27 b(con)n(tin)n +(uations)-294 4227 y Fo(\024)-219 4222 y Ff(2)-146 4227 +y Fq(K)68 b Fy(=)27 b Fq(E)o Fy(*)c Fp(!)g Fq(C)482 b +Fy(expression)26 b(con)n(tin)n(uations)-146 4327 y Fq(A)900 +b Fy(answ)n(ers)-146 4427 y Fq(X)g Fy(errors)-300 4691 +y Fv(7.2.3.)46 b(Seman)m(tic)31 b(functions)-272 4852 +y Fp(K)25 b Fy(:)j(Con)22 b Fp(!)h Fq(E)-258 4951 y Fp(E)30 +b Fy(:)e(Exp)22 b Fp(!)h Fq(U)g Fp(!)g Fq(K)g Fp(!)g +Fq(C)-300 5051 y Fp(E)7 b Fy(*)23 b(:)28 b(Exp)o(*)23 +b Fp(!)g Fq(U)f Fp(!)h Fq(K)g Fp(!)g Fq(C)-256 5150 y +Fp(C)28 b Fy(:)g(Com)o(*)23 b Fp(!)g Fq(U)g Fp(!)g Fq(C)f +Fp(!)h Fq(C)-300 5318 y Fl(De\014nition)i(of)i Fk(K)g +Fl(delib)r(erately)f(omitted.)-300 5476 y Fk(E)6 b Fl([)-13 +b([K)q(])g(])22 b(=)f Fh(\025\032\024)c(:)g Fj(send)d +Fl(\()p Fk(K)q Fl([)-13 b([K)q(])g(]\))13 b Fh(\024)1933 +82 y Fk(E)6 b Fl([)-13 b([I)q(])g(])22 b(=)f Fh(\025\032\024)c(:)g +Fj(hold)h Fl(\()p Fj(lo)l(okup)f Fh(\032)g Fl(I\))2509 +174 y(\()p Fj(single)p Fl(\()p Fh(\025\017)f(:)i(\017)j +Fl(=)g Fj(unde\014ne)l(d)i Fk(!)3041 265 y Fj(wr)l(ong)29 +b Fl(\\unde\014ned)24 b(v)l(ariable")q Fh(;)2965 356 +y Fj(send)18 b Fh(\017)f(\024)p Fl(\)\))1933 494 y Fk(E)6 +b Fl([)-13 b([)p Fm(\()p Fl(E)2102 502 y Fi(0)2176 494 +y Fl(E*)p Fm(\))p Fl(])g(])23 b(=)2010 585 y Fh(\025\032\024)17 +b(:)g Fk(E)6 b Fl(*)q(\()p Fj(p)l(ermute)q Fl(\()p Fk(h)p +Fl(E)2689 593 y Fi(0)2724 585 y Fk(i)17 b(x)g Fl(E*\)\))2280 +676 y Fh(\032)2280 768 y Fl(\()p Fh(\025\017)p Fl(*)g +Fh(:)g Fl(\(\()p Fh(\025\017)p Fl(*)g Fh(:)h Fj(applic)l(ate)g +Fl(\()p Fh(\017)p Fl(*)k Fk(#)f Fl(1\))d(\()p Fh(\017)p +Fl(*)f Fk(y)f Fl(1\))i Fh(\024)p Fl(\))2509 859 y(\()p +Fj(unp)l(ermute)h Fh(\017)p Fl(*\)\)\))1933 996 y Fk(E)6 +b Fl([)-13 b([)p Fm(\(lambda)42 b(\()p Fl(I*)p Fm(\))e +Fl(\000*)g(E)2686 1004 y Fi(0)2720 996 y Fm(\))q Fl(])-13 +b(])22 b(=)2010 1088 y Fh(\025\032\024)17 b(:)g(\025\033)j(:)2087 +1179 y Fj(new)d Fh(\033)2297 1175 y Fb(2)2356 1179 y +Fm(L)k Fk(!)2164 1270 y Fj(send)d Fl(\()p Fk(h)p Fj(new)f +Fh(\033)e Fk(j)e Fm(L)q Fh(;)2389 1362 y(\025\017)p Fl(*)q +Fh(\024)2548 1330 y Fb(0)2587 1362 y Fh(:)18 b Fl(#)p +Fh(\017)p Fl(*)k(=)f(#I)o(*)h Fk(!)2703 1453 y Fj(tievals)p +Fl(\()p Fh(\025\013)p Fl(*)c Fh(:)f Fl(\()p Fh(\025\032)3245 +1421 y Fb(0)3284 1453 y Fh(:)g Fk(C)t Fl([)-13 b([\000)q(*])g(])p +Fh(\032)3552 1421 y Fb(0)3575 1453 y Fl(\()p Fk(E)6 b +Fl([)-13 b([E)3734 1461 y Fi(0)3769 1453 y Fl(])g(])p +Fh(\032)3838 1421 y Fb(0)3861 1453 y Fh(\024)3905 1421 +y Fb(0)3927 1453 y Fl(\)\))3130 1544 y(\()p Fj(extends)19 +b Fh(\032)e Fl(I*)g Fh(\013)p Fl(*)q(\)\))2912 1636 y +Fh(\017)p Fl(*)q Fh(;)2703 1727 y Fj(wr)l(ong)28 b Fl(\\wrong)f(n)n(um) +n(b)r(er)d(of)i(argumen)n(ts")p Fk(i)2415 1818 y Fl(in)g +Fm(E)p Fl(\))2330 1910 y Fh(\024)2330 2001 y Fl(\()p +Fj(up)l(date)18 b Fl(\()p Fj(new)g Fh(\033)d Fk(j)e Fm(L)p +Fl(\))k Fj(unsp)l(e)l(ci\014e)l(d)i Fh(\033)s Fl(\))p +Fh(;)2164 2092 y Fj(wr)l(ong)28 b Fl(\\out)e(of)h(memory")15 +b Fh(\033)1933 2230 y Fk(E)6 b Fl([)-13 b([)p Fm(\(lambda)42 +b(\()p Fl(I*)e Fa(.)e Fl(I)p Fm(\))i Fl(\000*)f(E)2816 +2238 y Fi(0)2851 2230 y Fm(\))p Fl(])-13 b(])23 b(=)2010 +2321 y Fh(\025\032\024)17 b(:)g(\025\033)j(:)2087 2412 +y Fj(new)d Fh(\033)2297 2408 y Fb(2)2356 2412 y Fm(L)k +Fk(!)2164 2504 y Fj(send)d Fl(\()p Fk(h)p Fj(new)f Fh(\033)e +Fk(j)e Fm(L)q Fh(;)2389 2595 y(\025\017)p Fl(*)q Fh(\024)2548 +2563 y Fb(0)2587 2595 y Fh(:)18 b Fl(#)p Fh(\017)p Fl(*)k +Fk(\025)f Fl(#I)o(*)h Fk(!)2703 2686 y Fj(tievalsr)l(est)2779 +2778 y Fl(\()p Fh(\025\013)p Fl(*)c Fh(:)f Fl(\()p Fh(\025\032)3112 +2746 y Fb(0)3151 2778 y Fh(:)g Fk(C)t Fl([)-13 b([\000)q(*])g(])p +Fh(\032)3419 2746 y Fb(0)3442 2778 y Fl(\()p Fk(E)6 b +Fl([)-13 b([E)3601 2786 y Fi(0)3636 2778 y Fl(])g(])p +Fh(\032)3705 2746 y Fb(0)3728 2778 y Fh(\024)3772 2746 +y Fb(0)3794 2778 y Fl(\)\))2997 2869 y(\()p Fj(extends)19 +b Fh(\032)e Fl(\(I*)g Fk(x)g(h)p Fl(I)p Fk(i)p Fl(\))g +Fh(\013)p Fl(*\)\))2779 2960 y Fh(\017)p Fl(*)2779 3052 +y(\(#I*\))p Fh(;)2703 3143 y Fj(wr)l(ong)28 b Fl(\\to)r(o)f(few)g +(argumen)n(ts")o Fk(i)f Fl(in)f Fm(E)q Fl(\))2330 3234 +y Fh(\024)2330 3326 y Fl(\()p Fj(up)l(date)18 b Fl(\()p +Fj(new)g Fh(\033)d Fk(j)e Fm(L)p Fl(\))k Fj(unsp)l(e)l(ci\014e)l(d)i +Fh(\033)s Fl(\))p Fh(;)2164 3417 y Fj(wr)l(ong)28 b Fl(\\out)e(of)h +(memory")15 b Fh(\033)1933 3554 y Fk(E)6 b Fl([)-13 b([)p +Fm(\(lambda)42 b Fl(I)d(\000*)h(E)2569 3562 y Fi(0)2604 +3554 y Fm(\))p Fl(])-13 b(])22 b(=)f Fk(E)6 b Fl([)-13 +b([)p Fm(\(lambda)42 b(\()p Fa(.)d Fl(I)p Fm(\))g Fl(\000*)h(E)3553 +3562 y Fi(0)3587 3554 y Fm(\))q Fl(])-13 b(])1933 3692 +y Fk(E)6 b Fl([)-13 b([)p Fm(\(if)41 b Fl(E)2219 3700 +y Fi(0)2293 3692 y Fl(E)2346 3700 y Fi(1)2419 3692 y +Fl(E)2472 3700 y Fi(2)2506 3692 y Fm(\))p Fl(])-13 b(])23 +b(=)2010 3783 y Fh(\025\032\024)17 b(:)g Fk(E)6 b Fl([)-13 +b([E)2323 3791 y Fi(0)2358 3783 y Fl(])g(])18 b Fh(\032)f +Fl(\()p Fj(single)g Fl(\()p Fh(\025\017)f(:)i Fj(truish)g +Fh(\017)j Fk(!)h(E)6 b Fl([)-13 b([E)3348 3791 y Fi(1)3382 +3783 y Fl(])g(])p Fh(\032\024;)2935 3875 y Fk(E)6 b Fl([)-13 +b([E)3064 3883 y Fi(2)3099 3875 y Fl(])g(])p Fh(\032\024)p +Fl(\)\))1933 4012 y Fk(E)6 b Fl([)-13 b([)p Fm(\(if)41 +b Fl(E)2219 4020 y Fi(0)2293 4012 y Fl(E)2346 4020 y +Fi(1)2380 4012 y Fm(\))p Fl(])-13 b(])23 b(=)2010 4103 +y Fh(\025\032\024)17 b(:)g Fk(E)6 b Fl([)-13 b([E)2323 +4111 y Fi(0)2358 4103 y Fl(])g(])18 b Fh(\032)f Fl(\()p +Fj(single)g Fl(\()p Fh(\025\017)f(:)i Fj(truish)g Fh(\017)j +Fk(!)h(E)6 b Fl([)-13 b([E)3348 4111 y Fi(1)3382 4103 +y Fl(])g(])p Fh(\032\024;)2935 4195 y Fj(send)18 b(unsp)l(e)l(ci\014e)l +(d)h Fh(\024)p Fl(\)\))1933 4332 y(Here)30 b(and)f(elsewhere,)j(an)n(y) +d(expressed)g(v)l(alue)g(other)h(than)e Fj(unde\014ne)l(d)1933 +4423 y Fl(ma)n(y)d(b)r(e)g(used)h(in)f(place)h(of)h Fj(unsp)l(e)l +(ci\014e)l(d)p Fl(.)1933 4561 y Fk(E)6 b Fl([)-13 b([)p +Fm(\(set!)42 b Fl(I)d(E)p Fm(\))p Fl(])-13 b(])22 b(=)2010 +4652 y Fh(\025\032\024)17 b(:)g Fk(E)6 b Fl([)-13 b([E)q(])g(])18 +b Fh(\032)f Fl(\()p Fj(single)p Fl(\()p Fh(\025\017)g(:)g +Fj(assign)h Fl(\()p Fj(lo)l(okup)g Fh(\032)e Fl(I\))3027 +4744 y Fh(\017)3027 4835 y Fl(\()p Fj(send)i(unsp)l(e)l(ci\014e)l(d)h +Fh(\024)p Fl(\)\)\))1933 4972 y Fk(E)6 b Fl(*)q([)-13 +b([)18 b(])-13 b(])22 b(=)f Fh(\025\032\024)c(:)g(\024)p +Fk(h)g(i)1933 5110 y(E)6 b Fl(*)q([)-13 b([E)2101 5118 +y Fi(0)2153 5110 y Fl(E*])g(])22 b(=)2010 5201 y Fh(\025\032\024)17 +b(:)g Fk(E)6 b Fl([)-13 b([E)2323 5209 y Fi(0)2358 5201 +y Fl(])g(])18 b Fh(\032)f Fl(\()p Fj(single)p Fl(\()p +Fh(\025\017)2786 5209 y Fi(0)2837 5201 y Fh(:)g Fk(E)7 +b Fl(*[)-13 b([E)q(*])g(])18 b Fh(\032)f Fl(\()p Fh(\025\017)p +Fl(*)g Fh(:)h(\024)f Fl(\()p Fk(h)p Fh(\017)3537 5209 +y Fi(0)3571 5201 y Fk(i)g(x)h Fh(\017)p Fl(*\)\)\)\))1933 +5339 y Fk(C)t Fl([)-13 b([)18 b(])-13 b(])22 b(=)f Fh(\025\032\022)14 +b(:)k(\022)1933 5476 y Fk(C)t Fl([)-13 b([\000)2056 5484 +y Fi(0)2108 5476 y Fl(\000*])g(])22 b(=)f Fh(\025\032\022)e(:)e +Fk(E)6 b Fl([)-13 b([\000)2629 5484 y Fi(0)2664 5476 +y Fl(])g(])18 b Fh(\032)e Fl(\()p Fh(\025\017)p Fl(*)h +Fh(:)h Fk(C)t Fl([)-13 b([\000*)q(])g(])p Fh(\032\022)r +Fl(\))p eop +%%Page: 42 42 +42 41 bop -300 -125 a Fy(42)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fv(7.2.4.)46 b(Auxiliary)32 +b(functions)-300 247 y Fj(lo)l(okup)22 b Fl(:)g Fm(U)f +Fk(!)g Fl(Ide)g Fk(!)g Fm(L)-300 338 y Fj(lo)l(okup)h +Fl(=)f Fh(\025\032)p Fl(I)16 b Fh(:)i(\032)p Fl(I)-300 +481 y Fj(extends)23 b Fl(:)f Fm(U)g Fk(!)f Fl(Ide)o(*)h +Fk(!)f Fm(L)p Fl(*)h Fk(!)f Fm(U)-300 573 y Fj(extends)i +Fl(=)-223 664 y Fh(\025\032)p Fl(I)o(*)p Fh(\013)p Fl(*)18 +b Fh(:)f Fl(#I*)22 b(=)f(0)h Fk(!)f Fh(\032;)147 755 +y Fj(extends)e Fl(\()p Fh(\032)p Fl([\()p Fh(\013)p Fl(*)j +Fk(#)g Fl(1\))p Fh(=)p Fl(\(I*)g Fk(#)f Fl(1\)]\))d(\(I*)f +Fk(y)f Fl(1\))i(\()p Fh(\013)p Fl(*)f Fk(y)f Fl(1\))-300 +899 y Fj(wr)l(ong)22 b Fl(:)g Fm(X)g Fk(!)f Fm(C)154 +b Fl([implemen)n(tation-dep)r(enden)n(t])-300 1042 y +Fj(send)22 b Fl(:)g Fm(E)g Fk(!)f Fm(K)g Fk(!)g Fm(C)-300 +1134 y Fj(send)h Fl(=)f Fh(\025\017\024)d(:)f(\024)p +Fk(h)p Fh(\017)p Fk(i)-300 1277 y Fj(single)22 b Fl(:)f(\()p +Fm(E)h Fk(!)f Fm(C)p Fl(\))g Fk(!)g Fm(K)-300 1368 y +Fj(single)h Fl(=)-223 1460 y Fh(\025 )s(\017)p Fl(*)17 +b Fh(:)g Fl(#)p Fh(\017)p Fl(*)22 b(=)f(1)h Fk(!)f Fh( )s +Fl(\()p Fh(\017)p Fl(*)h Fk(#)f Fl(1\))p Fh(;)76 1551 +y Fj(wr)l(ong)29 b Fl(\\wrong)e(n)n(um)n(b)r(er)c(of)k(return)e(v)l +(alues")-300 1694 y Fj(new)d Fl(:)f Fm(S)h Fk(!)f Fl(\()p +Fm(L)c Fl(+)g Fk(f)p Fj(err)l(or)r Fk(g)p Fl(\))154 b([implemen)n +(tation-dep)r(enden)n(t])-300 1838 y Fj(hold)22 b Fl(:)f +Fm(L)h Fk(!)f Fm(K)g Fk(!)h Fm(C)-300 1929 y Fj(hold)g +Fl(=)f Fh(\025\013\024\033)f(:)d Fj(send)d Fl(\()p Fh(\033)s(\013)21 +b Fk(#)h Fl(1\))p Fh(\024\033)-300 2072 y Fj(assign)g +Fl(:)g Fm(L)f Fk(!)h Fm(E)f Fk(!)g Fm(C)h Fk(!)f Fm(C)-300 +2164 y Fj(assign)h Fl(=)f Fh(\025\013\017\022)r(\033)f(:)e(\022)r +Fl(\()p Fj(up)l(date)g Fh(\013\017\033)s Fl(\))-300 2307 +y Fj(up)l(date)23 b Fl(:)f Fm(L)f Fk(!)g Fm(E)h Fk(!)f +Fm(S)h Fk(!)f Fm(S)-300 2398 y Fj(up)l(date)i Fl(=)e +Fh(\025\013\017\033)f(:)d(\033)s Fl([)p Fk(h)p Fh(\017;)c +Fj(true)r Fk(i)p Fh(=\013)p Fl(])-300 2542 y Fj(tievals)22 +b Fl(:)g(\()p Fm(L)p Fl(*)g Fk(!)f Fm(C)p Fl(\))g Fk(!)g +Fm(E)p Fl(*)h Fk(!)f Fm(C)-300 2633 y Fj(tievals)h Fl(=)-223 +2724 y Fh(\025 )s(\017)p Fl(*)p Fh(\033)e(:)d Fl(#)p +Fh(\017)p Fl(*)22 b(=)f(0)h Fk(!)f Fh( )s Fk(h)16 b(i)p +Fh(\033)n(;)46 2816 y Fj(new)h Fh(\033)256 2812 y Fb(2)315 +2816 y Fm(L)k Fk(!)g Fj(tievals)14 b Fl(\()p Fh(\025\013)p +Fl(*)j Fh(:)h( )s Fl(\()p Fk(h)p Fj(new)f Fh(\033)i Fk(j)f +Fm(L)p Fk(i)f(x)g Fh(\013)p Fl(*)q(\)\))696 2907 y(\()p +Fh(\017)p Fl(*)g Fk(y)f Fl(1\))696 2998 y(\()p Fj(up)l(date)q +Fl(\()p Fj(new)i Fh(\033)h Fk(j)f Fm(L)p Fl(\)\()p Fh(\017)p +Fl(*)k Fk(#)f Fl(1\))p Fh(\033)s Fl(\))p Fh(;)123 3090 +y Fj(wr)l(ong)28 b Fl(\\out)e(of)h(memory")n Fh(\033)-300 +3233 y Fj(tievalsr)l(est)d Fl(:)d(\()p Fm(L)p Fl(*)h +Fk(!)f Fm(C)p Fl(\))h Fk(!)f Fm(E)p Fl(*)h Fk(!)f Fm(N)g +Fk(!)h Fm(C)-300 3324 y Fj(tievalsr)l(est)i Fl(=)-223 +3416 y Fh(\025 )s(\017)p Fl(*)p Fh(\027)e(:)17 b Fj(list)g +Fl(\()p Fj(dr)l(op\014rst)i Fh(\017)p Fl(*)q Fh(\027)5 +b Fl(\))159 3507 y(\()p Fj(single)p Fl(\()p Fh(\025\017)17 +b(:)g Fj(tievals)h Fh( )i Fl(\(\()p Fj(take\014rst)f +Fh(\017)p Fl(*)q Fh(\027)5 b Fl(\))17 b Fk(x)g(h)p Fh(\017)p +Fk(i)p Fl(\)\)\))-300 3650 y Fj(dr)l(op\014rst)24 b Fl(=)d +Fh(\025l)q(n)c(:)g(n)22 b Fl(=)f(0)h Fk(!)f Fh(l)q(;)13 +b Fj(dr)l(op\014rst)j Fl(\()p Fh(l)i Fk(y)e Fl(1\)\()p +Fh(n)h Fk(\000)g Fl(1\))-300 3794 y Fj(take\014rst)24 +b Fl(=)d Fh(\025l)q(n)c(:)h(n)j Fl(=)g(0)h Fk(!)f(h)c(i)p +Fh(;)c Fk(h)p Fh(l)23 b Fk(#)e Fl(1)p Fk(i)d(x)f Fl(\()p +Fj(take\014rst)e Fl(\()p Fh(l)j Fk(y)e Fl(1\)\()p Fh(n)i +Fk(\000)f Fl(1\)\))-300 3937 y Fj(truish)22 b Fl(:)g +Fm(E)g Fk(!)f Fm(T)-300 4029 y Fj(truish)h Fl(=)f Fh(\025\017)c(:)h +(\017)j Fl(=)g Fj(false)h Fk(!)f Fj(false)p Fh(;)13 b +Fj(true)-300 4172 y(p)l(ermute)23 b Fl(:)f(Exp)o(*)g +Fk(!)f Fl(Exp)o(*)154 b([implemen)n(tation-dep)r(enden)n(t])-300 +4315 y Fj(unp)l(ermute)23 b Fl(:)f Fm(E)p Fl(*)g Fk(!)f +Fm(E)p Fl(*)154 b([in)n(v)n(erse)26 b(of)g Fj(p)l(ermute)r +Fl(])-300 4459 y Fj(applic)l(ate)c Fl(:)g Fm(E)g Fk(!)f +Fm(E)p Fl(*)h Fk(!)f Fm(K)g Fk(!)h Fm(C)-300 4550 y Fj(applic)l(ate)g +Fl(=)-223 4641 y Fh(\025\017\017)p Fl(*)p Fh(\024)c(:)f(\017)70 +4637 y Fb(2)129 4641 y Fm(F)k Fk(!)g Fl(\()p Fh(\017)c +Fk(j)h Fm(F)j Fk(#)h Fl(2\))p Fh(\017)p Fl(*)q Fh(\024;)13 +b Fj(wr)l(ong)29 b Fl(\\bad)c(pro)r(cedure")-300 4785 +y Fj(one)l(ar)l(g)e Fl(:)f(\()p Fm(E)f Fk(!)g Fm(K)h +Fk(!)f Fm(C)p Fl(\))g Fk(!)g Fl(\()p Fm(E)p Fl(*)h Fk(!)f +Fm(K)h Fk(!)f Fm(C)p Fl(\))-300 4876 y Fj(one)l(ar)l(g)i +Fl(=)-223 4967 y Fh(\025\020)5 b(\017)p Fl(*)p Fh(\024)17 +b(:)h Fl(#)p Fh(\017)p Fl(*)k(=)f(1)g Fk(!)h Fh(\020)5 +b Fl(\()p Fh(\017)p Fl(*)21 b Fk(#)h Fl(1\))p Fh(\024;)107 +5059 y Fj(wr)l(ong)28 b Fl(\\wrong)f(n)n(um)n(b)r(er)d(of)i(argumen)n +(ts")-300 5202 y Fj(two)l(ar)l(g)d Fl(:)f(\()p Fm(E)f +Fk(!)g Fm(E)h Fk(!)f Fm(K)g Fk(!)h Fm(C)p Fl(\))f Fk(!)g +Fl(\()p Fm(E)p Fl(*)h Fk(!)f Fm(K)h Fk(!)f Fm(C)p Fl(\))-300 +5293 y Fj(two)l(ar)l(g)i Fl(=)-223 5385 y Fh(\025\020)5 +b(\017)p Fl(*)p Fh(\024)17 b(:)h Fl(#)p Fh(\017)p Fl(*)k(=)f(2)g +Fk(!)h Fh(\020)5 b Fl(\()p Fh(\017)p Fl(*)21 b Fk(#)h +Fl(1\)\()p Fh(\017)p Fl(*)g Fk(#)g Fl(2\))p Fh(\024;)107 +5476 y Fj(wr)l(ong)28 b Fl(\\wrong)f(n)n(um)n(b)r(er)d(of)i(argumen)n +(ts")1933 82 y Fj(list)c Fl(:)f Fm(E)p Fl(*)h Fk(!)f +Fm(K)h Fk(!)f Fm(C)1933 174 y Fj(list)h Fl(=)2010 265 +y Fh(\025\017)p Fl(*)p Fh(\024)c(:)f Fl(#)p Fh(\017)p +Fl(*)22 b(=)f(0)h Fk(!)f Fj(send)d(nul)t(l)e Fh(\024;)2301 +356 y Fj(list)d Fl(\()p Fh(\017)p Fl(*)k Fk(y)f Fl(1\)\()p +Fj(single)q Fl(\()p Fh(\025\017)g(:)i Fj(c)l(ons)q Fk(h)p +Fh(\017)p Fl(*)k Fk(#)f Fl(1)p Fh(;)14 b(\017)p Fk(i)p +Fh(\024)p Fl(\)\))1933 506 y Fj(c)l(ons)23 b Fl(:)e Fm(E)q +Fl(*)g Fk(!)g Fm(K)h Fk(!)f Fm(C)1933 597 y Fj(c)l(ons)i +Fl(=)2010 688 y Fj(two)l(ar)l(g)15 b Fl(\()p Fh(\025\017)2344 +696 y Fi(1)2378 688 y Fh(\017)2409 696 y Fi(2)2444 688 +y Fh(\024\033)20 b(:)d Fj(new)g Fh(\033)2800 684 y Fb(2)2859 +688 y Fm(L)k Fk(!)2692 780 y Fl(\()p Fh(\025\033)2814 +748 y Fb(0)2853 780 y Fh(:)c Fj(new)h Fh(\033)3085 748 +y Fb(0)3124 776 y(2)3182 780 y Fm(L)k Fk(!)2968 871 y +Fj(send)14 b Fl(\()p Fk(h)p Fj(new)j Fh(\033)j Fk(j)d +Fm(L)p Fh(;)d Fj(new)j Fh(\033)3705 839 y Fb(0)3744 871 +y Fk(j)g Fm(L)q Fh(;)c Fj(true)q Fk(i)3185 962 y Fl(in)26 +b Fm(E)p Fl(\))3130 1054 y Fh(\024)3130 1145 y Fl(\()p +Fj(up)l(date)q Fl(\()p Fj(new)18 b Fh(\033)3599 1113 +y Fb(0)3638 1145 y Fk(j)f Fm(L)p Fl(\))p Fh(\017)3776 +1153 y Fi(2)3811 1145 y Fh(\033)3858 1113 y Fb(0)3880 +1145 y Fl(\))p Fh(;)2968 1236 y Fj(wr)l(ong)29 b Fl(\\out)d(of)g +(memory")o Fh(\033)3812 1204 y Fb(0)3833 1236 y Fl(\))2692 +1328 y(\()p Fj(up)l(date)r Fl(\()p Fj(new)17 b Fh(\033)j +Fk(j)d Fm(L)p Fl(\))p Fh(\017)3316 1336 y Fi(1)3351 1328 +y Fh(\033)s Fl(\))p Fh(;)2667 1419 y Fj(wr)l(ong)28 b +Fl(\\out)e(of)h(memory")n Fh(\033)s Fl(\))1933 1585 y +Fj(less)22 b Fl(:)g Fm(E)p Fl(*)g Fk(!)f Fm(K)h Fk(!)f +Fm(C)1933 1676 y Fj(less)h Fl(=)2010 1768 y Fj(two)l(ar)l(g)15 +b Fl(\()p Fh(\025\017)2344 1776 y Fi(1)2378 1768 y Fh(\017)2409 +1776 y Fi(2)2444 1768 y Fh(\024)i(:)g Fl(\()p Fh(\017)2604 +1776 y Fi(1)2656 1764 y Fb(2)2715 1768 y Fm(R)g Fk(^)g +Fh(\017)2870 1776 y Fi(2)2922 1764 y Fb(2)2980 1768 y +Fm(R)q Fl(\))k Fk(!)2620 1859 y Fj(send)14 b Fl(\()p +Fh(\017)2843 1867 y Fi(1)2895 1859 y Fk(j)j Fm(R)k Fh(<)h(\017)3106 +1867 y Fi(2)3157 1859 y Fk(j)c Fm(R)j Fk(!)g Fj(true)r +Fh(;)13 b Fj(false)p Fl(\))p Fh(\024;)2620 1950 y Fj(wr)l(ong)29 +b Fl(\\non-n)n(umeric)24 b(argumen)n(t)g(to)i Fm(<)p +Fl(")q(\))1933 2116 y Fj(add)c Fl(:)g Fm(E)p Fl(*)g Fk(!)f +Fm(K)h Fk(!)f Fm(C)1933 2208 y Fj(add)h Fl(=)2010 2299 +y Fj(two)l(ar)l(g)15 b Fl(\()p Fh(\025\017)2344 2307 +y Fi(1)2378 2299 y Fh(\017)2409 2307 y Fi(2)2444 2299 +y Fh(\024)i(:)g Fl(\()p Fh(\017)2604 2307 y Fi(1)2656 +2295 y Fb(2)2715 2299 y Fm(R)g Fk(^)g Fh(\017)2870 2307 +y Fi(2)2922 2295 y Fb(2)2980 2299 y Fm(R)q Fl(\))k Fk(!)2620 +2390 y Fj(send)14 b Fl(\(\()p Fh(\017)2873 2398 y Fi(1)2924 +2390 y Fk(j)k Fm(R)f Fl(+)g Fh(\017)3127 2398 y Fi(2)3179 +2390 y Fk(j)g Fm(R)p Fl(\))26 b(in)f Fm(E)q Fl(\))p Fh(\024;)2620 +2482 y Fj(wr)l(ong)k Fl(\\non-n)n(umeric)24 b(argumen)n(t)g(to)i +Fm(+)p Fl(")q(\))1933 2648 y Fj(c)l(ar)d Fl(:)e Fm(E)p +Fl(*)h Fk(!)f Fm(K)h Fk(!)f Fm(C)1933 2739 y Fj(c)l(ar)i +Fl(=)2010 2830 y Fj(one)l(ar)l(g)14 b Fl(\()p Fh(\025\017\024)k(:)f +(\017)2493 2826 y Fb(2)2552 2830 y Fm(E)2591 2838 y Fi(p)2650 +2830 y Fk(!)k Fj(hold)13 b Fl(\()p Fh(\017)k Fk(j)h Fm(E)3054 +2838 y Fi(p)3113 2830 y Fk(#)k Fl(1\))p Fh(\024;)2522 +2922 y Fj(wr)l(ong)28 b Fl(\\non-pair)e(argumen)n(t)f(to)g +Fm(car)p Fl(")r(\))1933 3071 y Fj(c)l(dr)e Fl(:)e Fm(E)p +Fl(*)h Fk(!)f Fm(K)h Fk(!)f Fm(C)154 b Fl([similar)26 +b(to)g Fj(c)l(ar)q Fl(])1933 3237 y Fj(setc)l(ar)e Fl(:)d +Fm(E)q Fl(*)g Fk(!)g Fm(K)h Fk(!)f Fm(C)1933 3328 y Fj(setc)l(ar)j +Fl(=)2010 3420 y Fj(two)l(ar)l(g)15 b Fl(\()p Fh(\025\017)2344 +3428 y Fi(1)2378 3420 y Fh(\017)2409 3428 y Fi(2)2444 +3420 y Fh(\024)i(:)g(\017)2574 3428 y Fi(1)2626 3416 +y Fb(2)2685 3420 y Fm(E)2724 3428 y Fi(p)2783 3420 y +Fk(!)2543 3511 y Fl(\()p Fh(\017)2604 3519 y Fi(1)2656 +3511 y Fk(j)g Fm(E)2733 3519 y Fi(p)2793 3511 y Fk(#)k +Fl(3\))h Fk(!)f Fj(assign)14 b Fl(\()p Fh(\017)3318 3519 +y Fi(1)3369 3511 y Fk(j)k Fm(E)3447 3519 y Fi(p)3506 +3511 y Fk(#)k Fl(1\))3257 3602 y Fh(\017)3288 3610 y +Fi(2)3257 3694 y Fl(\()p Fj(send)c(unsp)l(e)l(ci\014e)l(d)h +Fh(\024)p Fl(\))p Fh(;)2543 3785 y Fj(wr)l(ong)29 b Fl(\\imm)n(utable) +24 b(argumen)n(t)h(to)h Fm(set-car!)p Fl(")r Fh(;)2543 +3876 y Fj(wr)l(ong)j Fl(\\non-pair)d(argumen)n(t)e(to)i +Fm(set-car!)p Fl(")r(\))1933 4042 y Fj(e)l(qv)d Fl(:)e +Fm(E)p Fl(*)h Fk(!)f Fm(K)h Fk(!)f Fm(C)1933 4134 y Fj(e)l(qv)i +Fl(=)2010 4225 y Fj(two)l(ar)l(g)15 b Fl(\()p Fh(\025\017)2344 +4233 y Fi(1)2378 4225 y Fh(\017)2409 4233 y Fi(2)2444 +4225 y Fh(\024)i(:)g Fl(\()p Fh(\017)2604 4233 y Fi(1)2656 +4221 y Fb(2)2715 4225 y Fm(M)g Fk(^)g Fh(\017)2870 4233 +y Fi(2)2922 4221 y Fb(2)2980 4225 y Fm(M)q Fl(\))k Fk(!)2620 +4316 y Fj(send)14 b Fl(\()p Fh(\017)2843 4324 y Fi(1)2895 +4316 y Fk(j)j Fm(M)k Fl(=)h Fh(\017)3106 4324 y Fi(2)3157 +4316 y Fk(j)c Fm(M)j Fk(!)g Fj(true)r Fh(;)13 b Fj(false)p +Fl(\))p Fh(\024;)2543 4408 y Fl(\()p Fh(\017)2604 4416 +y Fi(1)2656 4404 y Fb(2)2715 4408 y Fm(Q)k Fk(^)g Fh(\017)2870 +4416 y Fi(2)2922 4404 y Fb(2)2980 4408 y Fm(Q)q Fl(\))k +Fk(!)2620 4499 y Fj(send)14 b Fl(\()p Fh(\017)2843 4507 +y Fi(1)2895 4499 y Fk(j)j Fm(Q)k Fl(=)h Fh(\017)3106 +4507 y Fi(2)3157 4499 y Fk(j)c Fm(Q)j Fk(!)g Fj(true)r +Fh(;)13 b Fj(false)p Fl(\))p Fh(\024;)2543 4590 y Fl(\()p +Fh(\017)2604 4598 y Fi(1)2656 4586 y Fb(2)2715 4590 y +Fm(H)k Fk(^)g Fh(\017)2870 4598 y Fi(2)2922 4586 y Fb(2)2980 +4590 y Fm(H)q Fl(\))k Fk(!)2620 4682 y Fj(send)14 b Fl(\()p +Fh(\017)2843 4690 y Fi(1)2895 4682 y Fk(j)j Fm(H)k Fl(=)h +Fh(\017)3106 4690 y Fi(2)3157 4682 y Fk(j)c Fm(H)j Fk(!)g +Fj(true)r Fh(;)13 b Fj(false)p Fl(\))p Fh(\024;)2543 +4773 y Fl(\()p Fh(\017)2604 4781 y Fi(1)2656 4769 y Fb(2)2715 +4773 y Fm(R)k Fk(^)g Fh(\017)2870 4781 y Fi(2)2922 4769 +y Fb(2)2980 4773 y Fm(R)q Fl(\))k Fk(!)2620 4864 y Fj(send)14 +b Fl(\()p Fh(\017)2843 4872 y Fi(1)2895 4864 y Fk(j)j +Fm(R)k Fl(=)h Fh(\017)3106 4872 y Fi(2)3157 4864 y Fk(j)c +Fm(R)j Fk(!)g Fj(true)r Fh(;)13 b Fj(false)p Fl(\))p +Fh(\024;)2543 4956 y Fl(\()p Fh(\017)2604 4964 y Fi(1)2656 +4952 y Fb(2)2715 4956 y Fm(E)2754 4964 y Fi(p)2809 4956 +y Fk(^)k Fh(\017)2908 4964 y Fi(2)2960 4952 y Fb(2)3018 +4956 y Fm(E)3057 4964 y Fi(p)3095 4956 y Fl(\))k Fk(!)2620 +5047 y Fj(send)14 b Fl(\(\()p Fh(\025p)2926 5055 y Fi(1)2960 +5047 y Fh(p)2999 5055 y Fi(2)3050 5047 y Fh(:)j Fl(\(\()p +Fh(p)3187 5055 y Fi(1)3242 5047 y Fk(#)22 b Fl(1\))g(=)f(\()p +Fh(p)3542 5055 y Fi(2)3597 5047 y Fk(#)h Fl(1\))p Fk(^)3118 +5138 y Fl(\()p Fh(p)3187 5146 y Fi(1)3242 5138 y Fk(#)g +Fl(2\))g(=)f(\()p Fh(p)3542 5146 y Fi(2)3597 5138 y Fk(#)h +Fl(2\)\))f Fk(!)g Fj(true)r Fh(;)3195 5230 y Fj(false)p +Fl(\))2812 5321 y(\()p Fh(\017)2873 5329 y Fi(1)2924 +5321 y Fk(j)d Fm(E)3002 5329 y Fi(p)3040 5321 y Fl(\))2812 +5412 y(\()p Fh(\017)2873 5420 y Fi(2)2924 5412 y Fk(j)g +Fm(E)3002 5420 y Fi(p)3040 5412 y Fl(\)\))2782 5504 y +Fh(\024;)p eop +%%Page: 43 43 +43 42 bop 2697 -125 a Fy(7.)55 b(F)-7 b(ormal)27 b(syn)n(tax)f(and)i +(seman)n(tics)82 b(43)310 82 y Fl(\()p Fh(\017)371 90 +y Fi(1)423 78 y Fb(2)481 82 y Fm(E)520 90 y Fi(v)575 +82 y Fk(^)17 b Fh(\017)674 90 y Fi(2)726 78 y Fb(2)784 +82 y Fm(E)823 90 y Fi(v)860 82 y Fl(\))22 b Fk(!)f Fh(:)13 +b(:)g(:)g(;)310 174 y Fl(\()p Fh(\017)371 182 y Fi(1)423 +170 y Fb(2)481 174 y Fm(E)520 182 y Fi(s)566 174 y Fk(^)k +Fh(\017)665 182 y Fi(2)717 170 y Fb(2)776 174 y Fm(E)815 +182 y Fi(s)843 174 y Fl(\))k Fk(!)h Fh(:)13 b(:)g(:)g(;)310 +265 y Fl(\()p Fh(\017)371 273 y Fi(1)423 261 y Fb(2)481 +265 y Fm(F)18 b Fk(^)f Fh(\017)637 273 y Fi(2)689 261 +y Fb(2)747 265 y Fm(F)p Fl(\))22 b Fk(!)387 356 y Fj(send)14 +b Fl(\(\()p Fh(\017)640 364 y Fi(1)691 356 y Fk(j)j Fm(F)22 +b Fk(#)g Fl(1\))f(=)g(\()p Fh(\017)1081 364 y Fi(2)1133 +356 y Fk(j)c Fm(F)22 b Fk(#)g Fl(1\))f Fk(!)g Fj(true)r +Fh(;)13 b Fj(false)p Fl(\))549 447 y Fh(\024;)387 539 +y Fj(send)31 b(false)17 b Fh(\024)p Fl(\))-300 700 y +Fj(apply)22 b Fl(:)f Fm(E)q Fl(*)g Fk(!)h Fm(K)f Fk(!)g +Fm(C)-300 791 y Fj(apply)h Fl(=)-223 882 y Fj(two)l(ar)l(g)14 +b Fl(\()p Fh(\025\017)110 890 y Fi(1)145 882 y Fh(\017)176 +890 y Fi(2)210 882 y Fh(\024)k(:)f(\017)341 890 y Fi(1)393 +878 y Fb(2)451 882 y Fm(F)22 b Fk(!)f Fj(valueslist)14 +b Fk(h)p Fh(\017)986 890 y Fi(2)1020 882 y Fk(i)p Fl(\()p +Fh(\025\017)p Fl(*)j Fh(:)h Fj(applic)l(ate)g Fh(\017)1590 +890 y Fi(1)1625 882 y Fh(\017)p Fl(*)p Fh(\024)p Fl(\))p +Fh(;)387 974 y Fj(wr)l(ong)28 b Fl(\\bad)e(pro)r(cedure)g(argumen)n(t)e +(to)i Fm(apply)p Fl(")r(\))-300 1119 y Fj(valueslist)c +Fl(:)g Fm(E)p Fl(*)g Fk(!)f Fm(K)h Fk(!)f Fm(C)-300 1211 +y Fj(valueslist)h Fl(=)-223 1302 y Fj(one)l(ar)l(g)14 +b Fl(\()p Fh(\025\017\024)j(:)h(\017)260 1298 y Fb(2)318 +1302 y Fm(E)357 1310 y Fi(p)417 1302 y Fk(!)288 1393 +y Fj(c)l(dr)q Fk(h)p Fh(\017)p Fk(i)391 1485 y Fl(\()p +Fh(\025\017)p Fl(*)g Fh(:)f Fj(valueslist)591 1576 y +Fh(\017)p Fl(*)591 1667 y(\()p Fh(\025\017)p Fl(*)g Fh(:)h +Fj(c)l(ar)q Fk(h)p Fh(\017)p Fk(i)p Fl(\()p Fj(single)o +Fl(\()p Fh(\025\017)f(:)h(\024)p Fl(\()p Fk(h)p Fh(\017)p +Fk(i)f(x)g Fh(\017)p Fl(*\)\)\)\)\))p Fh(;)212 1759 y(\017)k +Fl(=)g Fj(nul)t(l)g Fk(!)g Fh(\024)p Fk(h)c(i)p Fh(;)288 +1850 y Fj(wr)l(ong)29 b Fl(\\non-list)d(argumen)n(t)f(to)h +Fm(values-list)p Fl(")r(\))-300 1995 y Fj(cwc)l(c)c Fl(:)g +Fm(E)p Fl(*)g Fk(!)f Fm(K)h Fk(!)f Fm(C)153 b Fl([)p +Fm(call-with-current-continu)q(ation)q Fl(])-300 2087 +y Fj(cwc)l(c)22 b Fl(=)-223 2178 y Fj(one)l(ar)l(g)14 +b Fl(\()p Fh(\025\017\024)j(:)h(\017)260 2174 y Fb(2)318 +2178 y Fm(F)k Fk(!)288 2269 y Fl(\()p Fh(\025\033)e(:)d +Fj(new)h Fh(\033)675 2265 y Fb(2)734 2269 y Fm(L)j Fk(!)542 +2361 y Fj(applic)l(ate)d Fh(\017)851 2452 y Fk(hh)p Fj(new)f +Fh(\033)j Fk(j)d Fm(L)q Fh(;)c(\025\017)p Fl(*)p Fh(\024)1391 +2420 y Fb(0)1431 2452 y Fh(:)k(\024\017)p Fl(*)q Fk(i)25 +b Fl(in)h Fm(E)p Fk(i)851 2543 y Fh(\024)851 2635 y Fl(\()p +Fj(up)l(date)14 b Fl(\()p Fj(new)k Fh(\033)h Fk(j)f Fm(L)p +Fl(\))1109 2726 y Fj(unsp)l(e)l(ci\014e)l(d)1109 2817 +y Fh(\033)s Fl(\))p Fh(;)542 2909 y Fj(wr)l(ong)28 b +Fl(\\out)e(of)h(memory")11 b Fh(\033)s Fl(\))p Fh(;)288 +3000 y Fj(wr)l(ong)29 b Fl(\\bad)d(pro)r(cedure)f(argumen)n(t"\))-300 +3146 y Fj(values)d Fl(:)g Fm(E)p Fl(*)g Fk(!)f Fm(K)h +Fk(!)f Fm(C)-300 3237 y Fj(values)h Fl(=)f Fh(\025\017)p +Fl(*)q Fh(\024)c(:)g(\024\017)p Fl(*)-300 3383 y Fj(cwv)22 +b Fl(:)g Fm(E)p Fl(*)f Fk(!)h Fm(K)f Fk(!)g Fm(C)154 +b Fl([)p Fm(call-with-values)p Fl(])-300 3474 y Fj(cwv)22 +b Fl(=)-223 3565 y Fj(two)l(ar)l(g)14 b Fl(\()p Fh(\025\017)110 +3573 y Fi(1)145 3565 y Fh(\017)176 3573 y Fi(2)210 3565 +y Fh(\024)k(:)f Fj(applic)l(ate)h Fh(\017)650 3573 y +Fi(1)685 3565 y Fk(h)f(i)p Fl(\()p Fh(\025\017)p Fl(*)g +Fh(:)g Fj(applic)l(ate)h Fh(\017)1301 3573 y Fi(2)1353 +3565 y Fh(\017)p Fl(*)q(\)\))-300 3844 y Fu(7.3.)56 b(Deriv)m(ed)37 +b(expression)h(t)m(yp)s(es)-300 4054 y Fy(This)24 b(section)f(giv)n(es) +g(macro)f(de\014nitions)i(for)g(the)g(deriv)n(ed)f(expres-)-300 +4154 y(sion)31 b(t)n(yp)r(es)h(in)h(terms)e(of)h(the)g(primitiv)n(e)g +(expression)f(t)n(yp)r(es)g(\(lit-)-300 4254 y(eral,)g(v)-5 +b(ariable,)30 b(call,)i Fq(lambda)p Fy(,)d Fq(if)p Fy(,)i +Fq(set!)p Fy(\).)45 b(See)31 b(section)f(6.4)g(for)-300 +4353 y(a)d(p)r(ossible)g(de\014nition)h(of)g Fq(delay)p +Fy(.)-143 4499 y Fm(\(define-syntax)42 b(cond)-65 4590 +y(\(syntax-rules)h(\(else)d(=>\))14 4682 y(\(\(cond)g(\(else)h(result1) +g(result2)f(...\)\))53 4773 y(\(begin)h(result1)f(result2)h(...\)\))14 +4864 y(\(\(cond)f(\(test)h(=>)e(result\)\))53 4956 y(\(let)h(\(\(temp)h +(test\)\))132 5047 y(\(if)e(temp)i(\(result)f(temp\)\)\)\))14 +5138 y(\(\(cond)g(\(test)h(=>)e(result\))i(clause1)g(clause2)g(...\))53 +5230 y(\(let)f(\(\(temp)h(test\)\))132 5321 y(\(if)e(temp)288 +5412 y(\(result)i(temp\))288 5504 y(\(cond)g(clause1)g(clause2)f +(...\)\)\)\))2247 82 y(\(\(cond)h(\(test\)\))g(test\))2247 +174 y(\(\(cond)g(\(test\))f(clause1)h(clause2)g(...\))2286 +265 y(\(let)f(\(\(temp)h(test\)\))2365 356 y(\(if)f(temp)2522 +447 y(temp)2522 539 y(\(cond)g(clause1)h(clause2)g(...\)\)\)\))2247 +630 y(\(\(cond)g(\(test)f(result1)h(result2)g(...\)\))2286 +721 y(\(if)f(test)g(\(begin)h(result1)g(result2)g(...\)\)\))2247 +813 y(\(\(cond)g(\(test)f(result1)h(result2)g(...\))2522 +904 y(clause1)g(clause2)f(...\))2286 995 y(\(if)g(test)2443 +1087 y(\(begin)h(result1)g(result2)f(...\))2443 1178 +y(\(cond)h(clause1)f(clause2)h(...\)\)\)\)\))2090 1415 +y(\(define-syntax)i(case)2169 1506 y(\(syntax-rules)f(\(else\))2247 +1597 y(\(\(case)f(\(key)f(...\))2365 1689 y(clauses)h(...\))2286 +1780 y(\(let)f(\(\(atom-key)i(\(key)e(...\)\)\))2365 +1871 y(\(case)g(atom-key)h(clauses)g(...\)\)\))2247 1963 +y(\(\(case)g(key)2365 2054 y(\(else)f(result1)h(result2)g(...\)\))2286 +2145 y(\(begin)g(result1)g(result2)g(...\)\))2247 2237 +y(\(\(case)g(key)2365 2328 y(\(\(atoms)g(...\))f(result1)h(result2)f +(...\)\))2286 2419 y(\(if)g(\(memv)h(key)f('\(atoms)g(...\)\))2443 +2511 y(\(begin)h(result1)g(result2)f(...\)\)\))2247 2602 +y(\(\(case)h(key)2365 2693 y(\(\(atoms)g(...\))f(result1)h(result2)f +(...\))2365 2785 y(clause)g(clauses)h(...\))2286 2876 +y(\(if)f(\(memv)h(key)f('\(atoms)g(...\)\))2443 2967 +y(\(begin)h(result1)g(result2)f(...\))2443 3059 y(\(case)h(key)f +(clause)g(clauses)h(...\)\)\)\)\))2090 3295 y(\(define-syntax)i(and) +2169 3386 y(\(syntax-rules)f(\(\))2247 3478 y(\(\(and\))f(#t\))2247 +3569 y(\(\(and)f(test\))h(test\))2247 3660 y(\(\(and)f(test1)h(test2)f +(...\))2286 3752 y(\(if)g(test1)h(\(and)f(test2)g(...\))g(#f\)\)\)\)) +2090 3988 y(\(define-syntax)j(or)2169 4080 y(\(syntax-rules)f(\(\))2247 +4171 y(\(\(or\))e(#f\))2247 4262 y(\(\(or)g(test\))h(test\))2247 +4354 y(\(\(or)f(test1)h(test2)f(...\))2286 4445 y(\(let)g(\(\(x)g +(test1\)\))2365 4536 y(\(if)g(x)f(x)h(\(or)g(test2)g(...\)\)\)\)\)\)) +2090 4773 y(\(define-syntax)j(let)2169 4864 y(\(syntax-rules)f(\(\)) +2247 4956 y(\(\(let)e(\(\(name)h(val\))f(...\))g(body1)h(body2)f(...\)) +2286 5047 y(\(\(lambda)h(\(name)g(...\))f(body1)g(body2)h(...\))2326 +5138 y(val)e(...\)\))2247 5230 y(\(\(let)h(tag)g(\(\(name)h(val\))f +(...\))g(body1)h(body2)f(...\))2286 5321 y(\(\(letrec)h(\(\(tag)g +(\(lambda)g(\(name)f(...\))2953 5412 y(body1)h(body2)f(...\)\)\))2404 +5504 y(tag\))p eop +%%Page: 44 44 +44 43 bop -300 -125 a Fy(44)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)92 82 y Fm(val)40 b(...\)\)\)\))-143 +328 y(\(define-syntax)i(let*)-65 419 y(\(syntax-rules)h(\(\))14 +511 y(\(\(let*)d(\(\))g(body1)g(body2)h(...\))53 602 +y(\(let)f(\(\))g(body1)g(body2)h(...\)\))14 693 y(\(\(let*)f(\(\(name1) +h(val1\))g(\(name2)f(val2\))h(...\))132 785 y(body1)f(body2)g(...\))53 +876 y(\(let)g(\(\(name1)h(val1\)\))132 967 y(\(let*)f(\(\(name2)h +(val2\))f(...\))210 1059 y(body1)g(body2)h(...\)\)\)\)\))-300 +1313 y Fy(The)23 b(follo)n(wing)f Fq(letrec)e Fy(macro)h(uses)i(the)g +(sym)n(b)r(ol)f Fq()-300 1412 y Fy(in)42 b(place)g(of)g(an)g +(expression)f(whic)n(h)h(returns)f(something)h(that)-300 +1512 y(when)32 b(stored)g(in)g(a)g(lo)r(cation)f(mak)n(es)g(it)i(an)f +(error)e(to)i(try)f(to)h(ob-)-300 1611 y(tain)26 b(the)h(v)-5 +b(alue)25 b(stored)h(in)g(the)g(lo)r(cation)g(\(no)g(suc)n(h)f +(expression)g(is)-300 1711 y(de\014ned)g(in)g(Sc)n(heme\).)36 +b(A)26 b(tric)n(k)e(is)h(used)f(to)h(generate)f(the)h(temp)r(o-)-300 +1811 y(rary)k(names)h(needed)h(to)f(a)n(v)n(oid)f(sp)r(ecifying)i(the)g +(order)e(in)i(whic)n(h)-300 1910 y(the)e(v)-5 b(alues)27 +b(are)h(ev)-5 b(aluated.)38 b(This)28 b(could)g(also)f(b)r(e)i +(accomplished)-300 2010 y(b)n(y)e(using)h(an)f(auxiliary)f(macro.)-143 +2164 y Fm(\(define-syntax)42 b(letrec)-65 2256 y(\(syntax-rules)h(\(\)) +14 2347 y(\(\(letrec)e(\(\(var1)f(init1\))h(...\))f(body)g(...\))53 +2438 y(\(letrec)h("generate)p 723 2438 24 4 v 30 w(temp)p +909 2438 V 29 w(names")132 2530 y(\(var1)f(...\))132 +2621 y(\(\))132 2712 y(\(\(var1)g(init1\))h(...\))132 +2804 y(body)f(...\)\))14 2895 y(\(\(letrec)h("generate)p +723 2895 V 30 w(temp)p 909 2895 V 29 w(names")132 2986 +y(\(\))132 3078 y(\(temp1)f(...\))132 3169 y(\(\(var1)g(init1\))h +(...\))132 3260 y(body)f(...\))53 3352 y(\(let)g(\(\(var1)h +(\))h(...\))132 3443 y(\(let)e(\(\(temp1)g(init1\))h(...\)) +210 3534 y(\(set!)f(var1)g(temp1\))210 3626 y(...)210 +3717 y(body)g(...\)\)\))14 3808 y(\(\(letrec)h("generate)p +723 3808 V 30 w(temp)p 909 3808 V 29 w(names")132 3900 +y(\(x)e(y)h(...\))132 3991 y(\(temp)g(...\))132 4082 +y(\(\(var1)g(init1\))h(...\))132 4174 y(body)f(...\))53 +4265 y(\(letrec)h("generate)p 723 4265 V 30 w(temp)p +909 4265 V 29 w(names")132 4356 y(\(y)e(...\))132 4447 +y(\(newtemp)i(temp)f(...\))132 4539 y(\(\(var1)g(init1\))h(...\))132 +4630 y(body)f(...\)\)\)\))-143 4876 y(\(define-syntax)i(begin)-65 +4967 y(\(syntax-rules)h(\(\))14 5059 y(\(\(begin)e(exp)f(...\))53 +5150 y(\(\(lambda)h(\(\))f(exp)g(...\)\)\)\)\))-300 5404 +y Fy(The)j(follo)n(wing)f(alternativ)n(e)f(expansion)h(for)g +Fq(begin)f Fy(do)r(es)i(not)-300 5504 y(mak)n(e)28 b(use)h(of)g(the)g +(abilit)n(y)f(to)h(write)g(more)f(than)h(one)f(expression)1933 +82 y(in)d(the)h(b)r(o)r(dy)f(of)f(a)h(lam)n(b)r(da)f(expression.)35 +b(In)25 b(an)n(y)f(case,)g(note)h(that)1933 182 y(these)f(rules)g +(apply)g(only)f(if)i(the)f(b)r(o)r(dy)h(of)f(the)g Fq(begin)e +Fy(con)n(tains)h(no)1933 281 y(de\014nitions.)2090 431 +y Fm(\(define-syntax)43 b(begin)2169 522 y(\(syntax-rules)f(\(\))2247 +614 y(\(\(begin)f(exp\))2286 705 y(exp\))2247 796 y(\(\(begin)g(exp1)f +(exp2)g(...\))2286 887 y(\(let)g(\(\(x)g(exp1\)\))2365 +979 y(\(begin)g(exp2)h(...\)\)\)\)\))1933 1228 y Fy(The)34 +b(follo)n(wing)f(de\014nition)i(of)f Fq(do)f Fy(uses)h(a)g(tric)n(k)f +(to)h(expand)g(the)1933 1328 y(v)-5 b(ariable)19 b(clauses.)34 +b(As)19 b(with)i Fq(letrec)c Fy(ab)r(o)n(v)n(e,)j(an)g(auxiliary)e +(macro)1933 1427 y(w)n(ould)36 b(also)f(w)n(ork.)60 b(The)36 +b(expression)f Fq(\(if)42 b(#f)h(#f\))35 b Fy(is)g(used)h(to)1933 +1527 y(obtain)28 b(an)f(unsp)r(eci\014c)h(v)-5 b(alue.)2090 +1676 y Fm(\(define-syntax)43 b(do)2169 1768 y(\(syntax-rules)f(\(\)) +2247 1859 y(\(\(do)e(\(\(var)h(init)f(step)g(...\))g(...\))2443 +1950 y(\(test)h(expr)f(...\))2443 2042 y(command)h(...\))2286 +2133 y(\(letrec)2365 2224 y(\(\(loop)2443 2315 y(\(lambda)g(\(var)f +(...\))2522 2407 y(\(if)g(test)2679 2498 y(\(begin)2757 +2589 y(\(if)g(#f)g(#f\))2757 2681 y(expr)g(...\))2679 +2772 y(\(begin)2757 2863 y(command)2757 2955 y(...)2757 +3046 y(\(loop)g(\(do)g("step")h(var)f(step)g(...\))2992 +3137 y(...\)\)\)\)\)\))2365 3229 y(\(loop)g(init)g(...\)\)\))2247 +3320 y(\(\(do)g("step")h(x\))2286 3411 y(x\))2247 3503 +y(\(\(do)f("step")h(x)e(y\))2286 3594 y(y\)\)\))p eop +%%Page: 45 45 +45 44 bop 3559 -125 a Fy(Example)82 b(45)562 82 y Fu(NOTES)-300 +375 y Fv(Language)32 b(c)m(hanges)-300 552 y Fy(This)27 +b(section)f(en)n(umerates)g(the)h(c)n(hanges)f(that)h(ha)n(v)n(e)f(b)r +(een)h(made)-300 652 y(to)g(Sc)n(heme)h(since)f(the)h(\\Revised)768 +622 y Fr(4)832 652 y Fy(rep)r(ort")f([6)o(])h(w)n(as)f(published.)-217 +876 y Fp(\017)41 b Fy(The)c(rep)r(ort)f(is)h(no)n(w)g(a)f(sup)r(erset)h +(of)g(the)g(IEEE)f(standard)-134 976 y(for)25 b(Sc)n(heme)g([13)o(]:)36 +b(implemen)n(tations)26 b(that)f(conform)g(to)g(the)-134 +1075 y(rep)r(ort)18 b(will)h(also)f(conform)g(to)h(the)g(standard.)33 +b(This)19 b(required)-134 1175 y(the)28 b(follo)n(wing)f(c)n(hanges:) +-41 1341 y Fv({)42 b Fy(The)27 b(empt)n(y)h(list)g(is)f(no)n(w)g +(required)g(to)g(coun)n(t)h(as)f(true.)-41 1474 y Fv({)42 +b Fy(The)59 b(classi\014cation)f(of)i(features)e(as)h(essen)n(tial)g +(or)49 1573 y(inessen)n(tial)43 b(has)g(b)r(een)h(remo)n(v)n(ed.)84 +b(There)44 b(are)e(no)n(w)49 1673 y(three)25 b(classes)g(of)h(built-in) +g(pro)r(cedures:)35 b(primitiv)n(e,)26 b(li-)49 1773 +y(brary)-7 b(,)23 b(and)h(optional.)34 b(The)24 b(optional)f(pro)r +(cedures)g(are)49 1872 y Fq(load)p Fy(,)71 b Fq(with-input-from)o(-f)o +(ile)o Fy(,)c Fq(with-output-)49 1972 y(to-file)p Fy(,)22 +b Fq(transcript-on)p Fy(,)e Fq(transcript-off)p Fy(,)f(and)49 +2071 y Fq(interaction-env)o(iro)o(nm)o(ent)o Fy(,)41 +b(and)i Fq(-)f Fy(and)h Fq(/)f Fy(with)49 2171 y(more)30 +b(than)h(t)n(w)n(o)g(argumen)n(ts.)46 b(None)31 b(of)g(these)g(are)g +(in)49 2271 y(the)d(IEEE)e(standard.)-41 2404 y Fv({)42 +b Fy(Programs)28 b(are)i(allo)n(w)n(ed)g(to)g(rede\014ne)h(built-in)h +(pro)r(ce-)49 2503 y(dures.)46 b(Doing)30 b(so)h(will)g(not)f(c)n +(hange)g(the)h(b)r(eha)n(vior)f(of)49 2603 y(other)d(built-in)h(pro)r +(cedures.)-217 2769 y Fp(\017)41 b Fw(Port)28 b Fy(has)f(b)r(een)h +(added)g(to)f(the)h(list)g(of)f(disjoin)n(t)h(t)n(yp)r(es.)-217 +2935 y Fp(\017)41 b Fy(The)f(macro)e(app)r(endix)h(has)g(b)r(een)h +(remo)n(v)n(ed.)71 b(High-lev)n(el)-134 3034 y(macros)29 +b(are)h(no)n(w)f(part)h(of)h(the)g(main)f(b)r(o)r(dy)h(of)g(the)g(rep)r +(ort.)-134 3134 y(The)39 b(rewrite)g(rules)f(for)h(deriv)n(ed)f +(expressions)f(ha)n(v)n(e)h(b)r(een)-134 3234 y(replaced)19 +b(with)i(macro)e(de\014nitions.)34 b(There)20 b(are)f(no)h(reserv)n(ed) +-134 3333 y(iden)n(ti\014ers.)-217 3499 y Fp(\017)41 +b Fq(Syntax-rules)23 b Fy(no)n(w)k(allo)n(ws)f(v)n(ector)g(patterns.) +-217 3665 y Fp(\017)41 b Fy(Multiple-v)-5 b(alue)24 b(returns,)g +Fq(eval)p Fy(,)f(and)h Fq(dynamic-wind)19 b Fy(ha)n(v)n(e)-134 +3765 y(b)r(een)28 b(added.)-217 3931 y Fp(\017)41 b Fy(The)e(calls)f +(that)h(are)e(required)h(to)g(b)r(e)h(implemen)n(ted)g(in)g(a)-134 +4031 y(prop)r(erly)27 b(tail-recursiv)n(e)e(fashion)i(are)g(de\014ned)h +(explicitly)-7 b(.)-217 4197 y Fp(\017)41 b Fy(`)p Fq(@)p +Fy(')34 b(can)g(b)r(e)h(used)f(within)h(iden)n(ti\014ers.)57 +b(`)p Fq(|)p Fy(')35 b(is)f(reserv)n(ed)e(for)-134 4296 +y(p)r(ossible)27 b(future)h(extensions.)60 4622 y Fu(ADDITIONAL)36 +b(MA)-9 b(TERIAL)-300 4799 y Fy(The)28 b(In)n(ternet)f(Sc)n(heme)h(Rep) +r(ository)e(at)-205 4940 y Fq(http://www.cs.ind)o(ian)o(a.)o(edu)o(/s)o +(ch)o(eme)o(-r)o(epo)o(si)o(tor)o(y/)-300 5081 y Fy(con)n(tains)k(an)h +(extensiv)n(e)f(Sc)n(heme)h(bibliograph)n(y)-7 b(,)31 +b(as)f(w)n(ell)h(as)f(pa-)-300 5181 y(p)r(ers,)40 b(programs,)e +(implemen)n(tations,)i(and)d(other)g(material)g(re-)-300 +5280 y(lated)28 b(to)f(Sc)n(heme.)2704 82 y Fu(EXAMPLE)1933 +256 y Fq(Integrate-system)21 b Fy(in)n(tegrates)27 b(the)h(system)2341 +429 y Fo(y)2385 395 y Ff(0)2382 450 y Fn(k)2445 429 y +Fy(=)23 b Fo(f)2574 441 y Fn(k)2615 429 y Fy(\()p Fo(y)2688 +441 y Fr(1)2725 429 y Fo(;)14 b(y)2803 441 y Fr(2)2840 +429 y Fo(;)g(:)g(:)g(:)f(;)h(y)3065 441 y Fn(n)3110 429 +y Fy(\))p Fo(;)37 b(k)26 b Fy(=)d(1)p Fo(;)14 b(:)g(:)g(:)f(;)h(n)1933 +603 y Fy(of)28 b(di\013eren)n(tial)f(equations)g(with)h(the)f(metho)r +(d)h(of)g(Runge-Kutta.)1933 741 y(The)52 b(parameter)e +Fq(system-derivati)o(ve)45 b Fy(is)51 b(a)g(function)h(that)1933 +840 y(tak)n(es)29 b(a)f(system)h(state)g(\(a)h(v)n(ector)e(of)h(v)-5 +b(alues)29 b(for)f(the)i(state)f(v)-5 b(ari-)1933 940 +y(ables)21 b Fo(y)2176 952 y Fr(1)2213 940 y Fo(;)14 +b(:)g(:)g(:)g(;)g(y)2439 952 y Fn(n)2483 940 y Fy(\))22 +b(and)f(pro)r(duces)g(a)g(system)g(deriv)-5 b(ativ)n(e)21 +b(\(the)h(v)-5 b(al-)1933 1040 y(ues)37 b Fo(y)2130 1010 +y Ff(0)2127 1060 y Fr(1)2164 1040 y Fo(;)14 b(:)g(:)g(:)f(;)h(y)2392 +1010 y Ff(0)2389 1060 y Fn(n)2434 1040 y Fy(\).)64 b(The)36 +b(parameter)f Fq(initial-state)d Fy(pro)n(vides)1933 +1139 y(an)38 b(initial)h(system)f(state,)j(and)d Fq(h)g +Fy(is)g(an)g(initial)h(guess)e(for)h(the)1933 1239 y(length)28 +b(of)g(the)g(in)n(tegration)e(step.)1933 1377 y(The)41 +b(v)-5 b(alue)41 b(returned)g(b)n(y)f Fq(integrate-system)35 +b Fy(is)41 b(an)f(in\014nite)1933 1476 y(stream)27 b(of)h(system)f +(states.)1933 1620 y Fm(\(define)41 b(integrate-system)2012 +1712 y(\(lambda)g(\(system-derivative)i(initial-state)f(h\))2090 +1803 y(\(let)e(\(\(next)h(\(runge-kutta-4)h(system-derivative)h +(h\)\)\))2169 1894 y(\(letrec)d(\(\(states)2561 1986 +y(\(cons)g(initial-state)2796 2077 y(\(delay)h(\(map-streams)h(next) +3581 2168 y(states\)\)\)\)\))2247 2260 y(states\)\)\)\))1933 +2412 y Fq(Runge-Kutta-4)15 b Fy(tak)n(es)20 b(a)f(function,)k +Fq(f)p Fy(,)e(that)g(pro)r(duces)e(a)h(system)1933 2512 +y(deriv)-5 b(ativ)n(e)32 b(from)f(a)h(system)g(state.)50 +b Fq(Runge-Kutta-4)27 b Fy(pro)r(duces)1933 2611 y(a)33 +b(function)g(that)g(tak)n(es)f(a)g(system)h(state)f(and)h(pro)r(duces)f +(a)g(new)1933 2711 y(system)c(state.)1933 2855 y Fm(\(define)41 +b(runge-kutta-4)2012 2946 y(\(lambda)g(\(f)e(h\))2090 +3038 y(\(let)h(\(\(*h)g(\(scale-vector)j(h\)\))2326 3129 +y(\(*2)c(\(scale-vector)k(2\)\))2326 3220 y(\(*1/2)d(\(scale-vector)i +(\(/)e(1)f(2\)\)\))2326 3312 y(\(*1/6)h(\(scale-vector)i(\(/)e(1)f +(6\)\)\)\))2169 3403 y(\(lambda)h(\(y\))2247 3494 y(;;)g(y)f +Fl(is)g(a)g(system)f(state)2247 3586 y Fm(\(let*)i(\(\(k0)h(\(*h)f(\(f) +f(y\)\)\))2522 3677 y(\(k1)h(\(*h)g(\(f)f(\(add-vectors)j(y)e(\(*1/2)g +(k0\)\)\)\)\))2522 3768 y(\(k2)g(\(*h)g(\(f)f(\(add-vectors)j(y)e +(\(*1/2)g(k1\)\)\)\)\))2522 3860 y(\(k3)g(\(*h)g(\(f)f(\(add-vectors)j +(y)e(k2\)\)\)\)\))2326 3951 y(\(add-vectors)i(y)2404 +4042 y(\(*1/6)e(\(add-vectors)i(k0)3149 4134 y(\(*2)e(k1\))3149 +4225 y(\(*2)g(k2\))3149 4316 y(k3\)\)\)\)\)\)\)\))1933 +4499 y(\(define)h(elementwise)2012 4590 y(\(lambda)g(\(f\))2090 +4682 y(\(lambda)g(vectors)2169 4773 y(\(generate-vector)2247 +4864 y(\(vector-length)i(\(car)d(vectors\)\))2247 4956 +y(\(lambda)h(\(i\))2326 5047 y(\(apply)f(f)2600 5138 +y(\(map)g(\(lambda)h(\(v\))f(\(vector-ref)81 b(v)39 b(i\)\))2796 +5230 y(vectors\)\)\)\)\)\)\))1933 5412 y(\(define)i(generate-vector) +2012 5504 y(\(lambda)g(\(size)f(proc\))p eop +%%Page: 46 46 +46 45 bop -300 -125 a Fy(46)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-143 82 y Fm(\(let)40 b(\(\(ans)g(\(make-vector)i +(size\)\)\))-65 174 y(\(letrec)f(\(\(loop)328 265 y(\(lambda)f(\(i\)) +406 356 y(\(cond)g(\(\(=)g(i)g(size\))g(ans\))641 447 +y(\(else)681 539 y(\(vector-set!)i(ans)e(i)f(\(proc)h(i\)\))681 +630 y(\(loop)g(\(+)g(i)f(1\)\)\)\)\)\)\))14 721 y(\(loop)h(0\)\)\)\)\)) +-300 904 y(\(define)h(add-vectors)h(\(elementwise)g(+\)\))-300 +1087 y(\(define)f(scale-vector)-222 1178 y(\(lambda)g(\(s\))-143 +1269 y(\(elementwise)h(\(lambda)f(\(x\))f(\(*)f(x)h(s\)\)\)\)\))-300 +1427 y Fq(Map-streams)24 b Fy(is)k(analogous)e(to)i Fq(map)p +Fy(:)37 b(it)28 b(applies)g(its)g(\014rst)g(argu-)-300 +1527 y(men)n(t)h(\(a)g(pro)r(cedure\))f(to)h(all)f(the)i(elemen)n(ts)e +(of)h(its)g(second)f(argu-)-300 1626 y(men)n(t)g(\(a)f(stream\).)-300 +1776 y Fm(\(define)41 b(map-streams)-222 1867 y(\(lambda)g(\(f)f(s\)) +-143 1958 y(\(cons)g(\(f)g(\(head)g(s\)\))92 2050 y(\(delay)h +(\(map-streams)h(f)d(\(tail)i(s\)\)\)\)\)\))-300 2208 +y Fy(In\014nite)29 b(streams)e(are)h(implemen)n(ted)h(as)f(pairs)f +(whose)h(car)f(holds)-300 2307 y(the)45 b(\014rst)f(elemen)n(t)h(of)f +(the)h(stream)f(and)g(whose)g(cdr)g(holds)g(a)-300 2407 +y(promise)27 b(to)g(deliv)n(er)g(the)h(rest)f(of)h(the)g(stream.)-300 +2556 y Fm(\(define)41 b(head)f(car\))-300 2648 y(\(define)h(tail)-222 +2739 y(\(lambda)g(\(stream\))g(\(force)g(\(cdr)f(stream\)\)\)\))-300 +2996 y Fy(The)32 b(follo)n(wing)e(illustrates)h(the)h(use)g(of)f +Fq(integrate-system)26 b Fy(in)-300 3096 y(in)n(tegrating)g(the)i +(system)407 3317 y Fo(C)482 3261 y(dv)565 3273 y Fn(C)p +482 3298 140 4 v 515 3374 a Fo(dt)654 3317 y Fy(=)23 +b Fp(\000)p Fo(i)836 3329 y Fn(L)903 3317 y Fp(\000)996 +3261 y Fo(v)1036 3273 y Fn(C)p 996 3298 97 4 v 1012 3374 +a Fo(R)552 3622 y(L)619 3566 y(di)691 3578 y Fn(L)p 618 +3603 122 4 v 643 3679 a Fo(dt)773 3622 y Fy(=)g Fo(v)901 +3634 y Fn(C)-300 3795 y Fy(whic)n(h)28 b(mo)r(dels)f(a)g(damp)r(ed)h +(oscillator.)-300 3944 y Fm(\(define)41 b(damped-oscillator)-222 +4035 y(\(lambda)g(\(R)f(L)f(C\))-143 4127 y(\(lambda)i(\(state\))-65 +4218 y(\(let)g(\(\(Vc)f(\(vector-ref)h(state)g(0\)\))171 +4309 y(\(Il)f(\(vector-ref)h(state)g(1\)\)\))14 4401 +y(\(vector)g(\(-)e(0)h(\(+)f(\(/)h(Vc)g(\(*)g(R)f(C\)\))h(\(/)g(Il)f +(C\)\)\))328 4492 y(\(/)g(Vc)h(L\)\)\)\)\)\))-300 4675 +y(\(define)h(the-states)-222 4766 y(\(integrate-system)-104 +4857 y(\(damped-oscillator)i(10000)e(1000)f(.001\))-104 +4949 y('#\(1)g(0\))-104 5040 y(.01\)\))2606 82 y Fu(REFERENCES)2016 +323 y Fy([1])h(Harold)29 b(Ab)r(elson)g(and)h(Gerald)e(Ja)n(y)g +(Sussman)h(with)h(Julie)2145 423 y(Sussman.)i Fw(Structur)l(e)g(and)i +(Interpr)l(etation)f(of)i(Computer)2145 522 y(Pr)l(o)l(gr)l(ams,)50 +b(se)l(c)l(ond)c(e)l(dition.)g Fy(MIT)e(Press,)j(Cam)n(bridge,)2145 +622 y(1996.)2016 801 y([2])41 b(Alan)22 b(Ba)n(wden)g(and)f(Jonathan)g +(Rees.)h(Syn)n(tactic)f(closures.)2145 901 y(In)26 b +Fw(Pr)l(o)l(c)l(e)l(e)l(dings)i(of)g(the)g(1988)h(A)n(CM)f(Symp)l +(osium)g(on)f(Lisp)2145 1000 y(and)k(F)-6 b(unctional)29 +b(Pr)l(o)l(gr)l(amming)p Fy(,)g(pages)d(86{95.)2016 1180 +y([3])41 b(Rob)r(ert)47 b(G.)h(Burger)d(and)i(R.)h(Ken)n(t)e(Dyb)n +(vig.)h(Prin)n(ting)2145 1279 y(\015oating-p)r(oin)n(t)h(n)n(um)n(b)r +(ers)h(quic)n(kly)f(and)g(accurately)-7 b(.)48 b(In)2145 +1379 y Fw(Pr)l(o)l(c)l(e)l(e)l(dings)39 b(of)g(the)g(A)n(CM)f(SIGPLAN)g +('96)h(Confer)l(enc)l(e)2145 1479 y(on)32 b(Pr)l(o)l(gr)l(amming)f(L)l +(anguage)h(Design)f(and)h(Implementa-)2145 1578 y(tion)p +Fy(,)c(pages)f(108{116.)2016 1758 y([4])41 b(William)36 +b(Clinger,)h(editor.)e(The)h(revised)e(revised)h(rep)r(ort)2145 +1857 y(on)42 b(Sc)n(heme,)i(or)d(an)g(uncommon)g(Lisp.)h(MIT)f +(Arti\014cial)2145 1957 y(In)n(telligence)26 b(Memo)g(848,)g(August)g +(1985.)f(Also)h(published)2145 2056 y(as)33 b(Computer)g(Science)g +(Departmen)n(t)g(T)-7 b(ec)n(hnical)32 b(Rep)r(ort)2145 +2156 y(174,)27 b(Indiana)g(Univ)n(ersit)n(y)-7 b(,)27 +b(June)g(1985.)2016 2335 y([5])41 b(William)24 b(Clinger.)e(Ho)n(w)g +(to)h(read)f(\015oating)h(p)r(oin)n(t)g(n)n(um)n(b)r(ers)2145 +2435 y(accurately)-7 b(.)45 b(In)g Fw(Pr)l(o)l(c)l(e)l(e)l(dings)i(of)g +(the)f(A)n(CM)g(SIGPLAN)2145 2535 y('90)i(Confer)l(enc)l(e)f(on)f(Pr)l +(o)l(gr)l(amming)h(L)l(anguage)g(Design)2145 2634 y(and)24 +b(Implementation)p Fy(,)e(pages)d(92{101.)f(Pro)r(ceedings)g(pub-)2145 +2734 y(lished)28 b(as)f Fw(SIGPLAN)j(Notic)l(es)d Fy(25\(6\),)g(June)h +(1990.)2016 2913 y([6])41 b(William)k(Clinger)f(and)g(Jonathan)g(Rees,) +k(editors.)c(The)2145 3013 y(revised)2398 2983 y Fr(4)2461 +3013 y Fy(rep)r(ort)26 b(on)g(the)g(algorithmic)g(language)e(Sc)n +(heme.)2145 3112 y(In)k Fw(A)n(CM)i(Lisp)h(Pointers)d +Fy(4\(3\),)g(pages)e(1{55,)g(1991.)2016 3292 y([7])41 +b(William)46 b(Clinger)e(and)g(Jonathan)g(Rees.)h(Macros)e(that)2145 +3391 y(w)n(ork.)37 b(In)g Fw(Pr)l(o)l(c)l(e)l(e)l(dings)j(of)f(the)g +(1991)i(A)n(CM)e(Confer)l(enc)l(e)2145 3491 y(on)23 b(Principles)i(of)f +(Pr)l(o)l(gr)l(amming)g(L)l(anguages)p Fy(,)e(pages)d(155{)2145 +3591 y(162.)2016 3770 y([8])41 b(William)f(Clinger.)e(Prop)r(er)g(T)-7 +b(ail)38 b(Recursion)h(and)f(Space)2145 3870 y(E\016ciency)-7 +b(.)20 b(T)-7 b(o)19 b(app)r(ear)f(in)i Fw(Pr)l(o)l(c)l(e)l(e)l(dings)j +(of)g(the)g(1998)h(A)n(CM)2145 3969 y(Confer)l(enc)l(e)43 +b(on)f(Pr)l(o)l(gr)l(amming)h(L)l(anguage)f(Design)h(and)2145 +4069 y(Implementation)p Fy(,)29 b(June)e(1998.)2016 4248 +y([9])41 b(R.)26 b(Ken)n(t)f(Dyb)n(vig,)h(Rob)r(ert)f(Hieb,)i(and)e +(Carl)g(Bruggeman.)2145 4348 y(Syn)n(tactic)31 b(abstraction)f(in)h(Sc) +n(heme.)g Fw(Lisp)j(and)f(Symb)l(olic)2145 4447 y(Computation)c +Fy(5\(4\):295{326,)24 b(1993.)1975 4627 y([10])40 b(Carol)35 +b(F)-7 b(essenden,)37 b(William)f(Clinger,)h(Daniel)f(P)-7 +b(.)35 b(F)-7 b(ried-)2145 4726 y(man,)26 b(and)f(Christopher)g(Ha)n +(ynes.)f(Sc)n(heme)i(311)e(v)n(ersion)g(4)2145 4826 y(reference)k(man)n +(ual.)g(Indiana)g(Univ)n(ersit)n(y)f(Computer)h(Sci-)2145 +4926 y(ence)40 b(T)-7 b(ec)n(hnical)40 b(Rep)r(ort)g(137,)i(F)-7 +b(ebruary)39 b(1983.)f(Sup)r(er-)2145 5025 y(seded)28 +b(b)n(y)f([11)o(].)1975 5205 y([11])40 b(D.)68 b(F)-7 +b(riedman,)78 b(C.)67 b(Ha)n(ynes,)77 b(E.)67 b(Kohlb)r(ec)n(k)n(er,)75 +b(and)2145 5304 y(M.)24 b(W)-7 b(and.)24 b(Sc)n(heme)g(84)f(in)n(terim) +g(reference)g(man)n(ual.)g(Indi-)2145 5404 y(ana)34 b(Univ)n(ersit)n(y) +g(Computer)h(Science)f(T)-7 b(ec)n(hnical)34 b(Rep)r(ort)2145 +5504 y(153,)27 b(Jan)n(uary)e(1985.)p eop +%%Page: 47 47 +47 46 bop 3494 -125 a Fy(References)82 b(47)-258 82 y([12])40 +b Fw(IEEE)26 b(Standar)l(d)f(754-1985.)j(IEEE)e(Standar)l(d)f(for)g +(Binary)-88 182 y(Flo)l(ating-Point)31 b(A)n(rithmetic.)e +Fy(IEEE,)d(New)i(Y)-7 b(ork,)26 b(1985.)-258 360 y([13])40 +b Fw(IEEE)i(Standar)l(d)g(1178-1990.)i(IEEE)e(Standar)l(d)g(for)g(the) +-88 459 y(Scheme)f(Pr)l(o)l(gr)l(amming)h(L)l(anguage.)f +Fy(IEEE,)d(New)i(Y)-7 b(ork,)-88 559 y(1991.)-258 737 +y([14])40 b(Eugene)h(E.)h(Kohlb)r(ec)n(k)n(er)e(Jr.)h +Fw(Syntactic)i(Extensions)g(in)-88 836 y(the)38 b(Pr)l(o)l(gr)l(amming) +g(L)l(anguage)g(Lisp.)f Fy(PhD)f(thesis,)i(Indi-)-88 +936 y(ana)27 b(Univ)n(ersit)n(y)-7 b(,)27 b(August)h(1986.)-258 +1114 y([15])40 b(Eugene)57 b(E.)g(Kohlb)r(ec)n(k)n(er)f(Jr.,)64 +b(Daniel)58 b(P)-7 b(.)57 b(F)-7 b(riedman,)-88 1213 +y(Matthias)23 b(F)-7 b(elleisen,)25 b(and)e(Bruce)f(Duba.)i(Hygienic)f +(macro)-88 1313 y(expansion.)43 b(In)g Fw(Pr)l(o)l(c)l(e)l(e)l(dings)i +(of)g(the)g(1986)h(A)n(CM)f(Con-)-88 1413 y(fer)l(enc)l(e)31 +b(on)g(Lisp)h(and)f(F)-6 b(unctional)31 b(Pr)l(o)l(gr)l(amming)p +Fy(,)f(pages)-88 1512 y(151{161.)-258 1690 y([16])40 +b(P)n(eter)g(Landin.)g(A)h(corresp)r(ondence)e(b)r(et)n(w)n(een)i +(Algol)f(60)-88 1790 y(and)28 b(Ch)n(urc)n(h's)e(lam)n(b)r(da)h +(notation:)37 b(P)n(art)26 b(I.)h Fw(Communic)l(a-)-88 +1889 y(tions)j(of)h(the)e(A)n(CM)g Fy(8\(2\):89{101,)24 +b(F)-7 b(ebruary)27 b(1965.)-258 2067 y([17])40 b(MIT)21 +b(Departmen)n(t)f(of)h(Electrical)e(Engineering)g(and)h(Com-)-88 +2167 y(puter)62 b(Science.)f(Sc)n(heme)h(man)n(ual,)69 +b(sev)n(en)n(th)61 b(edition.)-88 2266 y(Septem)n(b)r(er)28 +b(1984.)-258 2444 y([18])40 b(P)n(eter)i(Naur)h(et)h(al.)f(Revised)g +(rep)r(ort)g(on)g(the)h(algorith-)-88 2544 y(mic)24 b(language)f(Algol) +g(60.)g Fw(Communic)l(ations)k(of)h(the)e(A)n(CM)-88 +2643 y Fy(6\(1\):1{17,)g(Jan)n(uary)f(1963.)-258 2821 +y([19])40 b(P)n(aul)34 b(P)n(en\014eld,)h(Jr.)f(Principal)g(v)-5 +b(alues)34 b(and)g(branc)n(h)g(cuts)-88 2921 y(in)40 +b(complex)f(APL.)g(In)h Fw(APL)h('81)h(Confer)l(enc)l(e)g(Pr)l(o)l(c)l +(e)l(e)l(d-)-88 3020 y(ings,)66 b Fy(pages)57 b(248{256.)d(A)n(CM)k +(SIGAPL,)g(San)g(F)-7 b(ran-)-88 3120 y(cisco,)60 b(Septem)n(b)r(er)54 +b(1981.)e(Pro)r(ceedings)g(published)j(as)-88 3220 y +Fw(APL)30 b(Quote)f(Quad)f Fy(12\(1\),)f(A)n(CM,)g(Septem)n(b)r(er)h +(1981.)-258 3398 y([20])40 b(Ken)n(t)25 b(M.)h(Pitman.)g(The)f(revised) +g(MacLisp)g(man)n(ual)g(\(Sat-)-88 3497 y(urda)n(y)39 +b(ev)n(ening)g(edition\).)i(MIT)f(Lab)r(oratory)e(for)h(Com-)-88 +3597 y(puter)28 b(Science)f(T)-7 b(ec)n(hnical)27 b(Rep)r(ort)h(295,)e +(Ma)n(y)h(1983.)-258 3775 y([21])40 b(Jonathan)34 b(A.)h(Rees)f(and)h +(Norman)f(I.)h(Adams)g(IV.)g(T:)f(A)-88 3874 y(dialect)40 +b(of)f(Lisp)h(or,)i(lam)n(b)r(da:)61 b(The)39 b(ultimate)i(soft)n(w)n +(are)-88 3974 y(to)r(ol.)36 b(In)f Fw(Confer)l(enc)l(e)j(R)l(e)l(c)l +(or)l(d)f(of)h(the)f(1982)i(A)n(CM)e(Sym-)-88 4073 y(p)l(osium)31 +b(on)g(Lisp)g(and)h(F)-6 b(unctional)30 b(Pr)l(o)l(gr)l(amming)p +Fy(,)g(pages)-88 4173 y(114{122.)-258 4351 y([22])40 +b(Jonathan)26 b(A.)g(Rees,)h(Norman)f(I.)g(Adams)h(IV,)f(and)h(James) +-88 4451 y(R.)51 b(Meehan.)g(The)g(T)f(man)n(ual,)56 +b(fourth)51 b(edition.)g(Y)-7 b(ale)-88 4550 y(Univ)n(ersit)n(y)35 +b(Computer)h(Science)g(Departmen)n(t,)j(Jan)n(uary)-88 +4650 y(1984.)-258 4828 y([23])h(Jonathan)k(Rees)g(and)g(William)h +(Clinger,)j(editors.)c(The)-88 4927 y(revised)165 4897 +y Fr(3)228 4927 y Fy(rep)r(ort)25 b(on)h(the)h(algorithmic)e(language)g +(Sc)n(heme.)-88 5027 y(In)g Fw(A)n(CM)i(SIGPLAN)g(Notic)l(es)e +Fy(21\(12\),)f(pages)f(37{79,)g(De-)-88 5126 y(cem)n(b)r(er)k(1986.) +-258 5304 y([24])40 b(John)f(Reynolds.)g(De\014nitional)h(in)n +(terpreters)e(for)i(higher)-88 5404 y(order)34 b(programming)f +(languages.)h(In)i Fw(A)n(CM)h(Confer)l(enc)l(e)-88 5504 +y(Pr)l(o)l(c)l(e)l(e)l(dings)p Fy(,)29 b(pages)d(717{740.)e(A)n(CM,)56 +b(1972.)1975 82 y([25])40 b(Guy)31 b(Lewis)e(Steele)i(Jr.)e(and)h +(Gerald)f(Ja)n(y)g(Sussman.)h(The)2145 182 y(revised)25 +b(rep)r(ort)f(on)h(Sc)n(heme,)g(a)g(dialect)g(of)g(Lisp.)f(MIT)i(Ar-) +2145 281 y(ti\014cial)i(In)n(telligence)f(Memo)h(452,)e(Jan)n(uary)g +(1978.)1975 447 y([26])40 b(Guy)26 b(Lewis)e(Steele)h(Jr.)f(Rabbit:)36 +b(a)25 b(compiler)f(for)g(Sc)n(heme.)2145 547 y(MIT)h(Arti\014cial)g +(In)n(telligence)g(Lab)r(oratory)d(T)-7 b(ec)n(hnical)24 +b(Re-)2145 647 y(p)r(ort)k(474,)e(Ma)n(y)h(1978.)1975 +813 y([27])40 b(Guy)29 b(Lewis)g(Steele)f(Jr.)g Fw(Common)k(Lisp:)41 +b(The)32 b(L)l(anguage,)2145 912 y(se)l(c)l(ond)f(e)l(dition.)e +Fy(Digital)e(Press,)f(Burlington)h(MA,)h(1990.)1975 1078 +y([28])40 b(Gerald)58 b(Ja)n(y)f(Sussman)h(and)f(Guy)i(Lewis)e(Steele)i +(Jr.)2145 1178 y(Sc)n(heme:)52 b(an)34 b(in)n(terpreter)g(for)g +(extended)h(lam)n(b)r(da)g(calcu-)2145 1278 y(lus.)24 +b(MIT)g(Arti\014cial)g(In)n(telligence)f(Memo)h(349,)f(Decem)n(b)r(er) +2145 1377 y(1975.)1975 1543 y([29])40 b(Joseph)28 b(E.)g(Sto)n(y)-7 +b(.)29 b Fw(Denotational)i(Semantics:)40 b(The)32 b(Sc)l(ott-)2145 +1643 y(Str)l(achey)39 b(Appr)l(o)l(ach)h(to)e(Pr)l(o)l(gr)l(amming)h(L) +l(anguage)f(The-)2145 1743 y(ory.)29 b Fy(MIT)f(Press,)e(Cam)n(bridge,) +h(1977.)1975 1909 y([30])40 b(T)-7 b(exas)38 b(Instrumen)n(ts,)k(Inc.)d +(TI)g(Sc)n(heme)g(Language)e(Ref-)2145 2008 y(erence)i(Man)n(ual.)f +(Preliminary)g(v)n(ersion)f(1.0,)k(No)n(v)n(em)n(b)r(er)2145 +2108 y(1985.)p eop +%%Page: 48 48 +48 47 bop -300 -125 a Fy(48)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)354 68 y Fu(ALPHABETIC)35 b(INDEX)h(OF)i +(DEFINITIONS)e(OF)i(CONCEPTS,)958 167 y(KEYW)m(ORDS,)e(AND)h(PR)m +(OCEDURES)-300 405 y Fy(The)21 b(principal)g(en)n(try)g(for)g(eac)n(h)f +(term,)j(pro)r(cedure,)e(or)g(k)n(eyw)n(ord)e(is)-300 +505 y(listed)i(\014rst,)g(separated)f(from)g(the)h(other)f(en)n(tries)f +(b)n(y)i(a)f(semicolon.)-300 694 y Fq(!)62 b Fy(5)-300 +794 y Fq(')g Fy(8;)27 b(26)-300 893 y Fq(*)62 b Fy(22)-300 +993 y Fq(+)g Fy(22;)27 b(5,)g(42)-300 1092 y Fq(,)62 +b Fy(13;)27 b(26)-300 1192 y Fq(,@)61 b Fy(13)-300 1292 +y Fq(-)h Fy(22;)27 b(5)-300 1391 y Fq(->)61 b Fy(5)-300 +1491 y Fq(...)g Fy(5;)27 b(14)-300 1591 y Fq(/)62 b Fy(22)-300 +1690 y Fq(;)g Fy(5)-300 1790 y Fq(<)g Fy(21;)27 b(42)-300 +1889 y Fq(<=)61 b Fy(21)-300 1989 y Fq(=)h Fy(21;)27 +b(22)-300 2089 y Fq(=>)61 b Fy(10)-300 2188 y Fq(>)h +Fy(21)-300 2288 y Fq(>=)f Fy(21)-300 2388 y Fq(?)h Fy(4)-300 +2487 y Fq(`)g Fy(13)-300 2662 y Fq(abs)f Fy(22;)27 b(24)-300 +2762 y Fq(acos)61 b Fy(23)-300 2862 y Fq(and)g Fy(11;)27 +b(43)-300 2961 y Fq(angle)60 b Fy(24)-300 3061 y Fq(append)g +Fy(27)-300 3161 y Fq(apply)g Fy(32;)27 b(8,)g(43)-300 +3260 y Fq(asin)61 b Fy(23)-300 3360 y Fq(assoc)f Fy(27)-300 +3459 y Fq(assq)h Fy(27)-300 3559 y Fq(assv)g Fy(27)-300 +3659 y Fq(atan)g Fy(23)-300 3834 y Fq(#b)g Fy(21;)27 +b(38)-300 3934 y(bac)n(kquote)61 b(13)-300 4033 y Fq(begin)f +Fy(12;)27 b(16,)g(44)-300 4133 y(binding)62 b(6)-300 +4232 y(binding)28 b(construct)61 b(6)-300 4332 y Fq(boolean?)e +Fy(25;)27 b(6)-300 4432 y(b)r(ound)63 b(6)-300 4607 y +Fq(caar)e Fy(26)-300 4707 y Fq(cadr)g Fy(26)-300 4806 +y(call)h(9)-300 4906 y(call)27 b(b)n(y)h(need)62 b(13)-300 +5005 y Fq(call-with-curren)o(t-c)o(on)o(ti)o(nua)o(ti)o(on)56 +b Fy(33;)27 b(8,)g(34,)g(43)-300 5105 y Fq(call-with-input-)o(fil)o(e) +56 b Fy(35)-300 5205 y Fq(call-with-output)o(-fi)o(le)g +Fy(35)-300 5304 y Fq(call-with-values)g Fy(34;)26 b(8,)i(43)-300 +5404 y Fq(call/cc)59 b Fy(34)-300 5504 y Fq(car)i Fy(26;)27 +b(42)1933 405 y Fq(case)61 b Fy(10;)27 b(43)1933 505 +y Fq(catch)60 b Fy(34)1933 605 y Fq(cdddar)g Fy(26)1933 +705 y Fq(cddddr)g Fy(26)1933 805 y Fq(cdr)h Fy(26)1933 +905 y Fq(ceiling)f Fy(23)1933 1005 y Fq(char->integer)d +Fy(29)1933 1105 y Fq(char-alphabetic?)f Fy(29)1933 1205 +y Fq(char-ci<=?)i Fy(29)1933 1305 y Fq(char-ci=?)f +Fy(29)1933 1605 y Fq(char-ci>?)h Fy(29)1933 1704 y Fq(char-downcase)e +Fy(29)1933 1804 y Fq(char-lower-case?)f Fy(29)1933 1904 +y Fq(char-numeric?)h Fy(29)1933 2004 y Fq(char-ready?)h +Fy(36)1933 2104 y Fq(char-upcase)g Fy(29)1933 2204 y +Fq(char-upper-case?)e Fy(29)1933 2304 y Fq(char-whitespace?)g +Fy(29)1933 2404 y Fq(char<=?)k Fy(29)1933 2504 y Fq(char=?)g +Fy(29)1933 2804 y Fq(char>?)g Fy(29)1933 2904 y Fq(char?)g +Fy(29;)27 b(6)1933 3004 y Fq(close-input-port)56 b Fy(36)1933 +3104 y Fq(close-output-port)g Fy(36)1933 3204 y(com)n(bination)62 +b(9)1933 3304 y(comma)g(13)1933 3404 y(commen)n(t)g(5;)28 +b(38)1933 3504 y Fq(complex?)59 b Fy(21;)27 b(19)1933 +3604 y Fq(cond)61 b Fy(10;)27 b(15,)f(43)1933 3704 y +Fq(cons)61 b Fy(26)1933 3804 y(constan)n(t)h(7)1933 3904 +y(con)n(tin)n(uation)g(33)1933 4004 y Fq(cos)f Fy(23)1933 +4104 y Fq(current-input-por)o(t)56 b Fy(35)1933 4204 +y Fq(current-output-po)o(rt)g Fy(35)1933 4404 y Fq(#d)62 +b Fy(21)1933 4504 y Fq(define)e Fy(16;)27 b(14)1933 4604 +y Fq(define-syntax)57 b Fy(17)1933 4704 y(de\014nition)63 +b(16)1933 4804 y Fq(delay)d Fy(13;)27 b(32)1933 4904 +y Fq(denominator)58 b Fy(23)1933 5004 y Fq(display)i +Fy(37)1933 5104 y Fq(do)i Fy(12;)26 b(44)1933 5203 y(dotted)i(pair)62 +b(25)1933 5303 y Fq(dynamic-wind)c Fy(34;)26 b(33)1933 +5504 y Fq(#e)62 b Fy(21;)26 b(38)p eop +%%Page: 49 49 +49 48 bop 3673 -125 a Fy(Index)83 b(49)-300 82 y Fq(else)61 +b Fy(10)-300 182 y(empt)n(y)28 b(list)62 b(25;)27 b(6,)g(26)-300 +282 y Fq(eof-object?)58 b Fy(36)-300 381 y Fq(eq?)j Fy(18;)27 +b(10)-300 481 y Fq(equal?)60 b Fy(19)-300 581 y(equiv)-5 +b(alence)27 b(predicate)62 b(17)-300 681 y Fq(eqv?)f +Fy(17;)26 b(7,)i(10,)e(42)-300 780 y(error)60 b(4)-300 +880 y(escap)r(e)27 b(pro)r(cedure)61 b(33)-300 980 y +Fq(eval)g Fy(35;)26 b(8)-300 1080 y Fq(even?)60 b Fy(22)-300 +1179 y(exact)i(17)-300 1279 y Fq(exact->inexact)56 b +Fy(24)-300 1379 y Fq(exact?)k Fy(21)-300 1479 y(exactness)h(19)-300 +1578 y Fq(exp)g Fy(23)-300 1678 y Fq(expt)g Fy(24)-300 +1867 y Fq(#f)g Fy(25)-300 1967 y(false)h(6;)27 b(25)-300 +2066 y Fq(floor)60 b Fy(23)-300 2166 y Fq(for-each)f +Fy(32)-300 2266 y Fq(force)h Fy(32;)27 b(13)-300 2455 +y Fq(gcd)61 b Fy(23)-300 2643 y(h)n(ygienic)g(13)-300 +2832 y Fq(#i)g Fy(21;)27 b(38)-300 2932 y(iden)n(ti\014er)62 +b(5;)27 b(6,)h(28,)e(38)-300 3031 y Fq(if)61 b Fy(10;)27 +b(41)-300 3131 y Fq(imag-part)59 b Fy(24)-300 3231 y(imm)n(utable)j(7) +-300 3331 y(implemen)n(tation)28 b(restriction)61 b(4;)27 +b(20)-300 3430 y(improp)r(er)g(list)62 b(26)-300 3530 +y(inexact)g(17)-300 3630 y Fq(inexact->exact)56 b Fy(24;)27 +b(20)-300 3730 y Fq(inexact?)59 b Fy(21)-300 3829 y(initial)28 +b(en)n(vironmen)n(t)61 b(17)-300 3929 y Fq(input-port?)d +Fy(35)-300 4029 y Fq(integer->char)f Fy(29)-300 4129 +y Fq(integer?)i Fy(21;)27 b(19)-300 4228 y Fq(interaction-envi)o(ron)o +(me)o(nt)56 b Fy(35)-300 4328 y(in)n(ternal)27 b(de\014nition)63 +b(16)-300 4517 y(k)n(eyw)n(ord)d(13;)27 b(38)-300 4706 +y Fq(lambda)60 b Fy(9;)27 b(16,)g(41)-300 4805 y(lazy)g(ev)-5 +b(aluation)62 b(13)-300 4905 y Fq(lcm)f Fy(23)-300 5005 +y Fq(length)f Fy(27;)27 b(20)-300 5105 y Fq(let)61 b +Fy(11;)27 b(12,)g(15,)f(16,)h(43)-300 5204 y Fq(let*)61 +b Fy(11;)26 b(16,)h(44)-300 5304 y Fq(let-syntax)58 b +Fy(14;)27 b(16)-300 5404 y Fq(letrec)60 b Fy(11;)27 b(16,)f(44)-300 +5504 y Fq(letrec-syntax)57 b Fy(14;)27 b(16)1933 82 y(library)61 +b(3)1933 182 y(library)27 b(pro)r(cedure)61 b(17)1933 +282 y Fq(list)g Fy(27)1933 381 y Fq(list->string)d Fy(30)1933 +481 y Fq(list->vector)g Fy(31)1933 580 y Fq(list-ref)h +Fy(27)1933 680 y Fq(list-tail)g Fy(27)1933 780 y Fq(list?)h +Fy(26)1933 879 y Fq(load)h Fy(37)1933 979 y(lo)r(cation)h(7)1933 +1079 y Fq(log)f Fy(23)1933 1263 y(macro)g(13)1933 1363 +y(macro)27 b(k)n(eyw)n(ord)60 b(13)1933 1462 y(macro)27 +b(transformer)60 b(13)1933 1562 y(macro)27 b(use)62 b(13)1933 +1662 y Fq(magnitude)d Fy(24)1933 1761 y Fq(make-polar)f +Fy(24)1933 1861 y Fq(make-rectangular)e Fy(24)1933 1961 +y Fq(make-string)i Fy(30)1933 2060 y Fq(make-vector)g +Fy(31)1933 2160 y Fq(map)j Fy(32)1933 2260 y Fq(max)g +Fy(22)1933 2359 y Fq(member)f Fy(27)1933 2459 y Fq(memq)h +Fy(27)1933 2559 y Fq(memv)g Fy(27)1933 2658 y Fq(min)g +Fy(22)1933 2758 y Fq(modulo)f Fy(22)1933 2858 y(m)n(utable)i(7)1933 +3042 y Fq(negative?)d Fy(22)1933 3142 y Fq(newline)h +Fy(37)1933 3241 y Fq(nil)h Fy(25)1933 3341 y Fq(not)g +Fy(25)1933 3441 y Fq(null-environment)56 b Fy(35)1933 +3540 y Fq(null?)k Fy(26)1933 3640 y(n)n(um)n(b)r(er)i(19)1933 +3740 y Fq(number->string)57 b Fy(24)1933 3839 y Fq(number?)j +Fy(21;)26 b(6,)i(19)1933 3939 y Fq(numerator)59 b Fy(23)1933 +4039 y(n)n(umerical)27 b(t)n(yp)r(es)62 b(19)1933 4223 +y Fq(#o)g Fy(21;)26 b(38)1933 4323 y(ob)5 b(ject)62 b(3)1933 +4422 y Fq(odd?)f Fy(22)1933 4522 y Fq(open-input-file)56 +b Fy(36)1933 4622 y Fq(open-output-file)g Fy(36)1933 +4721 y(optional)62 b(3)1933 4821 y Fq(or)g Fy(11;)26 +b(43)1933 4921 y Fq(output-port?)58 b Fy(35)1933 5105 +y(pair)k(25)1933 5205 y Fq(pair?)e Fy(26;)27 b(6)1933 +5304 y Fq(peek-char)59 b Fy(36)1933 5404 y(p)r(ort)j(35)1933 +5504 y Fq(port?)e Fy(6)p eop +%%Page: 50 50 +50 49 bop -300 -125 a Fy(50)82 b(Revised)147 -156 y Fr(5)212 +-125 y Fy(Sc)n(heme)-300 82 y Fq(positive?)59 b Fy(22)-300 +182 y(predicate)j(17)-300 281 y(pro)r(cedure)27 b(call)61 +b(9)-300 381 y Fq(procedure?)d Fy(31;)27 b(6)-300 481 +y(promise)61 b(13;)27 b(32)-300 580 y(prop)r(er)g(tail)g(recursion)61 +b(7)-300 760 y Fq(quasiquote)d Fy(13;)27 b(26)-300 860 +y Fq(quote)60 b Fy(8;)27 b(26)-300 959 y Fq(quotient)59 +b Fy(22)-300 1139 y Fq(rational?)g Fy(21;)26 b(19)-300 +1239 y Fq(rationalize)58 b Fy(23)-300 1339 y Fq(read)j +Fy(36;)26 b(26,)h(39)-300 1438 y Fq(read-char)59 b Fy(36)-300 +1538 y Fq(real-part)g Fy(24)-300 1637 y Fq(real?)h Fy(21;)27 +b(19)-300 1737 y(referen)n(tially)f(transparen)n(t)61 +b(13)-300 1837 y(region)g(6;)27 b(10,)g(11,)g(12)-300 +1936 y Fq(remainder)59 b Fy(22)-300 2036 y Fq(reverse)g +Fy(27)-300 2136 y Fq(round)h Fy(23)-300 2315 y Fq(scheme-report-en)o +(vir)o(on)o(me)o(nt)c Fy(35)-300 2415 y Fq(set!)61 b +Fy(10;)26 b(16,)h(41)-300 2515 y Fq(set-car!)59 b Fy(26)-300 +2614 y Fq(set-cdr!)g Fy(26)-300 2714 y Fq(setcar)h Fy(42)-300 +2814 y(simplest)28 b(rational)61 b(23)-300 2913 y Fq(sin)g +Fy(23)-300 3013 y Fq(sqrt)g Fy(24)-300 3112 y Fq(string)f +Fy(30)-300 3212 y Fq(string->list)d Fy(30)-300 3312 y +Fq(string->number)f Fy(24)-300 3411 y Fq(string->symbol)g +Fy(28)-300 3511 y Fq(string-append)h Fy(30)-300 3611 +y Fq(string-ci<=?)g Fy(30)-300 3710 y Fq(string-ci=?)f Fy(30)-300 4009 y Fq(string-ci>?)h +Fy(30)-300 4109 y Fq(string-copy)g Fy(30)-300 4208 y +Fq(string-fill!)f Fy(31)-300 4308 y Fq(string-length)g +Fy(30;)27 b(20)-300 4408 y Fq(string-ref)58 b Fy(30)-300 +4507 y Fq(string-set!)g Fy(30;)26 b(28)-300 4607 y Fq(string<=?)59 +b Fy(30)-300 4707 y Fq(string=?)g Fy(30)-300 5005 y Fq(string>?)g +Fy(30)-300 5105 y Fq(string?)g Fy(30;)27 b(6)-300 5205 +y Fq(substring)59 b Fy(30)-300 5304 y Fq(symbol->string)d +Fy(28;)27 b(7)-300 5404 y Fq(symbol?)59 b Fy(28;)27 b(6)-300 +5504 y(syn)n(tactic)g(k)n(eyw)n(ord)60 b(6;)28 b(5,)f(13,)g(38)1933 +82 y(syn)n(tax)g(de\014nition)63 b(17)1933 182 y Fq(syntax-rules)58 +b Fy(14;)26 b(17)1933 364 y Fq(#t)62 b Fy(25)1933 464 +y(tail)28 b(call)62 b(7)1933 564 y Fq(tan)f Fy(23)1933 +663 y(tok)n(en)h(38)1933 763 y(top)28 b(lev)n(el)f(en)n(vironmen)n(t)61 +b(17;)27 b(6)1933 863 y Fq(transcript-off)57 b Fy(37)1933 +962 y Fq(transcript-on)g Fy(37)1933 1062 y(true)62 b(6;)28 +b(10,)e(25)1933 1161 y Fq(truncate)59 b Fy(23)1933 1261 +y(t)n(yp)r(e)k(6)1933 1444 y(un)n(b)r(ound)g(6;)27 b(8,)g(16)1933 +1543 y Fq(unquote)60 b Fy(13;)26 b(26)1933 1643 y Fq(unquote-splicing) +56 b Fy(13;)27 b(26)1933 1743 y(unsp)r(eci\014ed)63 b(4)1933 +1925 y(v)-5 b(alid)28 b(indexes)62 b(30;)27 b(31)1933 +2025 y Fq(values)60 b Fy(34;)27 b(9)1933 2125 y(v)-5 +b(ariable)61 b(6;)28 b(5,)f(8,)g(38)1933 2224 y Fq(vector)60 +b Fy(31)1933 2324 y Fq(vector->list)e Fy(31)1933 2423 +y Fq(vector-fill!)g Fy(31)1933 2523 y Fq(vector-length)f +Fy(31;)27 b(20)1933 2623 y Fq(vector-ref)58 b Fy(31)1933 +2722 y Fq(vector-set!)g Fy(31)1933 2822 y Fq(vector?)i +Fy(31;)26 b(6)1933 3005 y(whitespace)62 b(5)1933 3104 +y Fq(with-input-from-f)o(il)o(e)56 b Fy(35)1933 3204 +y Fq(with-output-to-fi)o(le)g Fy(35)1933 3303 y Fq(write)k +Fy(37;)27 b(13)1933 3403 y Fq(write-char)58 b Fy(37)1933 +3586 y Fq(#x)k Fy(21;)26 b(39)1933 3768 y Fq(zero?)60 +b Fy(22)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/www/Documents/Standards/index.shtml b/www/Documents/Standards/index.shtml new file mode 100644 index 0000000..b0d3e3d --- /dev/null +++ b/www/Documents/Standards/index.shtml @@ -0,0 +1,52 @@ + + + + + + +schemers.org: Documents: Standards + + + +

Standards

+ +

There are two standards for Scheme: an official standard with IEEE +and a de facto one, often called +“RnRS”, short for the +Revisednth +Report on the Algorithmic Language Scheme. In colloquial use, +“Scheme standard” usually refers to the latter.

+ +

+

+ + + + diff --git a/www/Documents/index.shtml b/www/Documents/index.shtml new file mode 100644 index 0000000..edec96a --- /dev/null +++ b/www/Documents/index.shtml @@ -0,0 +1,325 @@ + + + + + + +schemers.org: Documents + + + +

+There are several categories of documents listed here: + +

+ +Jim Bender's +Readscheme +site has lots of additional bibliographic information. +

+ + +

Frequently Asked Questions (FAQ)

+ +

+The comprehensive Scheme FAQ is now a +Wiki. +Please get involved! +

+ + +

Videos

+ +

+Hari Prashanth is kindly maintaining an archive of +videos +related to both education and research. +

+ + +

Articles and Essays

+ +

+

+

+ +

+ +Paul Graham's essays +are a trove of additional material about the Lisp family. +

+ + + +

Introductory Texts

+ +

+These are textbooks dedicated to the introductory programming +curriculum and/or beginning Schemers. + +

+

+ + +

Advanced Texts

+ +

+These are texts on advanced material that either use Scheme as the +object of study or employ Scheme to illustrate key ideas. + +

+

+ + +

Technical Papers

+ + + +

+ +The Scheme Repository has a collection of classical papers, +as the + +repository at CMU has an older one. +

+ + + +

Mailing List Archives

+ +

+The archives of the +RnRS authors' mailing list, dating back to 1984, have recently +become available on-line. +

+ + +

Standards

+ +

The standards have been moved to their own +separate page.

+ + + + diff --git a/www/Education/index.shtml b/www/Education/index.shtml new file mode 100644 index 0000000..2daaa06 --- /dev/null +++ b/www/Education/index.shtml @@ -0,0 +1,64 @@ + + + + + + +schemers.org: Education + + + +This page is meant to be a meta-resource for people interested in +Scheme as a tool in education. It includes information on the +following topics: + + + +

+ +

Scheme in the Curriculum

+

+ +Several institutions now use Scheme as one of the primary languages in +their curriculum. For some years now, Terry Kaufman has conducted a +monthly survey on +Usenet collecting information on the use of Scheme in various courses +at hundreds of universities and high schools. (The document is about +35K in size.) + +

+ +

Educational Infrastructure Projects

+

+ +Some educational infrastructure projects use Scheme as one of the +primary languages: + +

+ + + + diff --git a/www/Events/Workshops/Jan1999/index.shtml b/www/Events/Workshops/Jan1999/index.shtml new file mode 100644 index 0000000..c0886c1 --- /dev/null +++ b/www/Events/Workshops/Jan1999/index.shtml @@ -0,0 +1,57 @@ + + + + + + +Scheme 1999 Workshop + + + +
+ +
+ +



+ +

Scheme '99: Call for Continuation

+ + + +

Trinity University

+ San Antonio, TX
+ 23 January 1999
+ Co-located with POPL'99 +
+
+
+ +



+ +

The +Scheme Workshop in Baltimore succesfully resolved several +outstanding language design issues including a basic framework for +exception handling and a mechanism for adding expressible language +constructs (SRFI).

+ +

Since time ran out on a number of other topics (including modules, +unicode, and classes/records), Rice's Programming Language Team offers to +organize a Scheme workshop in conjunction with POPL'99. People interested +in attending should send email to +

+The workshop will only take place if a sufficient number of people (say 15) +have expressed interest by this deadline.

+ +
+
matthias@rice.edu
+ + + + diff --git a/www/Events/Workshops/Sep1998/minutes b/www/Events/Workshops/Sep1998/minutes new file mode 100644 index 0000000..2c4bd76 --- /dev/null +++ b/www/Events/Workshops/Sep1998/minutes @@ -0,0 +1,421 @@ +From nobody Wed Oct 21 13:48:00 1998 +Path: rice!mufasa.harvard.edu!rutgers!news.sgi.com!nntp.primenet.com!newsfeed.cwix.com!209.95.128.196!news-nyc.telia.net!masternews.telia.net!news-feed.inet.tele.dk!bofh.vszbr.cz!newsfeed.online.no!news.ccs.neu.edu!not-for-mail +From: William D Clinger +Newsgroups: comp.lang.scheme +Subject: my notes from the Scheme workshop at ICFP98 +Date: Mon, 19 Oct 1998 11:40:47 -0400 +Organization: Northeastern University +Lines: 400 +Message-ID: <362B5D7A.22872047@ccs.neu.edu> +References: +Reply-To: will@ccs.neu.edu +NNTP-Posting-Host: bonneville.ccs.neu.edu +Mime-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: 7bit +X-Mailer: Mozilla 4.04 (Macintosh; I; PPC) +To: mkgardne@cs.uiuc.edu +CC: will@ccs.neu.edu +Xref: rice comp.lang.scheme:24631 + +Will Clinger's revised notes (as of 19 Oct 1998) on the +Scheme Workshop before ICFP '98 in Baltimore, +26 September 1998, from one to six o'clock. + +(Will's original notes included an incorrect description of +WITH-HANDLER. These revised notes incorporate Matthew Flatt's +code for WITH-HANDLER, and reflect Shriram Krishnamurthi's +confirmation that he volunteered to provide the web site for RFIs. +Will would like to emphasize that this was not a meeting of the +R*RS authors, and that his opinions as expressed in these notes +may not be shared by any of the other R*RS authors.) + + +Richard Kelsey presided, counted votes, but did not vote himself. +There were 25 attendees (including Kelsey) at the start of the +workshop, growing to at least 32 as the workshop continued. The +written proposals that were available before the workshop are +still available at +http://www.neci.nj.nec.com/homepages/kelsey/workshop.html. + + +Kelsey presented a list of the proposals that had been received, +and added a couple of new topics that were proposed for discussion +even though no formal proposals were in hand. For each proposal +and topic, he counted the number of attendees who wanted to cover +that proposal or topic at the workshop. The most popular topics +were then covered in decreasing order of popularity, except for +a few reorderings to consider related topics together or to delay +a topic that was expected to require an unusually long discussion. +The more complex topics were discussed toward the end of the +workshop. + +[Except as noted within square brackets, the proposals that gained +the approval of a majority of those in attendance at the workshop +are extensions that do not conflict with the Scheme standards.] + + +RECORDS. + +21 people wanted to discuss records. Kelsey reported that Kent +Dybvig and Bill Rozas had been developing a record proposal and +were almost finished. Their proposal was expected to be agreeable +to all. Kent summarized this proposal after the workshop ended +at six o'clock. + + +DELIMITED CHARACTER SYNTAX. + +20 people wanted to discuss an oral proposal by Kent Dybvig that +a delimiter be required following the character syntax. For +example, (#\123) would be an error instead of being equivalent to +(#\1 23) as now. This change would make it possible to add some +extensions to the character syntax, for example to support Unicode. +Dybvig reported that Chez Scheme already requires a delimiter +following the character syntax, and would like to see that behavior +sanctioned by the Scheme standards. + +Will Clinger requested that those present be polled to provide +some record of their opinions for posterity. Kelsey proposed that +the poll be worded as something like "How many people would like +to recommend this to the R*RS authors?" and "How many people would +prefer not to recommend this to the authors?". As the moderator, +Kelsey did not vote on this or any other proposal. + +This straw poll indicated that 24 people wanted to recommend that +a delimiter be required following the character syntax, and none +were opposed to this recommendation. + +[This requires minor changes to both the IEEE standard and the R5RS.] + + +LET-SYNTAX AND LETREC-SYNTAX SHOULD NOT CREATE A NEW SCOPE. + +15 people wanted to discuss an oral proposal by Kent Dybvig that +LET-SYNTAX and LETREC-SYNTAX should not introduce a new scope. +This would allow a LET-SYNTAX or LETREC-SYNTAX form to expand +into one or more definitions that are visible in the scope in +which they appear. This is impossible with the R5RS semantics, +which effectively requires LET-SYNTAX and LETREC-SYNTAX to expand +into an expression of the form (LET () ___). The straw poll for +this issue was 17-3. + +[This requires minor changes to the R5RS.] + + +REPOSITORY FOR PROPOSALS. + +17 people wanted to discuss Alan Bawden's proposal for library +support primitives, which had more to do with process than with +technical changes to the language. Discussion led to a proposal +to create a World-Wide Web repository for proposals in the form +of requests for implementations (RFIs). Creating such a +repository does not require any changes to the R*RS or IEEE +standard, so the straw poll was amended to ask how many people +thought this should be done. The straw poll was unanimously in +favor. + +Shriram Krishnamurthi volunteered to do this. + + +CHECKING FOR FEATURES SUPPORTED BY AN IMPLEMENTATION. + +13 people wanted to discuss Marc Feeley's proposal for allowing +a program to query an implementation to determine its name or +version or other characteristics. This was considered early +because it was relevant to Bawden's proposal. + +The attendees felt that it was more useful to inquire concerning +the properties of an implementation than to ask for the name or +version of the implementation, pointing to experience with the C +preprocessor. Feeley had proposed three different times for this +kind of query: + + A. execution time + B. macro expansion time (as in C) + C. read time (during lexical analysis and parsing, as in + Common Lisp) + +A separate straw poll was taken for each of these three times, +assuming a feature-oriented set of query predicates whose details +would have to be worked out in a future proposal. The results +of these straw polls were as follows: + + A. execution time: 9-7 + B. macro expansion time: 25-0 + C. read time: 0-25 + + +INCLUDING SOURCE CODE. + +12 people wanted to discuss Marc Feeley's proposal for an INCLUDE +form that includes source code from a file. This was considered +early because conditional inclusion of a file is expected +to be one of the most common reasons for checking on the features +that are supported by an implementation. + +Feeley's proposal was amended to allow (INCLUDE ) to +appear anywhere an expression or definition can appear, and to +wrap an implicit (BEGIN ___) around the contents of the file. + +The straw poll was 24-1 in favor of this proposal. Lars Hansen +voted twice, feeling that it was both a good and a bad idea +(bad because program-understanding tools become more sensitive +to the file system). + + +SAFER FILE I/O. + +17 people wanted to discuss an off-the-cuff proposal by Will +Clinger to make opening and closing of files into safer operations. +As amended by the attendees, this proposal adds six new procedures: + + (file-exists? ) + (delete-file ) + (rename-file ) + (with-input-from-port ) + (with-output-to-port ) + (call-with-file-error-handler ...) + +Several implementations already provide the first three, and the +desirability of WITH-INPUT-FROM-PORT and WITH-OUTPUT-TO-PORT has +been noted by many people. + +The second argument to CALL-WITH-FILE-ERROR-HANDLER is required +to be one of the following procedures: + + open-input-file + open-output-file + delete-file + rename-file + +This procedure is called on ... . If a file i/o error +occurs, then the error is signalled by calling with no +arguments and the same implicit continuation that was passed to +CALL-WITH-FILE-ERROR-HANDLER. + +The straw poll was 20-4 in favor of this proposal. + +Kelsey asked how many people wanted to discuss exceptions. Since +several people had arrived since the original vote was taken on +which topics should be discussed, and exceptions were perceived +to have the potential to consume the rest of the workshop, new +votes were taken to gauge the interest in several other topics +that had not yet been discussed. + + +IEEE FLOATING POINT. + +24 people wanted to discuss Brad Lucier's proposal for bringing +Scheme's inexact arithmetic into line with the IEEE floating point +standards and with other recommended practice for transcendental +functions and complex arithmetic. Most of Lucier's proposals +would apply only to implementations that use IEEE floating point +for inexact arithmetic and would thus act as recommendations, +much like the appendices on inexact arithmetic that were published +with the IEEE standard for Scheme. A few of Lucier's proposals +would require changes to the Scheme standards themselves, however. + +Discussion of Lucier's proposal required detailed knowledge of IEEE +floating point arithmetic, which most attendees did not have. The +straw poll was 31-0 in favor of bringing Scheme into line with IEEE +floating point and with current practice, trusting experts to work +out the details. + +[This requires changes to both the IEEE standard and the R5RS: + + The behavior of EQV? on inexact numbers would change. + If x and y are inexact reals represented as IEEE floating + point numbers, then (EQV? x y) would be true if and only if + x and y are equal _and_ have the same base, sign, number of + bits in the exponent, number of bits in the significand, + and the same biased exponents and significands. For + example, (EQV? +0. -0.) would be false, as would + (EQV? 1e8 1d8) in an implementation for which 1d8 has more + precision than 1e8. In most implementations (EQV? x y) + would be computed by a bit-level comparison of the floating + point representations for x and y. + + (REAL? 4.3+0.i) and (REAL? 4.3-0.i) would be false, although + (REAL? 4.3+0i) and (REAL? 4.3-0i) would remain true (assuming + an implementation allows the real and imaginary parts of a + complex number to have a different exactness, which is not + required by the Scheme standards and would not be required + by Lucier's proposal). + + TRUNCATE, ROUND, CEILING, and FLOOR would be defined only on + rationals, not on all reals. The motivation for this is that + infinities and NaNs would be reals but not rationals, and + there is no meaningful integer value that these procedures + could return for infinities and NaNs. Similarly the first + argument to RATIONALIZE would be required to be a rational. + + The branch cuts for certain transcendental functions would + change to conform to current practice. + + Kahan reportedly would like for (MAX 1 +nan. 2) to return 2 + instead of +nan., but this would conflict with the guiding + principle of Scheme's inexact arithmetic so I oppose this. + Returning an inexact 2. would be consistent with Scheme's + arithmetic, and would not require any changes to the Scheme + standards. + +The changes to EQV? and REAL? would probably be the most visible +in programs. Generally speaking, the people who want these +changes are also the only ones who are likely to notice them.] + + +EXCEPTIONS. + +18 people wanted to discuss exceptions. Starting with the +Friedman/Haynes/Dybvig proposal, the attendees designed the +core of an exception system with three procedures and one +special syntactic form: + + (current-exception-handler) + (call-with-handler ) + (raise ) + (with-handlers (( ) ...) ) + +These operations must be augmented by an abstract data type of +exceptions, including operations that: + + create an exception + return an error message that is appropriate for an exception + extract other information that a programmer might want to + package with an exception + tell whether an exception is continuable + tell whether an exception is an i/o exception + ... + +Finally, an implementation would arrange for errors to be signalled +by calling the current exception handler with an appropriate +exception. + +(CURRENT-EXCEPTION-HANDLER) returns the dynamically current +exception handler. Implementations would provide a default +handler, much like (CURRENT-INPUT-PORT) is the default input +port. + +(CALL-WITH-HANDLER ) uses DYNAMIC-WIND or an +equivalent technique to make the dynamically current +exception handler, and calls . The dynamic scope of the + ends when returns. + +(RAISE ) calls the current exception handler with +one argument, the . RAISE could be defined by + + (define (raise exception) + ((current-exception-handler) exception)) + +but post-workshop deliberation has suggested that RAISE +should be used only for non-continuable errors, in which case it +would be defined by something like + + (define raise + (letrec ((raise + (lambda (exception) + ((current-exception-handler) exception) + (raise )))) + raise)) + +where is an exception whose error message +would be something like "Contining a non-continuable exception +is not allowed.". Programmers who want to raise a continuable +exception could call (CURRENT-EXCEPTION-HANDLER) directly. + +(WITH-HANDLERS (( ) ...) ) is syntactic +sugar for something like Matthew Flatt's untested + + (define-syntax with-handlers + (syntax-rules () + ((_ ((predicate handler-procedure) ...) b1 b2 ...) + ((call-with-current-continuation + (lambda (k) + (let ((rh (current-exception-handler)) + (preds (list predicate ...)) + (handlers (list handler-procedure ...))) + (call-with-handler + (lambda (exn) + (call-with-handler + rh + (lambda () + (let f ((preds preds) (handlers handlers)) + (if (not (null? preds)) + (if ((car preds) exn) + (k (lambda () ((car handlers) exn))) + (f (cdr preds) (cdr handlers))) + (rh exn)))))) + (lambda () + (call-with-values + (lambda () b1 b2 ...) + (lambda args + (k (lambda () (apply values args)))))))))))))) + +The idea here is that is evaluated within the dynamic scope +of an exception handler that takes an exception and tests it using +the predicates to select the specific handler that should handle +the exception. If no predicate returns true, then the handler +that was current when the WITH-HANDLERS form was entered is used. +The selected handler is called after the handler that was current +when the WITH-HANDLERS form was entered has been reestablished as +the current handler. This helps to avoid infinite loops when a +buggy exception handler generates an exception itself. + +Most programmers are expected to use WITH-HANDLERS and RAISE as +a mechanism for exiting from a computation that encounters an error, +while the lower-level CALL-WITH-HANDLER and CURRENT-EXCEPTION-HANDLER +mechanisms allow for very fast continuable exceptions that do not +necessarily correspond to errors. + +Kent Dybvig and Matthew Flatt were appointed to finish this proposal. +Marc Feeley and Will Clinger volunteered to review it. + +The straw poll on this exception proposal was 31-1. Alan Bawden +voted negatively out of concern for problems that are not solved +by this proposal. The exception data type represents a kind of +language that programs use to communicate between the code that +encounters an unusual situation and the handler that deals with +the situation. The design of this language is the hard part. +We are hoping to finesse that by using a very simple abstract +data type of exceptions for now, leaving extensions of that data +type to the future. + + +UNICODE. + +12 people wanted to discuss Marc Feeley's proposal for supporting +Unicode in Scheme. This proposal contained many parts, several +of which appeared to be separable. Some of the syntactic details +are fairly arbitrary and are justified by appeals to compatibility +with other languages; these details deserve more thought. + +The attendees seemed to feel that some such proposal is needed but +that the details of Feeley's proposal were a little too unsettled. + +The straw poll was 27-2 in favor of developing and adopting some +similar proposal, but was not a vote on the details of this +specific proposal. The negative votes apparently reflected a +feeling that it was not a good idea to vote on the general idea +of a proposal instead of its specific details. + +[If Feeley's proposal is interpreted as a proposal for how an +implementation of Scheme should support Unicode, then the only +incompatibilities between Feeley's proposal and the existing +Scheme standards appear to be conflicts that could be resolved +by requiring a delimiter to follow the character notation, as +was discussed toward the beginning of the workshop. + +If Feeley's proposal is interpreted as a proposal for requiring all +implementations of Scheme to support Unicode, however, then there +are a great many incompatibilities between Feeley's proposal and +the current Scheme standards. + +It is not clear which of these interpretations was intended. +Feeley phrased his proposal in terms of a language called "System +Scheme", whose precise relationship to the Scheme standards is +unclear.] + + +The workshop ended at about six o'clock. + diff --git a/www/Events/index.shtml b/www/Events/index.shtml new file mode 100644 index 0000000..315629e --- /dev/null +++ b/www/Events/index.shtml @@ -0,0 +1,119 @@ + + + + + + +schemers.org: Future and Past Events + + + +

Past Events

+ +

+The annual Scheme and Functional Programming workshop series +has its own +home page. +

+ + + + + + diff --git a/www/Formats/base-url b/www/Formats/base-url new file mode 100644 index 0000000..39310ca --- /dev/null +++ b/www/Formats/base-url @@ -0,0 +1 @@ +http://www.schemers.org \ No newline at end of file diff --git a/www/Formats/body-tag.shtml b/www/Formats/body-tag.shtml new file mode 120000 index 0000000..80cf38e --- /dev/null +++ b/www/Formats/body-tag.shtml @@ -0,0 +1 @@ +prefix.shtml \ No newline at end of file diff --git a/www/Formats/prefix.shtml b/www/Formats/prefix.shtml new file mode 100644 index 0000000..4da1608 --- /dev/null +++ b/www/Formats/prefix.shtml @@ -0,0 +1,19 @@ + + + + +

+ + + + + +
+ logo +

+ '(schemers . org):
+ an improper list
+ of Scheme resources
+ —[DS] +
diff --git a/www/Formats/signature.shtml b/www/Formats/signature.shtml new file mode 120000 index 0000000..6830ad7 --- /dev/null +++ b/www/Formats/signature.shtml @@ -0,0 +1 @@ +suffix.shtml \ No newline at end of file diff --git a/www/Formats/ssi-config.shtml b/www/Formats/ssi-config.shtml new file mode 100644 index 0000000..75a9cc5 --- /dev/null +++ b/www/Formats/ssi-config.shtml @@ -0,0 +1 @@ + diff --git a/www/Formats/suffix.shtml b/www/Formats/suffix.shtml new file mode 100644 index 0000000..31eefc6 --- /dev/null +++ b/www/Formats/suffix.shtml @@ -0,0 +1,28 @@ +
+

+ +
+ +

+
+ + + + + + + + +
+ Last modified + + Powered by + PLT
+ Site Contact +
+

+ + diff --git a/www/Implementations/Other/index.shtml b/www/Implementations/Other/index.shtml new file mode 100644 index 0000000..7401b6c --- /dev/null +++ b/www/Implementations/Other/index.shtml @@ -0,0 +1,51 @@ + + + + + + +schemers.org: Implementations: Other + + + +

Other Implementations

+ +

This page lists some of the Scheme implementations that are not in +active use but may be of interest for historical reasons. + +

    + +
  • PC-Scheme +(graciously made freely available by Texas Instruments) and PC-Scheme/Geneva +(no longer being developed) + +
  • VSCM (no +longer being developed) + +
  • XLISP (a superset +of Scheme; successor of XScheme) + +
  • +Scheme->C (but see its current versions) + +
  • MacScheme + +
  • Hobbit + +
  • Orbit + +
  • Rabbit + +
  • Inlab-Scheme + +
  • UMB Scheme + +
  • T +
+ + + + diff --git a/www/Implementations/index.shtml b/www/Implementations/index.shtml new file mode 100644 index 0000000..bf4d3f1 --- /dev/null +++ b/www/Implementations/index.shtml @@ -0,0 +1,58 @@ + + + + + + +schemers.org: Implementations + + + + +

Implementations

+ +

There are numerous implementations of Scheme, both free and +commercial, that run on various hardware platforms and operating +systems. Many of these offer advanced facilities such as object +systems, graphical user interfaces, systems programming resources and +so forth. See the + +fairly complete list. +

+ + +

Libraries

+ +

+The + +FAQ provides information +on Scheme libraries. +

+ + +

Graphical Programming Environments

+ +

+There is a growing number of integrated graphical Scheme programming +environments, including those listed below. + +

+

+ + + + diff --git a/www/Miscellaneous/carolan.txt b/www/Miscellaneous/carolan.txt new file mode 100644 index 0000000..1f637d1 --- /dev/null +++ b/www/Miscellaneous/carolan.txt @@ -0,0 +1,35 @@ +From: john carolan +To: scheme@cs.rice.edu +Subject: Thank you +Date: Sat, 15 Nov 1997 12:25:53 -0500 + +Hello + +I have used DrScheme for a few days now and have enjoyed it very much. + +I am very impressed with the quality and usability of the software and I am +grateful that you have made it available on the 'Net. + +I worte this rhyme today and I thought you might like it as a token of my +appreciation. + +"Reflecting in those things that might have been: +How Isaac Newton further far has seen +confronting that vast Ocean of Unknown +the shoulders that he stands on are his own. +First on his left, then his remaining hand +the half-dimensioned fractal of the strand. +Dreams (that he is dreaming in a dream) +the lithe recursive calculus of Scheme." + +Thank you, and enjoy! + + +johnc@glock.ie John Carolan Dublin, Ireland + +( broadcasting from Commack, Long Island ) + +Enter not the Internet + to spoil the Cyberspace. +Engage your fellow netizens + with tolerance and grace. diff --git a/www/Miscellaneous/imagine.txt b/www/Miscellaneous/imagine.txt new file mode 100644 index 0000000..1bff904 --- /dev/null +++ b/www/Miscellaneous/imagine.txt @@ -0,0 +1,35 @@ +Posted to comp.lang.scheme on January 17, 1996, for Scheme's twentieth +birthday: + + ((I m a g i n e) + (shriram@cs.rice.edu) + (((Imagine there's no FORTRAN) + (It's easy if you try) + (No SML below us) (Above us only Y) + (Imagine all the people) + (Living for their Chez)) + ((Imagine there's no memory leaks) + (It isn't hard to do) + (Nothing to malloc(3) + or free(3) for) + (And no (void *) too) + (Imagine all the people) + (Living in parentheses)) + ((You may say I'm a Schemer) + (But I'm not the only one) + (I hope someday you'll join us) + (And the world will be as + (lambda (f) (lambda (x) (f x))))) + ((Imagine those continuations) + (I wonder if you can) + (No need for C or pointers) + (A brotherhood of Dan) + (Imagine all the people) + (GCing all the world)) + ((You may say I'm a Schemer) + (But I'm not the only one) + (I hope someday you'll join us) + (And the world will be as + (lambda (f) (lambda (x) (f x))))))) + +'shriram diff --git a/www/Miscellaneous/index.shtml b/www/Miscellaneous/index.shtml new file mode 100644 index 0000000..76b6c33 --- /dev/null +++ b/www/Miscellaneous/index.shtml @@ -0,0 +1,54 @@ + + + + + + +schemers.org: Miscellany + + + +

Doggerel

+ +

+Scheme seems to inspire more than its fair share of doggerel. Like +many Scheme programs themselves, these works are brief but passionate. +They are also, unlike so many pieces that involve C or Unix or +networks, upbeat and positive; don't come here to find laments about +core dumps. Here are some examples: + +

    + +
  1. Shriram +Krishnamurthi wrote (Imagine) to celebrate Scheme's +twentieth birthday. + +
  2. John Carolan expressed his emotions on +encountering Scheme in verse. + +
  3. Jeremy +Buhler contributed this bit for the +Seasonal Lisp +Machine. + +
+

+ +

Of Machines and Monsters

+ +

+The folks at Helsinki University of Technology have created a Schememonster +to follow Alan Perlis's exhortation to ``keep fun in computing''. +

+ +

+Oh yeah, did we mention the Seasonal Lisp +Machine? +

+ + + + diff --git a/www/Miscellaneous/lispm-verse.txt b/www/Miscellaneous/lispm-verse.txt new file mode 100644 index 0000000..65ed5e9 --- /dev/null +++ b/www/Miscellaneous/lispm-verse.txt @@ -0,0 +1,4 @@ +Let hackers and wireheads grovel and curse, + Chase pointers and seg fault in C; +Our LispM shall never fandango on core -- + Content with hard CDR are we! diff --git a/www/News/index.shtml b/www/News/index.shtml new file mode 100644 index 0000000..41e189c --- /dev/null +++ b/www/News/index.shtml @@ -0,0 +1,20 @@ + + + + + + +schemers.org: Placeholder + + + + + + +

This page has been re-distributed. Activities now belong in their +own space. News will be put on the main page, +then moved into its appropriate category.

+ + + + diff --git a/www/Other/index.shtml b/www/Other/index.shtml new file mode 100644 index 0000000..7e046b2 --- /dev/null +++ b/www/Other/index.shtml @@ -0,0 +1,50 @@ + + + + + + +schemers.org: Other Resources + + + +

+Other sources of information on Scheme include archives at: + +

+

+ +

+The principal Scheme newsgroup is comp.lang.scheme. +

+ +

+Graham Hutton at the University of Nottingham maintains an +excellent Functional +Programming FAQ, which has more general information. +

+ + + + diff --git a/www/Positions/aleri-2002-02-15.txt b/www/Positions/aleri-2002-02-15.txt new file mode 100644 index 0000000..e54e303 --- /dev/null +++ b/www/Positions/aleri-2002-02-15.txt @@ -0,0 +1,16 @@ +[This posting is NO LONGER OPEN. However, you may want to keep an + eye on future openings at Aleri.] + +Aleri (www.aleri.com) is looking for strong functional programmers +interested in joining our team in NY. We are building a novel +high-performance database engine using an in-house functional language +and have plenty of interesting algorithmic problems to solve. Ideal +candidates would also have some background in databases. We are +looking to hire one or two people right away, though we may hire more +in the future. New members would join a team of a dozen talented +programmers, situated in Greenwich Village, Manhattan, that includes +myself and Jon Riecke. Aleri is startup company with significant +revenue as well as VC funding, and offers both stock options and +competitve salary compensation. + +Andrew Wright (andrew.wright@aleri.com) diff --git a/www/Positions/content-integrity-2000-6-23.txt b/www/Positions/content-integrity-2000-6-23.txt new file mode 100644 index 0000000..26f2733 --- /dev/null +++ b/www/Positions/content-integrity-2000-6-23.txt @@ -0,0 +1,119 @@ +Time-stamp: <00/06/25 13:40:27 shriram> + added text about Scheme with Joe Marshall's permission + +Time-stamp: <00/06/23 14:06:32 shriram> + original posting + +[Though this posting is about Common Lisp jobs, the company welcomes + and may consider at an advantage Schemers who are willing to make the + transition to Common Lisp and thus harness skills from both paradigms.] + +Content Integrity is developing Webcentric Change Management products +for Business-to-Business ("B2B") web sites. This is an exciting +newly-funded startup opportunity, equity is available, and candidates +will be responsible for developing state of the art web applications. + +The positions below are described from back-end to front-end. Back +end developers should be bit tweakers who know how to make scalable +high performance data stores on object and/or relational +databases. Front end developers should be top notch web application +developers who know every DHTML and Java applet browser interface +trick in the book. In the middle are people familiar with application +servers and all that goes with it (load balancing, parallelism, and +every socket/security/authentication protocol under the sun). + +Most of the product is coded in Common Lisp and Java, but a variety of +other language and technology skills are required depending on the +position. There are some substantial data modeling and analysis tasks +centered on XML and HTML. The models will be built using our unique +versioned modeling engine. + +The environment is friendly, relatively ego-free, and occasional +telecommuting is okay. "Can-do" people will be rewarded, whether +you're just out of school or you've been doing this work for 20 years. + +The office location is TBD since we're going to get new office space +one way or the other. Currently CII is in Braintree, but we're +considering moving to points north. The commute is traffic-free +(opposite the heavy volume traffic flows). It's 23 minutes from the +route 20 / route 128 intersection, and 20 minutes from Boston. We're +right on the Braintree red line and commuter rail stop. + +Please send resumes to jobs@content-integrity.com. Principals only, +please. + + + General Skills + +* Cross platform, HP/UX, Solaris, Linux, Windows NT. +* C, C++, Common Lisp, Java. +* Understanding revision/version/change/configuration + management principles a big plus. +* Web application development experience. + + Database (2 positions) (C/C++, Common Lisp) + +* Large scale object database work with ObjectStore. +* Low level database representations to achieve optimal + clustering and compaction (including compression) of data. +* Nested and parallel transactions, deadlock avoidance, + transaction restarts, hierarchical lock models. +* Top notch object-relational mapping skills for + deploying relational-db solutions based on complex, high + performance object models. +* Superlative Objectstore and Common Lisp skills to + develop Lisp to ObjectStore interfaces. + + Application Server (3 positions) + (COM, CORBA, JavaBeans, Common Lisp, Java) + +* Load balancing techniques. +* Strong HTTP protocol experience, request forwarding, + secure sockets, SHTTP. +* Compressed and secure data transmissions, + authentication, directory services integration (LDAP). +* Proxy servers and other HTTP oriented cache techniques. +* Microsoft Office Server Extensions APIs. + + XML, HTML model development (2 people) (Common Lisp, Java) + +* Stong knowledge of W3C XML specifications, experience + writing and using XML processors. +* Experience writing HTTP/HTML spiders and analyzing HTML + page content. + + XML, HTML UI development (2 positions) (Common Lisp, Java) + +* Experience developing DHTML and/or Java AWT Applet + based interfaces for presenting structural interfaces for + navigation and presentation of XML and HTML content. + + Web application user interface specialist (1 position) (DHTML, XML) + +* Experience developing state of the art user-friendly + web application interfaces with DHTML for diverse browser + clients. EXPERT with Javascript and all the tools of the + trade for developing elegant and effective web application + interfaces. + +* Ability to design the total navigation scheme for an + application that really flows for non-technical application users. + + Quality Assurance Positions (3 Positions) + + This is not your average QA position. You'll be called + upon to code, script, and work with third party tools + that ensure robust 24x7 mission and data critical web + application operation. + +* Common Lisp and/or cross-platform PERL scripting + experience. +* Experience writing unit tests in Common Lisp and/or + Java. +* Experience writing object-database tests at the API + level (any language) +* Experience with user-agent (browser, http-client) UI + testing. +* CROSS PLATFORM REGRESSION experience a must. Our tests + and test agents must run on Windows NT and Unix equally + well. diff --git a/www/Positions/dartmouth-2004-09-08.txt b/www/Positions/dartmouth-2004-09-08.txt new file mode 100644 index 0000000..04ef8dc --- /dev/null +++ b/www/Positions/dartmouth-2004-09-08.txt @@ -0,0 +1,19 @@ +We're looking for an experienced Scheme programmer at Darmouth +College's Interactive Media Lab, in Lebanon, New Hampshire: + + http://iml.dartmouth.edu/ + +We're working on two related projects right now: Training software for +first responders, and our underlying multimedia engine, Tamale: + + http://iml.dartmouth.edu/tamale/ + +We need somebody to help out on both projects. Desirable skills +include: + + * Scheme or LISP + * C++ + * Multimedia development + * User interface design + +Contact eric DOT kidd AT dartmouth DOT edu for more information. diff --git a/www/Positions/getdemocracy-2006-12-15.txt b/www/Positions/getdemocracy-2006-12-15.txt new file mode 100644 index 0000000..4b3d0d3 --- /dev/null +++ b/www/Positions/getdemocracy-2006-12-15.txt @@ -0,0 +1,19 @@ +Participatory Culture Foundation makes the open-source video RSS app, +Democracy Player - getdemocracy.com + +We're looking for a top-notch programmer who can work independently, +communicate well, and occasionally step back from the code to +contemplate improvements to program architecture or our development +process. Most of our code is in dynamic languages like Python and +Ruby, so a clear understanding of language concepts is important. +Our developers are fans of Scheme and we think that someone who knows +Lisp / Scheme would make a good candidate for joining our +organization. + +We are a new organization based in Worcester, MA but do not require +that the developer move to Worcester-- you may work remotely. This is +a full-time position working on Democracy Player related projects. + +TO APPLY: Send a short note about why you're interested in working +with us along with a casual resume or description of what your +skills / experience is to jobs@pculture.org. diff --git a/www/Positions/hamilton-2010-04-29.txt b/www/Positions/hamilton-2010-04-29.txt new file mode 100644 index 0000000..8ac69b8 --- /dev/null +++ b/www/Positions/hamilton-2010-04-29.txt @@ -0,0 +1,25 @@ + Functional Programming and Automatic Differentiation + + PhD Studentships + Postdoctoral Positions + +We are adding exact first-class derivative calculation operators +(Automatic Differentiation or AD) to the lambda calculus, and +embodying the combination into a production-quality optimising +compiler. Our research prototype compiler generates object code +competitive with the fastest current systems, which are based on +FORTRAN. We are seeking PhD students and postdocs with interest and +experience in relevant areas: programming language theory, numeric +computing/numeric linear algebra, or differential geometry; and a +burning drive to help lift big iron numeric computing out of the 1960s +and into a newer higher order. Specific sub-projects include: +compiler and numeric programming environment construction; writing, +simplifying, and generalising numeric algorithms through the use of AD +operators; and associated type/lambda calculus/PLT/real computation +issues. + +The project headquarters will be in the Hamilton Institute, NUI +Maynooth, Ireland, http://www.hamilton.ie/. + +Applications to: + "Barak A. Pearlmutter" \ No newline at end of file diff --git a/www/Positions/index.shtml b/www/Positions/index.shtml new file mode 100755 index 0000000..79217b6 --- /dev/null +++ b/www/Positions/index.shtml @@ -0,0 +1,87 @@ + + + + + + +schemers.org: Positions + + + +

+Though this site does not endorse any particular commercial +organization, we are enthusiastic about the existence of Functional Jobs, which posts +information about jobs that demand functional programmers. Please +take a look at their offerings. (However, note that we have not +vetted their content.) +

+ +

+ +

+Here are other known positions; some of these may since have been +filled: + +

+ +

+ +

+If you are interested in posting a job advertisement here, please +contact the maintainer! +

+ + + + diff --git a/www/Positions/infineon-2005-02-07.txt b/www/Positions/infineon-2005-02-07.txt new file mode 100644 index 0000000..6ca63e6 --- /dev/null +++ b/www/Positions/infineon-2005-02-07.txt @@ -0,0 +1,33 @@ +This is posted on behalf of Infineon Technologies. + +Essential Duties and Responsibilities: + +We're looking for a Software Engineer to join the Silicon Validation +Group in the Optical Networking department (3 months temporary +employment) in San Jose, CA. In this function you will work on the +test automation environment and write test scripts for particular +designs. If required you will also write low level device API's to +simplify the software interface to the design. + +Education & Experience: + +You should possess a B.S. or M.S. degree in Computer Science or +engineering with at least three years of experience + +Additional qualifications include: + +-Knowledge of Scheme, C, Tcl/tk +-Fundamental knowledge of networks and networking technology including + but not limited to SONET/SDH, GFP, VCAT/LCAS, TCP/IP, Ethernet, Fibre + Channel. +-Knowledge of software automation to enable automated testing with + various test equipment. +-Basic knowledge of lab tools like oscilloscopes or logic analyzers. + +In this position you will contribute to the product validation from +the time it's being handed over from the design group to the time it's +been delivered to the customer. Commitment to quality and a desire to +understand the root cause of a problem are key for a validation +engineer. + +Please e-mail your resume to amy.schroyer@infineon.com diff --git a/www/Positions/intranexus-2005-10-03.txt b/www/Positions/intranexus-2005-10-03.txt new file mode 100644 index 0000000..444672f --- /dev/null +++ b/www/Positions/intranexus-2005-10-03.txt @@ -0,0 +1,49 @@ +JOB DESCRIPTION: + +We are seeking highly motivated and experienced developers to work +with a dynamic group of focused and creative individuals to design and +develop an exciting new product in a fast-paced, sometimes stressful +environment. + +RESPONSIBILITIES: + +Analyze, design, and develop a Java-based, n-tier application software +package. + +EDUCATION: + +Requires Bachelor's degree or technical certification or equivalent +work experience. + +REQUIRED SKILLS: + +. Experience with a functional programming language such as Scheme + or Lisp. +. 5+ years experience in object-oriented development +. 3+ years of strong hands-on development experience in Java + programming, including J2EE platform and design patterns +. Ability to navigate in multiple computing environments + (Solaris, AIX, Linux, Windows) +. Knowledge of Internet and Web technology +. Ability to take initiative, be flexible and work independently or + with a team +. Experience in the development of relational database applications +. Excellent verbal and written communication skills +. Willingness to travel + +DESIRED SKILLS: + +. Experience with XML, XSLT, Hibernate, and JUnit +. Large application development + +Description: + +IntraNexus is a healthcare software development company, working on +the leading edge of technology. + +IntraNexus offers an energetic, team-oriented work environment, +opportunities for career advancement, competitive salaries, and +excellent benefits (health, dental, life, disability, vision, 401k, +retirement, profit sharing, pre-tax reimbursement). + +Please send your resume to bmoore@intranexus.com. \ No newline at end of file diff --git a/www/Positions/isgroup-2004-06-08.txt b/www/Positions/isgroup-2004-06-08.txt new file mode 100644 index 0000000..142a8ad --- /dev/null +++ b/www/Positions/isgroup-2004-06-08.txt @@ -0,0 +1,14 @@ +We are looking for a Scheme P/A for a contract or a job with a client +in Miami, FL. The salary level or contract rate will depend on +experience. If you are interested, please send a resume. Mike +Kenneth + +Mike Kenneth +The I.S. Group Inc. +P.O. Box 810773 +Boca Raton, FL 33481-0773 +800 239 0056 + +mkenneth@isgroupinc.com + +http://isgroupinc.com/ diff --git a/www/Positions/lshift-2002-10-16.txt b/www/Positions/lshift-2002-10-16.txt new file mode 100644 index 0000000..36d6edb --- /dev/null +++ b/www/Positions/lshift-2002-10-16.txt @@ -0,0 +1,46 @@ +LShift Vacancies + +http://www.lshift.net/jobs.shtml + +We are looking for developers with proven experience in a 'commercial +environment' to start as soon as possible for a negotiable salary. +Options/equity available for the right people. +Specific Requirements + +At least three of the following areas: + + * Concurrency theory, process calculi, linear logic + * Distributed systems + * Functional programming and logic programming + * Virtual machine implementation + * Compiler implementation + * O/S implementation + * .NET, C#, VC++, COM and Windows in general + * extending MS applications, e.g. VisualStudio, Visio + +General Requirements + +Applicants should be 'all-rounders' with the following basic skill set: + + * Good Unix and Windows experience + * Versed in several (>3) programming languages + +Other areas of experience are likely to include: + + * Databases / SQL + * Web development + * System administration + * IT security + * XML, EJB, Corba + * Apache / IIS + * Version control systems + * IDEs + * CMSs + +Other characteristics we are expecting of applicants: + + * You take responsibility seriously + * You are considered to be opinionated about at least one tech issue + * You are sometimes observed to be laughing without good reason + * You're not the kind of person that will reply complaining about + how unrealistic this job spec is diff --git a/www/Positions/mak-2005-03-30.txt b/www/Positions/mak-2005-03-30.txt new file mode 100644 index 0000000..5c09384 --- /dev/null +++ b/www/Positions/mak-2005-03-30.txt @@ -0,0 +1,41 @@ +MAK develops solutions to link, simulate and visualize the virtual +world. We also leverage our experience to provide custom simulation +solutions. MAK builds PC-based leadership trainers, tailored product +enhancements, and custom synthetic environments to meet our customers' +needs. MAK's software products are C++ libraries for simulation +networking, 3D graphics, physics-based simulation, and tactical-map +user interfaces. Our custom simulation solutions and trainers build +upon and expand our product offerings for targeted solutions to +customer problems. Our work also includes research and development in +networking, graphical user interfaces, display management, applied +artificial intelligence, and distributed computing. + +Applied AI Engineer + +We are now looking for an Applied AI Engineer to help us design, +develop and support our simulation software toolkits and applications. +Candidates should have a strong background in practical application of +artificial intelligence theory, methodologies and tools (e.g., +Bayesian belief networks, rule-based systems, intelligent agents), and +should also have strong object-oriented design skills and experience +developing commercial software. + +BSCS, MSCS or equivalent, plus at least 6 years relevant experience. +Significant prior experience developing applications with C++ and Lisp +is required. We have close relationships with our customers, and +therefore good verbal and written communication skills are also +required. + +Experience with one or more of the following is a plus: +- Proposal writing +- Distributed agent architectures, domain specific languages +- Real-time simulation +- C4I system development +- Product quality API development +- Reusable class framework implementation + +Please send resumes via postal or electronic mail ONLY to: Human +Resources, MAK Technologies, Inc., 10 Fawcett St., Cambridge, MA 0213; +E-mail: hr@mak.com Principals only, please. + +MAK is an Equal Opportunity Employer. diff --git a/www/Positions/memetrics-2000-11-16.txt b/www/Positions/memetrics-2000-11-16.txt new file mode 100644 index 0000000..b415b42 --- /dev/null +++ b/www/Positions/memetrics-2000-11-16.txt @@ -0,0 +1,43 @@ +[Editorial Note: The Chief Technology Officer is Ken Dickey, a + long-standing contributor in Lisp and Scheme circles.] + +Subject: International search for Lisp programmers, Memetrics P/L (Sydney, +Australia) + +Memetrics (Sydney, Australia) + +As a result of new product developments and continued growth, +Memetrics is conducting a world-wide search for software engineers +experienced in Lisp or other functional programming languages and +related technologies. + +Memetrics is a group of leading international engineers, scientists, +and business professionals who are working together to implement a +range of radically new presentation optimization systems using +Lisp. We have attracted substantial private and government funding and +our first product, XOS, was launched in San Francisco this week. For +more company details, see our website, www.memetrics.com + +Because we're a young organization, you will have an excellent +opportunity to have an impact on the evolution of the company. We +offer a great work environment full of interesting and challenging +problems. + +Required Experience and Skills + +Ideally you will possess at least three years experience in an object +oriented development environment. Exposure to Lisp and CORBA in a +commercial setting would be advantageous. Candidates should be +comfortable using Unix and/or NT. Successful candidates also must +have excellent communication skills, and be willing to work closely +within a tight-knit team. Experience with SQL would also be helpful. + +Salary + +Compensation is based on skills and previous experience in addition to +a generous pre-IPO stock option package. Australian and overseas +applicants will be considered. Come to the city of which Lonely Planet +says "...you would have to die and go to heaven before you see a more +spectacular setting for a city." + +Please send resumes to jobs@memetrics.com diff --git a/www/Positions/merced-systems-2004-05-13.txt b/www/Positions/merced-systems-2004-05-13.txt new file mode 100644 index 0000000..65cf12d --- /dev/null +++ b/www/Positions/merced-systems-2004-05-13.txt @@ -0,0 +1,24 @@ +Merced Systems is looking for senior level developers who are familiar +with Scheme and are excited to be developing with Scheme in a product +development environment. + +We are looking for developers who can join Merced's development team +in designing and building our expanding product line. + +This is a classic software development position within a product +company. As such, the main skill desired is the ability to solve +extremely complex problems in a short amount of time in a way that is +harmonious with our overarching design and strategy. You must be very +creative and very hard working with an excellent design sense. We are +also looking for an individual with a phenomenal implementation +ability. + +We are located in beautiful Redwood Shores, CA just south of San +Francisco. + +Please send your resume to tech-jobs@mercedsystems.com with only "Lead +Developer Application" in the title of the email. Please send your +resume in one of the following formats: Plain ASCII, PDF, or HTML +only. Thank you. + +See http://www.mercedsystems.com/careers.html for more details. diff --git a/www/Positions/nasa-ames-2000-5-31.txt b/www/Positions/nasa-ames-2000-5-31.txt new file mode 100644 index 0000000..68a5401 --- /dev/null +++ b/www/Positions/nasa-ames-2000-5-31.txt @@ -0,0 +1,59 @@ +[This posting is NO LONGER OPEN. However, you may want to keep an + eye on future openings at NASA Ames.] + +Newsgroups: comp.lang.scheme +Organization: NASA/Raytheon +Message-ID: <8h3q7i$mgk$1@nnrp1.deja.com> +From: K. Michael Dalal +Subject: Subject: Scheme job at NASA (repost) +Date: Wed, 31 May 2000 19:47:01 GMT + +Note: This is a reposting of an ad that appeared last week, with a few +modifications. + +We are currently seeking a software engineer who enjoys doing creative, +intellectually challenging work as part of a team of engineers and +researchers. This position is with Raytheon at the NASA Ames Research +Center, located in Mountain View, CA. + +The selected individual will support the development of an innovative 3D +simulation software package that allows designers to incorporate Human +Factors principals into crewstation designs. + +The software, developed on a Unix platform, is primarily coded in C++, +but its core cognitive models are written in Scheme using functional and +object-oriented approaches. We are in need of a strong Lisp/Scheme +programmer to develop new cognitive models, as well as enhance the +existing ones. This is a focused position offering extremely +interesting work for someone who loves Lisp and has an interest in +cognitive science or AI. In addition, the position offers the +opportunity to work with a team of cognitive modelers in developing new +models and defining new directions for research, development and +application of the software. + +This position requires: + - excellent verbal and written communication skills + - expertise in Scheme or Lisp + - familiarity with functional and object-oriented programming + - good working knowledge of C++ or C + - creativity, enthusiasm, self-motivation, team player + - BS degree or higher in relevant field (or equivalent knowledge) + - US Citizenship or Permanent Residency + +Desired are: + - background/interest in cognitive science, human factors, or AI + - experience with language design and implementation (interpreters) + - experience in developing graphical user interfaces + - experience developing software on a Unix platform + - graduate degree + +If interested please respond to Mike Dalal. Send email to the address +formed by concatenating my last name, the "at" sign, and +"eos.arc.nasa.gov". I prefer ascii, though ps, html, pdf, and word are +fine. You may also send postal mail: + + NASA Ames Research Center + MS 262-12 + Moffett Field, CA 94035 + +or FAX: 650-604-0801 diff --git a/www/Positions/octanti-2003-01-28.txt b/www/Positions/octanti-2003-01-28.txt new file mode 100644 index 0000000..65874a8 --- /dev/null +++ b/www/Positions/octanti-2003-01-28.txt @@ -0,0 +1,45 @@ +[This posting is NO LONGER OPEN. However, you may want to keep an + eye on future openings at this organization.] + +Octanti Associate GmbH is looking for excellent hackers. + +The job is extending equity derivative systems at a bank in Munich. This job +requires relocation to Munich. German language skills are absolutely +unnecessary. + +Much of the current work involves modifying a legacy system so that it can +be used with dynamic languages, particular Common Lisp. New projects will be +as independent of the legacy system as is technically and practically +feasible. For performance reasons (and due to the advanced state of Common +Lisp implementations), these will likely be done in Common Lisp. + +We expect, in the next year, to do interesting work with parallel +programming and partial evaluation (and likely CAML). + +This job requires a lot rigorous methods (e.g. program transformation), +abstract thinking and problem solving, working with other systems (e.g. +Excel, legacy systems), and lots of hacking. Much of the existing code is +C++. In production, where the users use the legacy system, there is no +development environment. + +This is a very unique and challenging job -- a very stimulating and +rewarding one -- for someone who likes programming and computation. In order +to do our job (e.g. help traders make money) we must use advanced techniques +in a difficult environment. But advanced techniques are used only when they +are likely to pay off -- things are very much "worse is better." + +Particularly difficult: we make lots of small changes to our systems, and +these must not break anything. We have to make (informal) proofs of +correctness -- appropriate to the risks -- to make sure that things will +very likely work. Also, we have limited ability to control our +software/hardware environment. + +Good experience would include: embedded systems work, compiler work, +numerically intensive programming, parallel processing, correctness proofs, +extending systems like Scheme-48 or working in PreScheme. + +We have a lisp-flavored ad at www.franz.com. + +If you are interested, please send me information about yourself: + +heath.putnam@octanti.com diff --git a/www/Positions/oxford-2008-04-03.txt b/www/Positions/oxford-2008-04-03.txt new file mode 100644 index 0000000..f768d51 --- /dev/null +++ b/www/Positions/oxford-2008-04-03.txt @@ -0,0 +1,29 @@ +Position: 3 LISP Developers +Location: Cambridge, MA +Length: 9+ months +Skills: +(1) Strong LISP Background +(2) Airline experience +(3) Has experience working with large teams on complex projects (50+ppl) + +** If has Airline experience, but no LISP - will consider. If has LISP +and no airline exp - will consider. + +Must also have excellent communication skills with the team and +product management. + +Duties: Fix bugs and work on new features. + +Client is in development phase and has additional releases coming out. + +Contact: + +Roger Neild +Oxford & Associates + a division of On Assignment +155 West Street Suite 7 +Wilmington, MA 01887 + +978.284.6290 FAX +roger_neild@oxfordcorp.com +www.oxfordcorp.com diff --git a/www/Positions/readytalk-2007-01-20.txt b/www/Positions/readytalk-2007-01-20.txt new file mode 100644 index 0000000..ec3b1ac --- /dev/null +++ b/www/Positions/readytalk-2007-01-20.txt @@ -0,0 +1,36 @@ +We are a Web and audio conferencing company in Denver, Colorado. +We're looking for talented, enthusiastic software developers who +can thrive in a fast-paced environment. + +We're not a "Scheme shop", but rather a "best-tool-for-the-job +shop". Those tools include Java, C++, Perl, Bash, Scheme, PHP, +and other languages. The existing codebase is primarily Java. +We develop for several platforms (Windows, OSX, Linux, Solaris, +etc.), producing both end-user software and backend systems, with +emphasis on performance and reliability. + +We're looking for talent more than specific skills, but we +consider the following most valuable: + + * Experience with several languages + * Experience with large-scale and high-performance networking + * GUI design and implementation skills + * Low-level Windows programming skills + * Experience with open source and free software + * Experience with web application systems and protocols + * Advanced database programming skills + +Above all else, candidates should love learning new things and sharing +them with others. + +Details are available here: + + http://readytalk.com/about-us/careers-3.html + +Applicants will find a written interview available on that page. In +addition, please answer the following: What is +call-with-current-continuation, and in what ways can it be used? + +Please email your resume and answers to jobs.schemers@readytalk.com. + +Thanks for your interest. diff --git a/www/Positions/rider-2000-6-19.txt b/www/Positions/rider-2000-6-19.txt new file mode 100644 index 0000000..a4c14cb --- /dev/null +++ b/www/Positions/rider-2000-6-19.txt @@ -0,0 +1,22 @@ +Time-stamp: <00/06/19 18:21:32 shriram> + +Longterm contract opportunity with a B2B in Mountain View California. We +need a consultant who has experience with Scheme. You will help our +customers migrate from scheme to javascript. + +Requirements: +-Ability to read and convert Scheme +-Javascript +-Solid communication skills + + +If there are any questions or concerns, please let me know. + +Thanks in advance +George Rider +Technical Recruiter +Consultants Online +6130 Stoneridge Mall Road Suite 105 +Pleasanton, CA 94588 +grider@consultantsonline.net +(925) 734-1944 x 105 diff --git a/www/Positions/streamtech-2007-11-12.txt b/www/Positions/streamtech-2007-11-12.txt new file mode 100755 index 0000000..962c43f --- /dev/null +++ b/www/Positions/streamtech-2007-11-12.txt @@ -0,0 +1,5 @@ +Lispers & Schemers wanted at Streamtech (The Netherlands) + +This ad has been superceded by a newer one: + +http://www.schemers.org/Positions/streamtech-2008-09-11.txt diff --git a/www/Positions/streamtech-2008-09-11.txt b/www/Positions/streamtech-2008-09-11.txt new file mode 100755 index 0000000..1ef5b1e --- /dev/null +++ b/www/Positions/streamtech-2008-09-11.txt @@ -0,0 +1,57 @@ +Lispers & Schemers wanted at Streamtech (The Netherlands) + + +* About us + +Streamtech is a young development company in The Netherlands. We are +continuously looking for programming talent, in the form of both +fulltime employees and interns. We spend our time building complex +web applications using mainly Common Lisp. Notably, we offer the Bitt +suite of online profiling software. + + +* Who we're looking for + +Programming to you is not just a job but a hobby. You've been +programming for fun for years. + +You have at least some experience with Lisp or Scheme. + +You like the net. + +You're not blind to practical demands, but you relish doing things the +right way. When something seems to work but you're not sure how or +why, you bang your head against it until you understand. + +You love exploring interesting new languages, concepts and approaches. + +Having played with Haskell, Smalltalk, Prolog, Erlang, or other +interesting languages gets you bonus points. The same goes for +language/compiler implementation, kernel hacking, crypto and other +interesting activities. + +Finally, you are willing to relocate to the The Hague area. + + +* What we offer + +A challenging, fun job in a great team that does not think Java, OOP +and XML are the answer to every question. + + +* How to apply + +Please send your resume to jobs@streamtech.nl. Include at least one +piece of code you wrote somewhat recently. A good way to get your +resume noticed would be to solve one or more of the problems on +http://streamtech.nl/site/problem+set in your language of choice and +send us the code. + + +* International applicants + +We love receiving international applicants. Unfortunately, however, +strict immigration laws make it impossible for us to hire fulltime +employees from outside the EU. +Note that this restriction does not apply for interns. + diff --git a/www/Positions/transmeta-2001-12-17.txt b/www/Positions/transmeta-2001-12-17.txt new file mode 100644 index 0000000..bbe6858 --- /dev/null +++ b/www/Positions/transmeta-2001-12-17.txt @@ -0,0 +1,27 @@ +Newsgroups: comp.lang.scheme,comp.lang.lisp +Subject: Scheme Related Job (Transmeta) +From: Jason Wilson +Message-ID: +Organization: Transmeta Corporation +Date: 17 Dec 2001 19:01:31 -0800 + +We're looking for an experienced Scheme or Lisp programmer to work on +advanced tools used in all areas of microprocessor development. +Currently, we are finishing a 30,000 line Scheme program which is a +central part of our verification effort. + +You should have strong programming skills, a love of functional +programming (and being an Emacs user won't hurt you a bit), a quick +mind, some architecture or compiler experience, automation experience, +and experience developing software in other languages besides Scheme +or Lisp (because Scheme or Lisp aren't right for every job that we +will ask you to do). If you run away from things you don't +understand, this job isn't for you. + +Pluses would be knowledge of Verilog and CAD tools, assembly language +programming experience, performance analysis, and advanced +verification systems. + +All resumes should be in ASCII text. + +Please send resumes directly to: jason_aaron_wilson@yahoo.com diff --git a/www/Research/index.shtml b/www/Research/index.shtml new file mode 100644 index 0000000..c49bd2f --- /dev/null +++ b/www/Research/index.shtml @@ -0,0 +1,27 @@ + + + + + + +schemers.org: Research + + + +This page will list various research efforts that use Scheme as one of +the underlying objects of study. Current efforts cover the following +areas (amongst others): + +
    +
  • modular programming +
  • object-oriented programming +
  • type systems and program verification +
  • concurrent and distributed programming +
  • macros +
  • efficient compilation strategies and optimizations +
  • integration with other languages +
+ + + + diff --git a/www/Tutorials/index.shtml b/www/Tutorials/index.shtml new file mode 100644 index 0000000..3967bc0 --- /dev/null +++ b/www/Tutorials/index.shtml @@ -0,0 +1,20 @@ + + + + + + +schemers.org: Tutorials + + + +There are many fine introductory +textbooks from which you can learn the principles and pragmatics +of programming in Scheme. If you're looking for a Web-based tutorial, +we recommend How +to Design Programs published by MIT Press. + + + + diff --git a/www/Uses/index.shtml b/www/Uses/index.shtml new file mode 100644 index 0000000..0ec912f --- /dev/null +++ b/www/Uses/index.shtml @@ -0,0 +1,45 @@ + + + + + + +schemers.org: Scheme at Work + + + +

+This page will list some of the large-scale uses of Scheme, in both +commercial applications and prominent free software. +

+ +

The GIMP is an image +manipulation program freely redistributable under the GNU Public Licence. It +provides extensive scripting capabilities via +an embedded Scheme interpreter, allowing users to create images +procedurally from a Scheme program.

+ +

The Scheme window manager, scwm, is a window manager for +X-Windows written in Guile. Users can configure Scwm by writing +Scheme code.

+ +

GNOME AisleRiot uses Scheme for most of its programming. +(Reported by Shlomi Fish (shlomif@vipe.technion.ac.il).)

+ +

The +Festival speech synthesis package probably uses Scheme; at +least, that's what its command line interface uses. +(Reported by Nathan Valentine nrvale0@pop.uky.edu.)

+ +

The +Sawfish window manager is written in Lisp. +(Reported by Nathan Valentine nrvale0@pop.uky.edu.)

+ + + + + diff --git a/www/Wares/index.shtml b/www/Wares/index.shtml new file mode 100644 index 0000000..d4b16a4 --- /dev/null +++ b/www/Wares/index.shtml @@ -0,0 +1,29 @@ + + + + + + +schemers.org: Wares + + + +

+Several people have created Scheme-related loot; here are some +samples: +

+

+ + + + diff --git a/www/favicon.ico b/www/favicon.ico new file mode 100644 index 0000000..3b04678 Binary files /dev/null and b/www/favicon.ico differ diff --git a/www/index.shtml b/www/index.shtml new file mode 100644 index 0000000..fe2d067 --- /dev/null +++ b/www/index.shtml @@ -0,0 +1,140 @@ + + + + + + +Welcome to schemers.org! + + + +

+

+ + + + +
+ +(welcome '(schemers . org)) + +
+
+

+ +

+

+ + + + +
I intend this but for a Scheme of a larger Design.
+ --Woodward, Nat. Hist. Earth, 1723
+
+

+ +
+ +

+News Items and Announcements +

+ +

+Please check out the Scheme workshops from +2014, +2015, +2016 +(with videos), +2017 +(with videos), +2018 +(with videos), +and +2019 +(with videos). +

+ +

+Manuel Serrano was invited to give a seminar on Hop to +the +Collège de France. +

+ +

+Now that both +R6RS +and +R7RS Small +have been ratified, work has begun on +R7RS Large. +

+ +

+Blogspace is alive with good Scheme articles. +See Planet Scheme! +You can also find some articles +linked from here. +

+ +

+Check out the Scheme Meetup site. +

+ +

+The Regular Fare +

+ +

+

+ + + + +
+ +
(case (what-would-you-like-to-do?)
+  ((learn)
+   (choose-from FAQ
+                textbooks
+                videos
+                blogs
+                standards
+                tutorials
+                other documents
+                education))
+  ((program)
+   (choose-from implementations
+                libraries
+                environments
+                Reqests for Implementation (SRFI)))
+  ((socialize)
+   (choose-from ABQ Lisp/Scheme - Albuquerque, NM, USA
+                Bay Area Lisp & Scheme - Bay Area, CA, USA (videos)
+                Boston Lisp Announce - Boston, MA, USA
+                Scheme UK - London, UK
+                munich-lisp - Munich, Germany
+                CRACL - Los Angeles, CA, USA
+                Lambdaheads - Vienna, Austria
+                FringeDC - Washington, DC, USA))
+  ((work)
+   (choose-from jobs))
+  ((stay-informed)
+   (choose-from events))
+  (else
+   (choose-from the lighter side
+                wares
+                other resources)))
+
+
+
+

+ +

+(If you're looking for the fine folks of Schemers Inc., they're at +www.schemers.com.) +

+ + + + + diff --git a/www/logo-contrib.mbox b/www/logo-contrib.mbox new file mode 100644 index 0000000..34211f0 --- /dev/null +++ b/www/logo-contrib.mbox @@ -0,0 +1,1002 @@ +From VM Thu Dec 2 16:13:48 1999 +X-VM-Message-Order: + (1 2 5 6 3 4 7 8) +X-VM-Summary-Format: "%n %*%a %-17.17F %-3.3m %2d %4l/%-5c %I\"%s\"\n" +X-VM-Labels: nil +X-VM-VHeader: ("Resent-" "From:" "Sender:" "To:" "Apparently-To:" "Cc:" "Subject:" "Date:") nil +X-VM-Last-Modified: (14932 59282 19853) +X-VM-POP-Retrieved: nil +X-VM-Bookmark: 1 +Content-Length: 3982 +Status: RO +X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] + ["3982" "Thu" "2" "December" "1999" "14:07:54" "-0800" "Maria Smith" "maria@axiomweb.com" "<10588.991202@axiomweb.com>" "66" "logo" "^From:" nil nil "12" "1999120222:07:54" "logo" nil nil nil] + nil) +Return-Path: +Received: from srfi.schemers.org (srfi.schemers.org [128.42.6.206]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id QAA14742 + for ; Thu, 2 Dec 1999 16:05:52 -0600 (CST) +Received: from smtpout.telus.net (smtpout.telus.net [207.194.28.79]) + by srfi.schemers.org (8.9.0/8.9.0) with ESMTP id QAA01033 + for ; Thu, 2 Dec 1999 16:05:49 -0600 (CST) +Received: from zelda (00-a0-c9-85-6a-46.bconnected.net [209.53.6.97]) + by smtpout.telus.net (8.9.1a/8.9.1) with ESMTP id OAA12496 + for ; Thu, 2 Dec 1999 14:05:41 -0800 (PST) +X-Mailer: The Bat! (v1.36) S/N 3AA035D6 +Reply-To: maria +Organization: Axiom Web Design +X-Priority: 3 (Normal) +Message-ID: <10588.991202@axiomweb.com> +Mime-Version: 1.0 +Content-Type: multipart/mixed; boundary="----------CFFE24E151DE81" +From: Maria Smith +To: shriram@srfi.schemers.org +Subject: logo +Date: Thu, 2 Dec 1999 14:07:54 -0800 + +------------CFFE24E151DE81 +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: 7bit + +Hello Shriram, + + I was visiting your site and noticed you were looking for a new + logo. Here's a modified version of what I will be using on my new + site learn-to-program.com (due out hopefully in January). + + I guess since I'm writing you now I might as well ask if it's okay + to link to schemers.org and what you would prefer the description + to be. (Right now it's "A current and informative site") + + +maria +------------CFFE24E151DE81 +Content-Type: image/png; name="schemers.png" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; filename="schemers.png" + +iVBORw0KGgoAAAANSUhEUgAAAJYAAABcCAMAAAC7rLwCAAAAYFBMVEWw78DdyfDk7+jy9/X////J +7c3ertedj/iU4aCs5bSM0YzqlKpl4ITCVqKUTtxXV/95INJwEM9mAMwoKP8REf8BAf9C2WhtxW0b +0UlPuE8AzDMqqioMngzaSm7XN2DUKlUvoH9aAAAACXBIWXMAAAsSAAALEgHS3X78AAAACXRFWHRD +b21tZW50AACJKo0GAAAImUlEQVR4nM1ai5bqKgxVENuiy7fWttT+/19eAn2EJHWcOTpzWWfNmaEt +bHY2IQQWK7FoI9e/uygl1y+kSp3f80+CmYqpt1qql2AV9/o2M4p3F72t74VQz2HpW30XOfxMAQ44 +YQyA8a/9krDGDu+sQwqrqCXwHy3mVtfUkATW9vdRednc65pMsRSWR3X/dVTBjvU2qUlg5XVdc11l ++7diWO75wE1N+MKwvK4IaGjlfMneCkvvhQa9mRJ9IVhAJTNhdhUG949lz9sEeWFDLdInZEZo38K7 +Qa1grJclqQJLIU4mWMDjnaA6z6DStNXZIr/ocVFDei9R3zgsUB2ZpnOodHZcvwrrsBOXsex6JbiA +rnpEM/wSTFinJj9fL5KulofDy2St9O4kzpg9s+Mdm3GABb6BTMM9G1Eo2Wn3rUkgv7+80DFvsbl6 +WJGsxIl5ns9CL7vT7jugfFmfDgIu33yqkKCiga4eSSArsaG+iGTtxD6el+x05N/w9u+IrggrknXD +L3kTCsrKTieuK71BM2Cz4bgO0ligg6StLaIrwopk4Xm4vFKSoaxPgoCXbYJk07K5tzwJlmc9LBCI +CCuQlSyHfizchvoomGPzIDDWHXMfO2k4Z98FpksHEPcJVsSJpQVDubKGpNY3HSOH41Kn04m9tqd0 +IXICrC3COfNJwHriytp0gpY2DNdBMGN2JXTd6tFLLSaYSPEwTTgsT9aBIu1ajmqlHx2BnwkjChbB +7OcTOwDL1FTxGf0iNHNiNtQt1xGUTdemGgQrMrpg7Ng1FvVoxcWIEkcPe8ovFE/WiYDYdA/Ri+mO +2vYg0EV7QfQArNuEEo2DKh4GTHTre4821JWrEnxt16V4dwJde2KTOBWDmABWlFY9dRmsfiGNgDyO +adWm621YOecq8iSlS/g6SgUruB7F5WGp+Ff95P2Z8T666B1Uo1bWYSaXXfdIXgVhUitmdPQTP4vR +pAjWXoJ1YrDWXdeFX3KQZWnxs65LJ0OARSZMMMoVGXtS02JUPHJbEiyh3c0graDKIrFiS63IR9XD +QhTeRs1PsJDbolqEknFYbZd4LffkWYRFxKWfwtoyWNc5WKk4upSRBq+p7WDgoRzh+7RJ1k9P0DbA +ur0Ea8dg6RSWbrC4vIFTF8G/n4V1+ydYyxSWTVwEwEre/itYjWv+h7By1zTIc30C1uUHsBpXVmhV +/QQsyW99IfncOWXLFNZrkkd1CSzuICRYgt/qkG/yZK0M0vyGOogddxDMnSYOIn9pTXzuToGsxKG+ +4k4jLFSRC16ewiJ7V3nxGdZjICtxqC8vPribxMvzpZoNQ25Xjfoxgay4WseDia5Ltx5KWKqZUZKl +eghsUDNnIToFcZBQvh1mWxVdaQGeKwfKltSGs4ENhnrDgc0Q5qAlTQqaM67ZdW8pT1b4WLtSq+C9 +XgoDWS/3MZRBQTNKjLBNyao3A4HaRk6qYd0phyi1pUF+JgTNZ6rgySWgLUZOvpDCU7LFWAcFaWt7 +piGmh191R3dEwhZD07GrCQfakOHsViYE80thwK20ew0bMgJB+Db0gTk1k5jk7Wvcvwo7MioPv1EV +dmT6Qfdp65n9WGIRsn0d/DwdirR/ZdmFh7CtbummGkbEdq9nMZOENvuIvaEAXSwZKDWuHsyMPDWi +Z/b66cBv08zDiaQkKZ8JVtQHIfGiWoJr82CZuUxI9fC83mTDHlbBNB8+k3I2PH+mNzjhoNuWqU0f ++Wc8SWmQP8BJyvSwYHnhdIF0hVzIEtWtheS4lHBlKd0kf5ukdNUXHwZcx9eT8k++8WSdCdQbsliS +ACdnjfyoYTWXzn5WlkdhJPy4QGNmkuOCW/oiyIs3uD5+4xAjoDrw85WZwyh6XNBTSM84ha/91Nu9 +fuQDk1DI7kvtAgB2uBLnATvkzC4CrtW3jqKk769nVquSaGEKG3Iu+hUcvkpnGf90cKeFY87o4oWD +u8giowsIe/NZ9ZlTFckSjzlX6i6oC9p571m13NytnjkUjvKik/GXCj3aT87qxKN9Y0vr/330eoSm +FyHS6xkFXbBVWeUBUN58Etft6fUMikuX1Whvh7JX775FtWVGold/4DLEgEs3U1LButH0tnnzjSWO +il+UUtP9oGbKKeQoedU09Jt/Klq4kCTddhvAWzfSVrqJIeNK/s3Pi3xfTLrX1r9ZDbD8NgvZrXTS +rbkfFr1lccssLG8zuLJYTcnQAon8rTY09VacPzO3AOGCZ+Gc5U/UW234rQueffFbdw4BTckPlmew +vKYc86KV+43rcM+vcnq+qJNKD+g+Vb64YZo7lxqtkPT2/vLVxVfTpLhK9yv3d7+8jwu4kB2/7x7s +T5aqr68Jq6aXkzHg4q13HlH02sQUoI73xdWQ44rVqp/9idWVUfgZvCuT/8LtZe+//E9bGdto60xu +A2O6bApbBasW1jsSWwZvMlRXzSq+V04+xlSlafLpmamsySvRDb5yqRpgleAplLehKVaNg+jCVxQO +rGqMdr5DDaQO1d7pWmP948KOLsbA0m+dGp6VMMmtHF++AEv76MGOOVvruwQ2vPQh8IE+/HytCv/D +TtX+j2JV5l5YenTJDcyW0tMdn5UuiELWqgSLmBsiiV7puSt18PMALa9yqKm076sHOlaXUVFKT44u +IvDY4jMYLDhseSkTYJWNxcByj8L0bZfgLHzLunBeFysNYGJN6EaZobqJfgQoho6Nj3JhtsC4+mfh +Ty/IQktWFGBZv+ZUeY+sqKrItdZFT5prVKmaSmsLiLx0QgTmuzFW99V9TAb/FZCnD8GIt62Xl+6f +eWKL0kvRiO5Z1pafbmVloRR6QOe1qWwRYFsYf1XCPIffi0qFuL8Yq4t+D2CrMuxQgC2/XbFebeiZ +1YqtbU9h/VJR1Vw48pewiryZW8r+EFaeq9lw5O9gea1bN7de/h2sKtnxkfKXsMz8Pvg/6IZ2itxW +i7sAAAAASUVORK5CYII= +------------CFFE24E151DE81-- + +From VM Fri Jun 23 21:28:27 2000 +X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] + [nil nil nil nil nil nil nil "Joe Broderick" "Joe.Broderick@worldnet.att.net" "<003701bfdc80$0ebf35c0$5566480c@max>" nil "logo" "^From:" nil nil nil "2000062219:28:33" "logo" nil nil nil] + nil) +Content-Length: 2989 +Status: RO +Return-Path: +Received: from mtiwmhc23.worldnet.att.net (mtiwmhc23.worldnet.att.net [204.127.131.48]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id OAA20261 + for ; Thu, 22 Jun 2000 14:27:41 -0500 (CDT) +Received: from max ([12.72.102.85]) by mtiwmhc23.worldnet.att.net + (InterMail vM.4.01.02.39 201-229-119-122) with SMTP + id <20000622192739.YKSP3646.mtiwmhc23.worldnet.att.net@max> + for ; Thu, 22 Jun 2000 19:27:39 +0000 +Message-ID: <003701bfdc80$0ebf35c0$5566480c@max> +MIME-Version: 1.0 +Content-Type: multipart/alternative; + boundary="----=_NextPart_000_0034_01BFDC45.61756180" +X-Priority: 3 +X-MSMail-Priority: Normal +X-Mailer: Microsoft Outlook Express 5.00.2615.200 +X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 +From: "Joe Broderick" +To: +Subject: logo +Date: Thu, 22 Jun 2000 12:28:33 -0700 + +This is a multi-part message in MIME format. + +------=_NextPart_000_0034_01BFDC45.61756180 +Content-Type: text/plain; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + +logo could be a man with a brief case. (like school Xing sign) + +IBM tryed to use Charlie Chaplan years ago the market=20 +changed and few remember what Chaplan has to do with +computers. + +like a road sign that represents a school crossing is familiar +to most, that is a yellow sign with a couple of kids with large round +heads is an affective way of saying that we should slow down and=20 +not run over the children. + +My idea for a logo for schemer.org could be similar, in that those +who are educators of scheme are concerned about the progeny and those +educated in scheme are shown to be supported. The man with a briefcase +is moving with a healthy stride is indicative of progressive and the = +briefcase +gives the idea of being effective and successful. =20 + +------=_NextPart_000_0034_01BFDC45.61756180 +Content-Type: text/html; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + + + + + + + + +
+
logo could be a man with a brief case. = +(like school=20 +Xing sign)
+
 
+
IBM tryed to use Charlie Chaplan years = +ago the=20 +market
+
changed and few remember what Chaplan = +has to do=20 +with
+
computers.
+
 
+
like a road sign that represents a = +school=20 +crossing is familiar
+
to most, that is a yellow sign with a = +couple of=20 +kids with large round
+
heads is an affective way of saying = +that we should=20 +slow down and 
+
not run over the children.
+
 
+
My idea for a logo for = +schemer.org could=20 +be similar, in that those
+
who are educators of scheme are = +concerned about the=20 +progeny and those
+
educated in scheme are shown to be=20 +supported. The man with a briefcase
+
is moving with a healthy stride is = +indicative=20 +of progressive and the briefcase
+
gives the idea of being effective and=20 +successful.    
+ +------=_NextPart_000_0034_01BFDC45.61756180-- +From VM Sun Jul 23 12:17:03 2000 +Content-Length: 8617 +Status: RO +X-VM-v5-Data: ([nil nil nil nil t nil t nil nil] + ["8617" "Sun" "23" "July" "2000" "07:55:30" "-0400" "Alexander Staubo" "alex@mop.no" "" "130" "Schemers.org logo" "^From:" nil nil "7" "2000072311:55:30" "Schemers.org logo" nil nil nil] + nil) +Return-Path: +Received: from srfi.schemers.org (srfi.schemers.org [128.42.6.206]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id GAA00549 + for ; Sun, 23 Jul 2000 06:57:40 -0500 (CDT) +Received: from faust.mop.no (faust.mop.no [194.63.250.43]) + by srfi.schemers.org (8.9.0/8.9.0) with ESMTP id GAA02743 + for ; Sun, 23 Jul 2000 06:57:36 -0500 (CDT) +Received: from magnolia (hidden-user@nas-213-237.nyc-t.navipath.net [64.20.213.237]) + by faust.mop.no (8.9.3/8.8.7) with SMTP id OAA11047 + for ; Sun, 23 Jul 2000 14:17:16 +0200 +Message-ID: +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_NextPart_000_0000_01BFF47B.5F6E92A0" +X-Priority: 3 (Normal) +X-MSMail-Priority: Normal +X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) +Importance: Normal +X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 +From: "Alexander Staubo" +To: +Subject: Schemers.org logo +Date: Sun, 23 Jul 2000 07:55:30 -0400 + +This is a multi-part message in MIME format. + +------=_NextPart_000_0000_01BFF47B.5F6E92A0 +Content-Type: text/plain; + charset="iso-8859-1" +Content-Transfer-Encoding: 7bit + +Hi, + +Attached to this email please find my logo proposal. Feel free to +use it. It is simply a rendering of a font called Rubino Sans +ICG; let me know if you would like me to send it to you. + +Cheers, + +--A. + +------=_NextPart_000_0000_01BFF47B.5F6E92A0 +Content-Type: image/png; + name="schemers-logo.png" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="schemers-logo.png" + +iVBORw0KGgoAAAANSUhEUgAAAd8AAABRCAMAAACkE1x2AAAABGdBTUEAAK/INwWK6QAAABl0RVh0 +U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABdUExURb+/v+/v70VFRZqamhEREc/Pz9/f +36qqqmZmZjExMSEhIVVVVXZ2dmdnZ4yMjExMTKenp7Ozs39/fzQ0NJubmxkZGVhYWHNzcw0NDSUl +JUBAQIqKiru7uwAAAP///7z1B2sAABZLSURBVHjaYpCjKmCEs9jkRsEgAAABxEBd42TgLOnRsB0M +ACCARuN3eAOAAKJm/LJJS8sigIzMaBE98AAggKicf2XhGVl2NGwHAwAIoNH4Hd4AIIBG43d4A4AA +Go3f4Q0AAmg0foc3AAig0fgd3gAggEbjd3gDgAAajd/hDQACaDR+hzcACKDR+B3eACCARuN3eAOA +ABqN3+ENAAJoNH6HNwAIIIril43I+CVuIomRGItkCJpK5KwVHttksJslQ/XAZ6OWG9iwaIOIAQQQ +RfErQ2T8ypBpGhYpaYLqZeQotU0auyLqz2hTzQ0yWLRBxAACCEv8ssoAASPhDCAjI42hDFv8smJR +R6Jv2WVggANuEtBULOmfjUjL8NnGAbdNGskoGQ6ygwpHpgM6FeccOfFuAMWENBumNnawAEAATq3k +BmAQhrFAEo5wFIn91yyUpoiKqhJ+cTh24i+oGRj8/TyfHHA7UCswOKHlaOpeLsoj1Fcajs7zQatP +GBucvzwpLmiMNL4NAOohm2jqz+b0b/bjZhDLy61OQ60A4kZUa3CQAEsv3uuhjkwSMNm5jLDpngJw +Uq45DIMwDBYQIEBukJj7H7NhlVatG9I2fiIexvjzC7+pI/IZKYduEEkxT8c9LtpBvDCxWap0El8S +ygd+g6CpLVZyGhibrBoDUetKs3JHS+9A6LN3oi0BGCnPJU0o5kt9l1p82rRhW6Zf3HZVDx5vz5G4 +honfrdoM3zxW+7h/Ko3Q018aZmGicX6EM9z8GNjNskMAyqotB0AQhmUvcOAN3Lz/MUUlis/oH1ma +FdqmNP6K8gBSeDdMzI4hnruSvbO246hQjxav/kpS23Eh893zA3qOzTbpmenVX1GVDQ9DRQPWwzK2 +pLe1+YntpC15D8fxV6kePpuU1lBRiRnM8UBX+32HooojtUYE1Iu/kwCMVm0OgCAIXQKK1Q2U7n/M +bNMQnaufujdh7wNRfaFkLQQq9j/V096hTcJ2CE/bGmCs/2KvLwhbXHqqD2wmjXV+5wNGv9aXkA0e +pDxJhE3QXPssZ5p88qua5bYZqLv+R9VibeEKC6BxJzcOnM8eLh/3MArBkshSdgvAaJmlAAzCQJSo +MVq9QWzvf8zGpeJCwU+DxjBvCNP50u0JylXLHGIJL1Z2WFQpjca9vpPV7JiwRDVZ0jVnDHwbXpx8 +gHMChGCoxyXpBlt540sF79bVhPxWD2Xl1gx1+tukLRtcy2dS/eD11U2YY1ManecA0/kMj9i8zU+s +fPMZCAY9SfYKwHgVJVEIgsARKcLXDYD7X/NRmIPNNPXjh6MIu66LF78r9hi0WYPt19jamQLn2kMl +RatU8GXMZs3rK0rdQhK/XWaae9UdJn6jWLcOETRg8Jef4sqI1Qd+Q6dzVC62r9f3YAgTb2h/Pi1j +SwPaMf0Nqid6A5WF7j284rT9JQdnQg6JnT0E+nAYMVV1+yqSIfsLQGm55kAIg0B4gbK0a29A9/7X +3Gl1FY0x+pc05fEFZl7r3HQpgCEqb8UrKYhJiuoFZmQCE2PwE5oniGHGWTKfeC428B2eXbEnbeuD +PhL5lkL4Dotfk5AzLAqDXhNr89U95Ys6yQ6/pjqAOxttYeE939vZwmwlqPP3yaiu8bbqPqzgztfk ++zUoYuilHy+HMnDPnvspkj/gZWQ/ARivliSGQRA6iiiiN8Dm/scsECfRdtqJSxeI78PTyW9+TfFQ +dVkFDK7rEmkzQIBy9jI8P4ZVKwlGIvzwbwN7SSQifdfJPUvjwm/nWU4NeACOrJIgt2cGvGfSzq9Y +GjWr2q9ZoFVVclwlUurlQo23LHh+2oJt6l/bj6D6sVpzbCKTqOd4/VFgwTW///cQasczIkxXKvUB +wbUjdhkneEL2FoATa8uBGASBS0Sxtkdwvf8xO6CtpGnTzf76MfKcAT6H8wNA/5jkF7g4vzN3WkEf +A8P0gwI2o/hdC13ym5BwqL21kxZAc/injI3dvXJSYF2kpIEJ+vklF7rJbxbE1Sq/8uQCyTBV1D00 +lVeD9s9vLrbj1XPTT6F6OEoZ3MarXTeouolMTZI5/b7ZsJiugLkqhS7kEhMiYAIlOsiPkO0CUGK1 +KwCDIJAhbdV6g6u9/2MutQ8hNragX4GJeudpy2+AblSo8FyY9fK6yDSxSrlHB5Ej21tR0uJWvHzE +eB8Mc2KyamqmI0ndZJUdfd6Bgd/ML5xgLguJzPxCexTY7IBRDoZ7fvxmYotrie2XUD0srGRARKB6 +eCNXBWrX7gqcNIvs1QfXZTK8anBJxE5RqXljxddCdgvAiBklAQiCQDQ0TMkbqN3/mDGmQk01/vkn +sy7rg2VAWq7pVW6mZAWkPOoAkAn1DMnuJ5sf+w3G1yAe8CNikpw63m+kaANsoj64FPfyvnYdfCVZ +j+2PSrq/Dii6deZvU9pije8YDANqmZfqY+foLzCKMMYat1dfNj1BHPtbgwktKgj1zI+dboD1apKd +AlBiBUkAgiCwTAO1H4D//2ajKUbZjF28ITuwzMIuVVPKS+SMUaCJb0dfS45EDw/Xv2EFu3dqgdSc +jay3UUZaOQ6QnFwAg/5ealR+3brg2SD2Oo8a9StbD8MsNMkfmDfUNF2qj/EtwCKy8g8yMx3IqbdO +YNhbJyAqf4PJU2Mr15KdAlBmRTsAgiAwl+lM/wD8/99MMc5kPZRPzjF0gAe721Y1gMnLMMSryjSK +xiIGrA5bdoFjQy8BLkEwqqC9E2u/CqYlK1+RC3LpTH6Zc3p4TfDq88DIvj9JjyvI/1+3zdjG1gT6 +ECRpHPTbl1C9ryLft7q4ahzsKc4S2D+8AQhVVFcA1QNGie6QXQKIAX22h5mJhQmYFFkxU58MvKfG +Stz8ICL/IsyH519OeCLhkkE1DZGQ4OOyyONXSKbC20/S0IE6cP5FNLAQviLJNoQ2YDKFVzLAqp+d +uKDCAUA1BCsPE1KowVI6M1IdSIQb4Oo50TKaDBcTonqEyAEEEKx8Rky7ybFys7BwYFQm0pyYLGLj +lxUzfhnhNsKNg/eh4IqlOfDFLyty/LLBxzdYOTHjlzTbkGIQeUxbWo6Vjaigwg5YWUAdd2luOeT8 +C+pfsSO1m5lgpuNxAyu8ny2LPtjKxIQYLoE4CyCAGBBpC64UaC2wYSeNOkCPaPhyMxMZv4zwUUQe +jPhl5kTu0aKOCMO9y8aCpf+LZCrcNxxMkFCTRs6hSO0r0mxDakTwYHqUcFDh6BwxgdwnzYGSf4Hd +TGnk2kMG1rnG4wZpmLdZuTEmAhA9Qmh/ACCAGNDSLkgpG6s0MwcTJ9JEAki9DPIUHRHxywpq0UF7 +MkiZBOoCHng7Gj6rhLAAnoC42DDilwPJVLhvOFnYGGH9I1a4+xClBmm2oc/NoXqUcFDhaD0Da2s2 +UPpGKZ9ZOWBDJdDkL03QDfACQ0YaPSIQJRqwbgZTAAEotbYkAEEQWJFInYG6/zEDzGDUpskvP5xx +5OUuy1TxZUz18psjrSEwHZUaDsFwduxf6/Vn5QCMwdJLGf3YwNHavahu9pCtBWzG/JWqyLMqz/i8 +RhuTwnWE9J2ZPf7yUQdN/t0WhATo/fttqvGSOAIrEk3+pkiMmKgTM+AtII0NuVSaVMNqWwaXAJSa +TRLAEAxGWxrpwg1E73/MTkJC6c90Y8OE8eRLgmV0+v60BLdFLR/ylSFNbwcjX4Jys8SluPEFrHyz +Jblu2vHda58WE3389c2qxnJIjscBY276gofx/Tdbk/V8o8+fW/WUXlEAkXfV9xWJxVl+RsTqPl6N +v6zBlDRhD0Kaie8pgKDtKxlg55sRw9GgToM0MytaC5vI+JVD7nrLwr3EhFrqIE0IYyn2YfGKun4D +bioTTD0sVKSRlLCyIlxDmm3IYcuIHr+EgwoHkIUsgZBGVG+sPIgCFjbxgC1+0dwA94y0DOH4BQgg +BvhkLnRiUgZ96p4VMl0KL9ikZeHJnwOKmbG3rzDjV0YOM37hg2DSsN4qqfErhzV+kV1Dmm3QgQyg +32Q5OGCZHa6MQFDhmDgClSE84FKCBb4Gjp2JB7FuUBY0YskuzQEdH8DlBuTCiBM+OgonOBEGcoAL +UIAAQqzfYIUsLECvzSFj4uTkX6jPUHVjxq80OfmXEXv8shGMX2nS8q8MKyOWhiT+oMKZf6ETs+D6 +GzQTDYwBRFsc3ERgl8OSf9HdAG8iMhGRfwECCHl9HRsTlzS45YKytADSiWZEGxAlOn7lsMQvMFmy +IAaZ8AEOSL7BiF857PErhy1+SbYNqW0jg6OjgC+ocABO6MQlpC0FjFmQAYyIGRIOcO2BpX2F7gYm +duSGNEr8MmLEL0AAoa5/luGWlQV3b5HHnVnQsgCR/SM88YvSnZbFMI0ZaWwOR/4lJX5Jtg0zbLHk +SzxBJSeHTRcTTCE7OAOzcjAih58MaLIL2LzD6B9hugHuGWl8/SOoJEAAoa9vB7b0ZZmYGZEHyyHl +AaKbSJX4lebGaA7CRxwQIc5MpfglzTbMvif2+QJcQYU9eHi44avgOMFeYkdWAG7sAx3Awk7QDYhR +PQ50m9iZ0MsSgADC2L8gA+x8sMgilzSQJIUwDDHFR0H8snJhJEd4iMNTKiMrleKXNNuIjF+cQYU9 +eNjhkQ9aaQHsLrOyocUvM1BMlo2gG2S44GOQ6DZxwMOBFToJBBBADBi+A08fckHWIyIFLiKI2FkY +KY9fOXhjU5oLp2lyclSKX9JsQwpbDmwtJkJBBZ2YYpHl4kayhRGxBJaNhQm92cbMyAJakiHNSYQb +YAMsjLLsqJ4BmosoLSC2AQQQPH4RfTdWaVYZDmlOFg52eEubUQ5pNRMjCzv6/KAM6fHLwQ3PW+zo +IY6xUJzi+CXJNuS8gy0ZEAwq8No7YPHLyMyFiHvo4itoFuFAdQNoBSorcgsNnxvgnoGtOofPD8Jn +uWW4oUEGEECw+GVEzJVLQxoN3BxsoJWS8MCVho/LccI8KIM0B01q/LLCyx3oan7k1MxB7fglyTaU +shEzggkHFTB6oSuxGTkQa4SY4TNPMpDFcEhms8uB56ERaxPwuQHuGR4OlMlsVvhYK6M0M9QpAAHE +AB0W42aBDaaAkzPQ0eCFCqDkCM3piCUQzBzoQwNMbCTHrxwTbDifR5oZPcS52agcvyTZhrf+JSao +oLQMWp8JFvqgghi0uBbJDTyQAUomDqLcwATdq8HKwoo03MMow8GDGC+ABhlAANatLQdgEIRFMeyh +NwB2/2PKhphtP85kJ9C0Edqm+vvd2ocdtCxEnSALGI0uOXuFSRcA9P1xGkCSwjjLL3skjynQMyfI +Egn+5XfmtIG+GkOF+y1kS+ElXKz6eBTJrX7BsMJlipeEn+7APvaj9fONCFJxZjgVHekNsiqAGGBZ +np0TlihkkBKlHPKENicHdEsHMxNodBe2xhS0vpyb9PwLagJAfMrNA1vkCXUMCyenHDt145cU2/DH +LxFBBXWuDHqfCVwDs8NXv3CxgEcegSU7B7g+RlpeR8ANPByQ9ebAxMMOnWQAliVMkBXhbDyMiPWx +AAFYt6IdAEEQODITtT8Q/f/PTJDSXppu/YAitwkcd4ovNwa3Kk+LyrOpxd72GQ0uYmka4lqJ3eG9 +yUrOrOALQZnrem4RP4JttO6OlN/rth/wXbjtO7cTqYrDrznOTBBMh5fts+xoJUqqg47bbAwQHMpj +Tg9WROaGCku4Wf2fZKTXlF0CsG4FOQCDICzIEOb8ge7/3xwwl7DLjMlu3khaAxTo4Hczfoa7zp8d +z2ecRrGwZz8Nhf0AQDbACDVdsTbmsMqvmSy6TwdYpUNX+H2hKqdkOwSEf/ldiPaN7RQqlUwSVpAl +ZH96LxFVQNeUUrm/l0RL66RGUCE2l657qlqrCCAWvTYN4LViQHYJwLqVpAAMAjF0KnGZH6j9/zM7 +bqAUWgu9etFJDglj0v2Vb4kmXXvHBsmGEeIKPJsLOVUo8Wx3cECsVS0PUNRtVf6JX3kliekjiIAL +CPU3JGTRcpPIKfqZ3/3bnv3VBlQ8Wzi3DLIUnUZG97zR+7pjKSFHwR/w2TIilx5zilTKzU1EO2SX +AGIAj30ycbJLg7tZbExMLKCRdhZYi5iDCc1Y+PgPB0ghFzeodADmBhYe9P2hRMSvHHTLDStoh6ks +xDhW8IZ4ZlkO5KMpqBK/RNuGb+yIqKBi50Zq1coimczOys6CfkIMZFqYETV6CY+hscMXgoIjAroo +jlOGUQalDQAQQAzQ8GGB95wYgQ1tNuigKiMHE9rgCSsnE5bDiqRZuBjlSM+/qMYhj9ZxcrHJUTv/ +Em0b3rAlKqi4EKtmUJzGCCpFuJHdwAZpQ7NycjPKkRS/oNTKiO4ZaYz93QABBI5fYGOYnQVaC0DG +yyGOZubiwTJWyMKBtiyTjYmFnZmVrPgF711iQwtxYKUoTfX2Mwm24Qtb4oKKlQu2iQaxNBIxPMIC +X5bODmmWsnGw4BtDwzGMysgNG6uBnVnAIYtxPgNAAEHiF2wXtyykC8EmDT68hA3YMpDBMW/CJA1f +wMDIzs0CXvNGZvyCwpebmQ3hSGZuLtDCItrEL1G24Y1f4oKKmQuys0Ea25oOGdDeeGBtyQ5eecPI +jm1xHlFzHDKgQ1dgEcEmDeoJoMcvQADGri0HQBCGaZ2EqTcQ7n9NOwQhilE++RijBPZIN4bmio+T +XyJWOk0Qoev+SjchKiLY6CCuKvbyZ7CMO1JYa83/Ry7sdV6fKV2KoxVLNBRYxHBP/s/Bo7Idi1hn +lSh5oPJSQtCLOhd7zak+Vms3QbV7Dar+QDVDGaQK+rxZt2lM+BHAxT/K/n/oUJahIMV5EOZPV2Of +28gcAjByZjkAwiAQPQFDRVKj9z+oXVJwIdX5pHTY/t8bvSTUtHwQnBKImKB3bBPT0AokSxWPHwg5 +UYriRoJeNj3f3FaGbXFdLZzhyhZlIB5jUq0M4bZs1SKO1nxVSiHMy39vtYfQ/38PLbkeQvRCHava ++5pPAYTrfEIyz4DDdT8dMffWkXo+Ia5D/GSIMZGMswHlSA0qGdLDj0w3oK34RirgAQKIovMnWfGI +MBMljt80QtqZseplJcZEfHLMRBlATvDQyg2w+OXmRIx1Q2iAAKLy+cCjYEAA5vw+bJ0eQACNxu+Q +jVN2jPhlhu9Rh+9TAwig0fgdsvHLjB6/MuywWGXkhB0hCRBAo/E7NAEbaN4ZdTAO2I3khp8ECVu7 +BxBAo/E7VAEn0tAJeMaDHX7EggzibEaAABqN36EJmFllORARLAM+r52JBzqAAzpKBBq/AAE0Gr9D +FEizyEFHrdll5JAO4wOddS+LOPYFIIBG43eIdoi4OaTZpVnAe5HYQFsj2EAHIoPmtxlZWZCO0QUI +oNH4HZKAlR0UiTLM3FwsTEycHNycoHPLpdlBMycyKOeUAgTQaPwORcAoA94SCTmhlwcYw9zwGzbQ +zjoGCKDR+B2i/SNpWWxXBclwol2CABBAo/E7NAE7aM0M+mET7EyyPGizHQABNBq/Q7QClpNhlOZi +4WCGrQRiY+ZgwXJME0AAjcbv0G1Cg86BB92QwAS+KIGFG8tVP3IAATQav0O2BoY1tdhBK61xrfEA +CKDR+B0ueRk7AAig0fgdHrUxLgAQQKPxO7wBQIABAEGZGvk6cj/jAAAAAElFTkSuQmCC + +------=_NextPart_000_0000_01BFF47B.5F6E92A0-- +From VM Sun Jul 23 12:17:08 2000 +Content-Length: 6364 +Status: RO +X-VM-v5-Data: ([nil nil nil nil t nil t nil nil] + ["6364" "Sun" "23" "July" "2000" "11:09:21" "-0400" "Alexander Staubo" "alex@mop.no" "" "130" "RE: Schemers.org logo" "^From:" nil nil "7" "2000072315:09:21" "Schemers.org logo" nil "<14715.578.590520.184424@sun.cs.rice.edu>" nil] + nil) +Return-Path: +Received: from faust.mop.no (faust.mop.no [194.63.250.43]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id KAA01564 + for ; Sun, 23 Jul 2000 10:10:23 -0500 (CDT) +Received: from magnolia (hidden-user@nas-213-237.nyc-t.navipath.net [64.20.213.237]) + by faust.mop.no (8.9.3/8.8.7) with SMTP id RAA11367 + for ; Sun, 23 Jul 2000 17:31:08 +0200 +Message-ID: +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_NextPart_000_0000_01BFF496.73C279E0" +X-Priority: 3 (Normal) +X-MSMail-Priority: Normal +X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) +Importance: Normal +In-Reply-To: <14715.578.590520.184424@sun.cs.rice.edu> +X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 +From: "Alexander Staubo" +To: +Subject: RE: Schemers.org logo +Date: Sun, 23 Jul 2000 11:09:21 -0400 + +This is a multi-part message in MIME format. + +------=_NextPart_000_0000_01BFF496.73C279E0 +Content-Type: text/plain; + charset="us-ascii" +Content-Transfer-Encoding: 7bit + +> Finally, a logo proposal that I like! + +Thanks :) + +> A few questions: +> +> 1. Your logo is much larger than the current one. Is +> it possible to +> generate one of size 104x44 (or close to)? If I simply specify +> scaling in the HTML, it comes out pretty badly (and +> not all browsers +> scale, anyway). + +Hey, anything is possible. ;) + +However, at 104x44, the logo becomes little more than a smudge +and the schematic guide liness, which I have used as a +not-very-subtle metaphor for the concept of a "scheme", virtually +disappear. With his design, I am afraid the lowest you should go +is 250x162. + +While you digest this information, I am including a less pretty, +but decidedly more scaleable design that you can try out. ;) + +> 2. Is .PNG enough a standard format? Or can you +> generate a GIF/JPG? + +I think PNG is quite usable these days, PNG tends to be +controversial mostly in the handling of alpha (transparency) +information. GIF is the only viable alternative if you really +want to be on the safe side. JPEG is useful for photographic +images only. + +> 3. Any ideas for color? Perhaps use the PLT disc for +> the `o', or +> something along those lines? + +That I can do (see attached images). Of course, at your requested +size, even the disc becomes almost unrecognizable. + +> I suppose if you sent us the font, assuming this is +> okay, we could do +> some of these things ourself. + +I shall send you both the font and the master PhotoShop file once +we are in agreement. ;) + +--A. + +------=_NextPart_000_0000_01BFF496.73C279E0 +Content-Type: image/gif; + name="schemersv2-1.gif" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="schemersv2-1.gif" + +R0lGODlh+gAsAOYAAEVFRbu7u+/v75qamhERETExMWZmZiEhId/f36qqqv8AAFVVVc/PzwAA/3Z2 +dv/29hka/1lb//8REf/Cwqqv//+Li/78/P3//P+zs8TE9/37+/Ds+v7+/v/e1Pn5/f97e2do//9N +Tf8QEP+wsP8yMhYW/yoq/lNX///Y0/HQ0Fhb/xgb/5aW8oiI9bGy+v81M/+goAIB/w4ODmJs/2lp ++vqenv5ISP1MTP/SyRwcvP/8/PH9/8HP/9/f9f+1tf8TE/379P+Mf9UgIPuAgv86Ov9OTv+Hh/8B +AP8UFP9RUf8ICP9taP8PD////v9VU4qH8v9eXv+1p5qa8srW/+Tk9f8FBQ8PD/7LyvTNzf8GBtfX ++f9cXPKEhP7+//AoNP8wK/38/P9SR1hY9m5u9v90dPR8fLvJ/4qKigAAAP///wAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 +BAAAAAAALAAAAAD6ACwAQAf/gGmCg4SFhoeIiAkEaACJj5CRkpOUlZaXmJmakgEDZ5+gnwOQCQYA +p6cLAwKGZ2ivggOmqAALZ6yks7S3hgKfAWmltAbAhAEOw6OPwrQAvIW+Z8XMqLa4hZ2hocqY1KnP +hNHTut/XhN614IKur8WU7GjuiACvjmnw8of0jeuv8ZAF6vWDhSiAP26G/Dnzl89QQH73GEbCt6kQ +xUf77F18tHGeQEoGDg5EwykALniRMo68hLKgREQKW1aSWVFQyFcIEdH0CHGnTn8pBcLzR5RogYaC +FhVdesYiUEgqw51htJSoPJ+DDLZL5M/BIF9Uq24dhLWV2KVHB/1QwFZCki8b/1Y0aGBikNKzDsxF +JDjprlgHD+3VHEy4sOHDiBNDEhCgsePGDsIS0Ks4UdnKmDNr3pxpgT8DlB9pxXlo9OSRpA0N8Hda +EAPWCUqzPknUALR9/grohWfv9SsCsQ2Zpk00pyDGrDy/Ak3YdHBss1GjMZ4GeRrnsn9fY/Dw7IF8 +ly0/xfjxcoCwXle6HHso5njh6Mm+h8T97Kvv7+brK6//UHhBUU0CT1Np+AbRT68Q+F8aUQkQXX58 +CfdSe/U4qN1M/WkyYBojHMFWFDzEMFcLTRgoWC9hIaAefQolIkBYJ3Im44w0XgKDCBOQwFYWHUzx +BAc1StJikHuRROSRSCapJP+ERi7p5JNQMnCAff4wcIgDRRVwSlho2CZfVVri9kp6haxm1Ja1ETJU +blOyFkB3aBwA53RlZonmZ2qKFWZRwEhJ5StWVmJmbnculyeYp/AZi50AcOllkdQ9YuIjCPizwEgx +FlLpK5emsemBh3yqkUiH3NSlIv6cISqlQ/I2EamDrZrIp526ComsiNBaXVgLJGCSJAuaFSFPow6r +WqorSsheQvX8N6iCGULDq6+hYWisIVEFu2CAkpr6T7ICRjtItn9+Zo55EzLbyJr2Mfdlk5sw4C1S +wsJLLLgI2rsfqJJQVSwagSbS5r9B9ZQusNGORm8a7i2L8LWb+DuIFi6AUML/GBl0MdLC1bUq7rsc +W8gvIvIWZwxRBBIyQFgpb/tRdd0dMICKr0J83cGEtChAzDM/rC8mJYvkA1tsOZFGBHM1IMXNqZoT +QJto6PbuJKOhoc7TRWUK5dZcT4IBW0pUwIQCQZgxFwtdc9v12mwnAkYKXNxgQxlYWND1zji3rffe +TlJJgDpEBsv34IQnKXjhiCe+2eGKN+54YYw/LrmSYFFJbwJQL0VATvBgftbmiWAt1t9O3ScWACoK +ICZRBwRsTOZFkX4oGp6Pzk3l9nFcEOxEyf5u7VWBnhXvrOX0oj8HSMNklzRXNxQ37BrQvC9EPbdo +V9MP1XJRC9D8JpjFIKAc/xoEBDwoGg5kj/K7n6kP6PH3KV/T+dJ/9Tz7y7kPcBr060+np7m5BG4i +VSRowape3BigeBI0kgMcAn6vaB4hcGMlBebLgKmZVQALY0H/IKtI/yNPBuvVFHi4zmcEFESbCjCS +FKZhYC2EBAyLRK8NhSpV8HDhDHNYs/0RhoeP2OEB86VDgQyqU0yKBGMCQDOXGcxmx/GYzRTGlWZ9 +TGQEi8QRIfcxBvEHilODykeqxrp0WC+M1vpZIcgFRQakCF9ZyZsgGqZG17yxSFQTywHMaAknZhES +ftRUAD5hijmFEI997CIbraaNMwDGKLMLnRwZZsUENfKRG4QjpQZ5hkIuxf+FaEzEIn1WMK0hYlAH +IE4dF7hKAH3RPgQgRr0k6bCcVRKWsixdKwWFvGpFUoxP3CUiRWjKXFlKk4RQTq0U+Upf5ouW36LQ +uvzhTA+C0RK6AmQXJTZMjmzzZZLA4kjOCA0p7jIqz0rkFCepkHSm0TDiTMMQvBAGIJxgLjTwQJHI +OTsM+oyf7yomfH7TPKhFyo3+aCIzD4SlV0gtXOus5SBa1NCoVfOXgzkPQR+ABKItYQcQSBoVvDjC +r3SHTILrYDjg5IgElOuDKuudLc6wgMw9qpv3MumfDiBBdEl0jh/BG5V4itFlvJSBaYAC0RSwBRRQ +IGliuN5vbFFTo5yri4NtOB8BqEo8R8jgqGANq1jHStaymvWsSxEC0UJABAXgYAZzyQFa52ofK0zu +rpV5QBUUUIQPsOUFF1BBA3rQtcDg9bCJ0UENjLBUMlxBA11zqaEQS9nKLqY7ArWsZhHHJT2dcLOg +VRwnG5mAz6YhEAA7 + +------=_NextPart_000_0000_01BFF496.73C279E0 +Content-Type: image/gif; + name="schemersv2-1sm.gif" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="schemersv2-1sm.gif" + +R0lGODlhkAAZANUAABEREe/v78/Pz9/f35qamnZ2djExMVVVVWZmZiEhIaqqqv8AAAAA/wwM/yAg +qvLg4GBp//0qKsVxpP97Z/95eQgICLwwMPvh4ywy//8EBOLi9F5e9v8NDd3d+v8hIf86Ovvq6gAF +//KOjv8eFP+LgjEx+//v7/vt7P96enFx9Q4R//wuLsWy6f9KQ/aGhv85OIyW//+gmt3d9XqB/9nY +/P8iIf8eHv84OLCT4A8PD7u7u4qKikVFRQAAAP///wAAACH5BAAAAAAALAAAAACQABkAQAb/QJ9w +SCwaibse78hsOp/QqHRK9R16u2ag1xsUdVxfMmFMLg09gpGrMxfR6iEYsO1+w7we4njNTrleRGA9 +Yj1kZXpGeX5GBT10PnlLQwFoWW5FbgqPOkyYQ3mdcmGOBoGKWFOOAA81CxMwDA0aVzwBQwRshZNF +AlwKlGipVcTFxsfIVDrLzLe9O9DQcZQEBTwHO6dmAzsIPAg7zkQKOzw8O6I+ATsC1TwFwD7cCNin +QgHu9UMC4fwH79N88Iu2I+ARfNb03WM371u4fTv+FTAoiACAHgV8DHLyaYgbLiBBAojTMVKPdBrZ +hAyZQICQRVF0WMR4ZOMdQiVfDiMCM5nP/59Ah5jwgILDghgzZATluRNZzqVQoyYLkKDHAZdHBFxE +4CxXD2BJuDBC8MhLJSWBtNIMa0qgsGFhO6kt0PWXSU4Lw1W9KmVu3a+FxHrMRjaBqLMG5F00UKCg +DnE2PSlBtEQXkke7ioQSpJJQkSsHTDIiMmBxYwKPm0QehXMyqtE6YTNFF6ZXmJwfTzYpuZn16tdU +enL2PDwzcM1Yyplb/s5eAAQXuSR4qPGcER3WhejwxtwPdtjl7A24husf83jl4mVivryAFxsLMrwg +AYFBCXXQQR5I972JgrfTWSLVgAQWSBozMl2U0U9PGejgg0A1COGEA463Emb7RMdDdCQ9Av9SHo9g +pQ6IBlSVSGDScXFOdBzuY+KGXMSRR3QJkCgPiCEB4IRaPRjQYiEswgiAF2Q9IowBt0ho0h6XJRaW +QXlklERiw63DhTi+WEWEI6FFmUmPJgEgokeuSeFlk4FRNIdzFynApWq1ZXJJmWRWplsRbPB2p3ad +XYdHU0O8KcVvKbXGy2zACXDAW4IVyhGdQuSWDjcxGgfKnoWupmiIojGhKKOAsuanoUcId6lsQmQp +AKECuYTbZGIhmFqkkPbG50lsyIpoX1yMeeuolu4qrBGW1GGPD5uQ8eoSpn55qEkobWRZqaE6YckF +EuCAwQYd+ABIEWSF9lQSTA4xgFgEsMdwQ1ViClGaIdAUsFiSkBrnSI/d0fqsrY4GACJ7ojQrRLrs +sSsABQss0AINKjCQwrvTlVNpsFtyAY68IO2Qw4Ucd+zxxyCHLPLIIFuwwA0fjMBCCA6Q7DIXFVAo +MzIgiLBCBC6cIFWWx87ss89Z5uhHEAA7 + +------=_NextPart_000_0000_01BFF496.73C279E0-- +From VM Sun Jul 23 13:47:55 2000 +Content-Length: 3127 +Status: RO +X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] + ["3127" "Sun" "16" "July" "2000" "22:00:25" "+0100" "Philip Harvey" "philiph@cleveland.co.uk" "<000e01bfef68$dd8ce960$0600000a@cleveland.co.uk>" "71" "logo" "^From:" nil nil "7" "2000071621:00:25" "logo" nil nil nil] + nil) +Return-Path: +Received: from srfi.schemers.org (srfi.schemers.org [128.42.6.206]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id EAA26292 + for ; Mon, 17 Jul 2000 04:59:01 -0500 (CDT) +Received: from atrios.cheapnet.co.uk (atrios.cheapnet.co.uk [194.164.6.2]) + by srfi.schemers.org (8.9.0/8.9.0) with ESMTP id EAA07884 + for ; Mon, 17 Jul 2000 04:58:59 -0500 (CDT) +Received: from cleveland.co.uk (IDENT:root@cleveland.co.uk [194.164.92.39]) + by atrios.cheapnet.co.uk (8.9.3/8.9.3) with ESMTP id KAA21884 + for ; Mon, 17 Jul 2000 10:54:28 +0100 (BST) +Received: from timemachine6 (philiph@timemachine6.cleveland.co.uk [10.0.0.6]) + by cleveland.co.uk (8.10.1/8.10.1) with SMTP id e6GKsgi19265 + for ; Sun, 16 Jul 2000 21:54:42 +0100 +Message-ID: <000e01bfef68$dd8ce960$0600000a@cleveland.co.uk> +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_NextPart_000_000A_01BFEF71.3F2FBFA0" +X-Priority: 3 +X-MSMail-Priority: Normal +X-Mailer: Microsoft Outlook Express 5.00.2615.200 +X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 +From: "Philip Harvey" +To: +Subject: logo +Date: Sun, 16 Jul 2000 22:00:25 +0100 + +This is a multi-part message in MIME format. + +------=_NextPart_000_000A_01BFEF71.3F2FBFA0 +Content-Type: multipart/alternative; + boundary="----=_NextPart_001_000B_01BFEF71.3F2FBFA0" + + +------=_NextPart_001_000B_01BFEF71.3F2FBFA0 +Content-Type: text/plain; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + +Heres my attempt at a better logo for you + + -Phil + +------=_NextPart_001_000B_01BFEF71.3F2FBFA0 +Content-Type: text/html; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + + + + + + + + +
Heres my attempt at a better logo for=20 +you
+
 
+
    = +-Phil
+ +------=_NextPart_001_000B_01BFEF71.3F2FBFA0-- + +------=_NextPart_000_000A_01BFEF71.3F2FBFA0 +Content-Type: image/gif; + name="schemers.gif" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="schemers.gif" + +R0lGODlhPwEgAMT/AP///8zLy769vbKxsaWkpJWUlIiHh3p6em5tbV5dXVFQUERERDY2NiYmJhoZ +GQ0NDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAA +PwEgAEAF/2AgjmRpnmiqrmzrvnAsz3Rt3/gN7Q8hD43drjGYKYS7UgHJFBZKDOEsKkUJHk3ho3ha +VmPUJI2A1fpiwGyzIZgZyuIZmdmjHZAougJReLoWcSJeaoRfNWEyCUwlihAHJAM7DiVHEH6CeDGN +hi8GlU0Pe30vgIVKhTsJjJwunk0mryysIk0KBwVnJwQFB590CbcpArwKDlmnqJciiImZI5tCClBN +yoMQM9CrpiTW0be5Jru9iyRZDgkFbcIFCcaxz6jITQ6iyl0I7rMBqPz9/v8AAwocSLCgwYMIEyr8 +lycQLULnEkhs5zAAnCwNtDnslsUeM3gBGSm7QkedCHTcnP+dFKhRDSxWhSJOzOeyBL9HJDa1PGZT +CLgAQVAxGDo06LUTQkwGiETogVICO3COILDgopBz8o6O4EhtmkNo/lqqQuGrmsoAYPvtZLIgq1Km +apySgFroZ5osD6SOKKV1JaG2KYXoDXCn0Nit+hYqXsy4sePHkCM7zkG5suXLmDNr3sxZs5qhE0Mn +WMCAZlwGokUrYGBViGp+CkTnS007Nc3aFFHV9oW79+3eqkv3A02btGmAqIGzVgM8+HE1DhjErj20 +5ksIXEYMGE106B6lAdwd1o4gNYKfaM9yZeKRE7vmNFWQBAU+8Mbmue/XNgAeLvYS25HW3XclPIeE +ASYk0Br/PfUZpQRu/AGIhDQl9NLdgD8ZkNgOgL1AAD7qGYTDRy+AtYpeAiAxSU6W2NeXCyaySMh4 +6QnRoQsfGkgOYrpptBYSNGbTExIXFlldRQ9BIFoYamT30HWEZJWVGu19xZKMSkKSEQmfmMVJWvzU +IMBvEzGZhZP7bDNCij1iKWZ8Q9YFyYYQbCnDmIKNcdGUHXn1IoxngUXjMuy5iE2g8bhoZwx4vsjE +YC8IYNSLYIY4oQ35NCTZppx26umnoErW2aiklmrqqaimquqqrLbq6quwwhDqrLTWauutnGqK6668 +9uqrr7o+kAB6KGzXmrDEokCAmS+uh0SVf7bAZAqFEUKh/wnWTHGWC8aCMiy3Cv4jbH0pFMDsDN1m +oUCEOPoSbZqOjKEFuS00uhE/0Gqrj19ZDMojkixMWwM0kOLIDxs1aLhvC2Al68InmprQWjRe/VRt +vy3x2RUJJNYIkBI/jicAONliyZDJa0ApsbV+qgFepUO8/GUhiyYZLwkX4yWPpvZ4YiSznLBJUAnL +/kzUTx0fYDRRpjFSM1gIkHCFlw4pvbRwiKopgn89r2bklVPxE+TMWi+1rYhIuXbovQWNuDAKMcKz +4gif6MUU1e+qEPfWffTttwk5Z9lMov/O6CMkficO+I4jvKMCnf8wgGBgErYtdeKYp+NnhVdjTbYD +Sh1ht/QThuLcedMyEHCAjkJNXjhPr2PsZuqrM24zwENGTAICyfSE5qSwY+IevpujrBaWcq05J+mF +/0i4CFYXuQAC4PHOifWE2PM8oYWgqZPpRk5fPRI/sc72u0K4vnV55qFZGAM2CBn7xiN0DCjZPJBL +F/PC46531lFykfqWwj7RIMB9O7jQpcKBOWL5x3nDu4oJBlCAAk7EAPbwmK4WgCYW3EUIUYvBAayi +sUJx7G1wA6AQ0MQRvK3NSmXrBgfR4KByMMFfKzAA6kASwNgtwGEq8IWufkXEIhrxiAsZIhKXyMQm +OjFvsYqiFKdIxSpa8YpYzKIWLRMCADs= + +------=_NextPart_000_000A_01BFEF71.3F2FBFA0-- +From VM Sun Jul 23 13:48:01 2000 +Content-Length: 9637 +Status: RO +X-VM-v5-Data: ([nil nil nil nil t nil t nil nil] + ["9637" "Sunday" "16" "July" "2000" "22:18:09" "-0700" "Jeremy Lindsay" "jerms@rubberoven.com" "<39729711.14717ED7@rubberoven.com>" "147" "logo" "^From:" nil nil "7" "2000071705:18:09" "logo" nil nil nil] + nil) +Return-Path: +Received: from srfi.schemers.org (srfi.schemers.org [128.42.6.206]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id AAA24037 + for ; Mon, 17 Jul 2000 00:32:10 -0500 (CDT) +Received: from priv-edtnes04-hme0.telusplanet.net (edtnes04.telus.net [199.185.220.104]) + by srfi.schemers.org (8.9.0/8.9.0) with ESMTP id AAA07727 + for ; Mon, 17 Jul 2000 00:32:06 -0500 (CDT) +Received: from rubberoven.com ([216.232.8.139]) + by priv-edtnes04-hme0.telusplanet.net + (InterMail vM.4.01.02.11 201-229-116-111) with ESMTP + id <20000717053159.ZXAD4208.priv-edtnes04-hme0.telusplanet.net@rubberoven.com> + for ; Sun, 16 Jul 2000 23:31:59 -0600 +Message-ID: <39729711.14717ED7@rubberoven.com> +X-Mailer: Mozilla 4.72 [en] (Win98; U) +X-Accept-Language: en +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="------------863F29C0C60FE676C16F30A9" +From: Jeremy Lindsay +To: shriram@srfi.schemers.org +Subject: logo +Date: Sun, 16 Jul 2000 22:18:09 -0700 + +This is a multi-part message in MIME format. +--------------863F29C0C60FE676C16F30A9 +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: 7bit + +Hi. +Interested in using this logo? (yes for free) + +Let me know. +Thanks. +Jeremy Lindsay +jerms@rubberoven.com (this has nothing to do with rubberoven.com design +company) + +--------------863F29C0C60FE676C16F30A9 +Content-Type: image/gif; + name="schemers.org.gif" +Content-Transfer-Encoding: base64 +Content-Disposition: inline; + filename="schemers.org.gif" + +R0lGODlhcQFIAPcAAOru7Pj6+fj++vv+/PH08vb++Pr++/T49fP+9dvl3fP99e/08OX46On7 +7Ob46ff9+PX79uzy7avns7Tnu6/atY2ikIyhj9j23Ki8q8XZyOL35d7y4c/d0eb16O/98fD9 +8vb99+Xs5gDEFwDCFgDAFgC/FgC9FgC7FgC6FQC5FQC3FQC1FQCzFQCxFACvFACsFACqFACp +EwCmEwCkEwCjEwChEgCeEgCcEgCaEgCZEgCYEQCWEQCUEQCTEQCREQCLEACGDwCCDwB+DgWf +FwWZFirBOymvOUDOUD/KT0DIUEDBT0PJU0TJU0fKVkC1TUCvTTyaSFbbZ1TWZFTVZFPUY1PT +Y1LRYlLQYVHPYVDLX07HXU3EXEzCW0zBWku/WUq9WEe0VEayU0WwUkWvUkSuUUOrUEKoT1XX +ZVHNYE/IXk7FXEezVEaxU0SsUDyYRzuVRku3WUGfTUq0Vl/RbGLTcGnVdnDcfXDYfHDWfHXd +gXDUe3DUfHDTe3XWgXHQfWrBdHHLe3/hi33ciYHhjXHEe3rShW+5eI/kmZTonpTlnY/dmZLg +m5TinZTgnZ/qqJnioaHqqpjXn5TRm5fUnpfTnpPJmavos6/qtq/otrTtu7Lquavhsbbuvbjt +v7PnubbqvMPvyMHtxsTvycPsyMbuy8ftzMToyMPnx9Ly1q/JsqjBq6fAqtz84Nr63tn53db1 +2rLMtbHLtLDKs63GsKzFr6vErqrDranCrNPs1tz13+L75d314OT85+P75uD448DSwt3v3+r8 +7Oj66uz97ufw6Pb+9/X99vT89fH58kfIVZbbnZTVm5zdo6/mta/htLLjt6/etMPox8nuzcTk +x9j329f22s7s0YufjdTy19Px1pCkktj129Xx2Oj86uf66d/q4N7p3/H78tTi1ez57e/78O76 +7/H48fX79fn++fj9+Pr8+vj6+Pf59/3+/fz9/P////7+/u/v79/f38/Pz7u7u6qqqpqamoqK +inZ2dmZmZlVVVUVFRTExMSEhIREREQAAACwAAAAAcQFIAAAI/wDfCRxIsKDBgwgTKlzIsKHD +hxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzb3/dvJkyfO +n0CDCh2KcB4+fz19El3KtKlTlPWS7nxKtarVqxGl/sPKtatXqlq/ih1LlmbYsmjTqh15dq3b +t3Alto1Lt67dd3Pv6t1LNi/fv4Cr+g1MuPDEevl0/uOXz568d/X2LZx3b1+/nf723XtssK28 +yjv75aP3kF4+fjz34eNcULFUyQLl4UP9z5++egZlKxZNuqFp2v9Us26tNfhAefku97t3ELFi +xo4hw7ZoLzFP6AldJ52OXDnzhPXw7f9Dmrr423nA+e0DrvQgPdf57uXrmS9ewbP3yCfVZ1/h +PPjy8YRPfwMZpV9q78SDT3H7EHhPcfz5B+B8Ow1okIGvCfTgfgShd916UlmUH2bxHYXZdwVh +uJ2GUunT3GWh3XMPjOatNQ95/MxzHIVTGRQPj/6wtuFO/BCIl1Tx6FPcTtMdZE9PuLFIpJEC +RbVdPOy1KBCPWjVZ0JM8RfnOkEU2l+GCWvV2I5E6xsYlRfG4FuRA8dBYpkFW9iQZmlL1NhCX +d2KZlHr7eElWPPr5ORCYWxUkKE+K0pNUPgRphdo+9dAzJJQIMfqPiwTRSGln2yl5m6ZaVRdc +ppvyZI+TPYH/OpCoCL32JD8H7sQcopAaxOhEj+70KkGSXkelQLYulus/KL7D505ivlMsT7Ku +tSlCGxqkJILEJuVPpVL5M6yUsR4kz4HjbtmTosiGG22rmKULb7WxoVsQl+y221M/4r4zj1TM +XXtQthJp961BBxp65L79/psUig73ROq6b7GXr0CXfflwQfKEOJBW0SYY7kFc/sPupvQuTDFB +HUsVcsv7GlTyyeVOTN9ArepoMUIZR+Tppwdt66rNPI06ZlJtvlMyPwZpB7Rb3iZN0JMF0bhT +vlZXO5hfMLeHc1JUbu3xfWPHVja5Ox2bJkF8Dhs1rBJZzezASfVD9NVsDz3risTF/wy1VPkM +J5DUeXo9UD3kNQhuUgf5Ba9BrYYsNuN3N/o15QRFXnlu9BCoVeAXRlS4rnQnJfnZ78jTOdl6 +No16WU4XfbFAz/Z40Dxqv+6X0IZDtvHiEm8u/EC8237478D37vrnsztUu8lmJoUP68Ez5LSh +sb/183bpDpQ9RJNXv/eSDFKvfPiGy00+t8kb3yn5+3T/UOwXT8u+vuIrtPTy96tV8mtSe8ey +sqI71FmqUAhMYKGm1z7LNbBxZzugAhXIwAcy5H/bCWBDllW/kVmQIV1znwCRt5Yfrc8fUtPK +sRSCPhGuDXwFxNwH8dcrAsowISYkHwptuLKC2M9wg8EW0v86VLcVpqUe6uuJPzzXJxjekIYu +dBkPzxfD/IFMLq9DCBJ1aESEcNA9HvxYFhHCpSbxbod2sUcSKzSQZTWLIS10IMYANkURqoyK +N1TfGxsSxISocUkVbAj9wMg3MT5xIYhLjYy0sw8N0iUylvKeVJj2kDjyj1p1lCMUNXlH98Uu +ZXAco0IgOcncyEiDz+ug9Mxnx4XEA17/4E1d4uee7x2tiQ6xZEHgtUQn5m+TELwhL7tYK1EK +hJYGec/ZPKW44yVFfrfk1AwbgpzFNI8ui0kIl+xmtgzlsoq9CyHpisIuXbJSjuKcGzmHl5Bs +ktFvVfLm+Hiyx2iGhp0MsQdSehn/GLzx7H4YDGRB8OEncxIkdnO6kG3OGcxfdlKTCBXc4BbK +0IX48yA0alKWdiK1nxmNIMWTXx99JaDCTAkhrmnWuT5HJRMWFJx2jFhPcrTLWIYNppz0i0yv +E8AH9SN3hyTbnfjXrOK8UTvcrFrr8JmQrgmUL9Q6Fsz4OZAf8sQfBKVHeJCSLoNOjUEyysc+ +NehVYJK0S2Eda0N5QsyFRYhjVzXSsv7RvWBBr1vGWmvaGsIlcTnSLvuKljyA40h6zNVb0Rrd +RQVi1btCbn2x1OD2HMvYF1ZVKxK1Z3H64UjF0tWiPOmHYAl7L8z6KD0ECtZQCeJZaBpkjZPU +x2bgUiHg/xQKOJxtKgaLRiAVeWu28dCnVsSVWXrAtj4pMpFU+mEP+8jjj8ttbuqgO6jo+PC4 +x/Kt9OqR2SPNJjUgCo0GedUT146JPP4oEXrrqd2e4IO7LISsVCy0FnUG1zqx1Id5WVYZ8vRD +M4KL3cYa25N6Vuk0mAHwQQRMMVg2eH0GRgxtMjPbBUPWwPatzm70i0OxriqfCCZSY4zI4AIr +pHjydadhVsxilOw0xZ91iAEMoA50pOPGOH6AMcIRDmTw+MfIIIcDGMAADWxgF7nABipQYQ1R +gOLJoIhGKDRxiSo7oxkSeEQjGrGMLSuiD3ggBB7GXIcmOCEJaEZCEYjQAhW4Wf8FNliBnOVs +AxTY2c43eLMKWnCDFJzgzye4wQlKQOgS1IAFiGZBC3LggjmvIM5zbgEOVqBnHawA0IG+MwpS +UOc7p+AGLUg0C2xgglKb4AQ2wLQKLO1oUps6BTp4gZ7zbGoT3AAGjs7zm1dgaT3bQM8t0AGm +T4ADPcO5BY7OwQtcwGwXdNrOK+hzCqatghkUugQt4IEKMK1rNyOE0m/egU3+A+PrPGTGNbYx +jtOhYx77+Mc9FjKRjYxkJTPZyVCWMpWt3AxLPIIRjOhyI768B0LcgcxmRkKaizCEa5cA0nN+ +Np6B3WduD7rQh070ohsdcXC7edKVvjSga3BtTmv606H/TnQNao3qWpuA1RGvNazb/GZam/oG +Lpi1nnntcTgD2wbXPkENpk1tG7Ag2ciecw00HW2ip6Da11aBtrmt52/rWdw2oQeKIXtuGhtA +3TnecY/hHe8hF/nISV5yk6Ec5SlX+RLQ6Pe/A+7lPhT84HioQzLOjOYkMNzhRhc1xOV8A1Hz +2ekr2MHFCZ1xRG9c1DfoOcjfrANRs4DkhTa5p0Et6pWbuuW1rnyinV3rFviA5m62ealxrucc +7HwHqPf5m1sA9EIL3elwFrULdJB0Oddg5zjAvQ1w34NtAzryb7Z6uGuSJHrisB7s6bo6vg52 +dov93UCW99nrrXZ8P1nfb4+7/78BLvAvh3nMed973/3e8GvboAXwh//748/nGDTbBZGfswsU +737D78AFopYDkudoLAB78ecCmEdoKYADL9CADcgDKYdonldqgeZyoodoL9Bte3Z6s5ZzNeeB +buZ6b1aAsWcDDvgCMlB7hHZ7RJd7owd7jlYDjrYCwUd0iWdsPfACjoYDqKd8boZ1M8EjoARX +RCJ9M1Z97TZ28BZkZkdvaXdvbHcKbldl4jd35dcHeiBmZKZ+C9d+hTZ/8QeG8HcDMXCC+Sdn +LqBtvkZ/L9ADAJhoORB7OWB5PLBszZaAJZACPEADMtCHMgCB9DeBJrCAFihqbehopheBBQgD +jMiIbv9YaboHg3OmbA44AypYAiw4bbQXib23Ao2HaJMWaTuAgzBwgrCXfAdBhzVhYqGkTg2h +DrAIi+hgY+vAbhCADLiYi7hoDuXQAb6oAcCwAcCAC8RoDaYQDch4CtNwCs/gDM5IAdCwCZGw +DMtQCdS4DIAACIZACNz4B2wQB08Qjk9gBEAwA+Y4AzTwAzawjjbQA0CAA/CIAzoABOxoAzkA +BDmQjzmgA0EQj/KIj/rIjz1wAwR5A0GgAwV5A+8YjzkQBDvgj/TIjg3ZAxRJkUFQjzYABDug +Axw5jxiJj/UIkuwIBAl5A0KgA/4YBDdQjz+QkD1wkAlJkgV5j/7IAyQZkjr/oI/32JEcqZE7 +8JM84JA/uQMvaQM1cJQ14JND6ZDsiBA8MJQ7AAQ1oR8fpUUnJWNed4Rh527YV3bzhnb2tnZQ +Ng2h8AzNcJZxl2Vb1mWJcAh5YAeAcAdyWWZOgAR26XdEIAONCAMi6GYu4AMuQH/SpolnKGc5 +oGmrdoIvwHu1poGJ9wL0F4etN4N1GJklMAKYOQIyqGc8EJjx1wMrUGs1cH8vkAO4B4jxhwMs +93tv9gIQ6HSFp3E9IAMxUJsxUGwdqGk2AIIq8H9IR387gAIkMJwk8GuTOWcIcW0mgAM14Sn0 +ZUpIwQ/dhRDoNmNft5U91pVM+JXcB4VQJoWagAmY/9AMaallXMYIbfmWcTmXZnYE7nkEayYD +9Iebb9YD9Hd4RMdnM3iYd5aYJ6gDKtCYrweZqdlzAuholZmaIyACDCoCSxd6moYCoFlru9ls +pYl7vEd/rkaBrOmXsAeb/nd/LkCfH9cCusmbcfib8RecxFmcxnagcpachbacWcceqiEjMqIP +tMFcElGdWnljSYiLS6h9ThiW3gcK4Cme5Ill5rkM6OmWcCmXd0AHS+AE7wmfeTmfOHifg5kC ++plsiBlr/xmgNzeg82mglEmg8IcDC9qgD2pqOhChE2pqFcpsF9qCGRqGq6ln+9cCIKpx/3d/ +JKoCPHiirdeJcQicwkmcxv/5ZjC6AjJKaDR6E5ShD+MxU/sQH3/FED5KfUB6fdpJpGDZfVE4 +ZUpanmv5pOoppXTABFb6nvGppXpmn4LpdF86iWGqmAAqoLu2A2oqaWiKoL/Kpg3qoCgAoZo2 +p6VWpy5wp9SWp/K3p2/Wp3/qeIHabINaqHe2m4eqovDHooz6oo4WqSUwqXHRqbP4qVypi9u5 +fU9oDaRQquE5nqh6nozglncQl2M2B656pbEaf71Wn/cJrbuHqEwnpg0IA6NYa3MIqMO6n4jI +AzEwn23KoG9aanGqaYDpdCbogDFggADLhhtqAnDmaH1aaSf4sSIKra5Zgjo4iZ3oq/THAywA +m/T/5wI9IGoIUWsowAN1ga7q9gC3KKRD2oSjymSkMApKOwqnEA3N2AzOAA3OsAnKoAzLIAl1 +l4XoNwdL8ARK8LVKsGb3FwM/8Ks56LE/EAN76QOK6QN7CQM/AAP3xwMyYIo3e7YNSLZta5sx +MANse4KAaaFpC7h8+7H3ibcvQLb212yo2QJtWLg/4Id9iLgv4ANl6ICdeX9u24gyMLgOuANv +O5t2e4A8UIoO6AN62Yhu2GwIQZo9UBcDELuyG7vTJwDpAAEQcA7GsLu7ew7HQA7lUA7j0AHC +4A2+cLzAsA2vsLyvgAvZIA2lEL2nIA2k0Amf8AkUwAmdwAmQ4AiT4Ajg/4sIg0AIglC+goAH +cnAF6nsFWVAGaFAF8FsFZLC+7FsGWGAF+GsFbfC+8UsG8VsFWNAGVUAFBEwFYZAFaJDAaBAG +UdDAUXAGZZAFWDDBWEAGU3DBU1AFY0DBWKAFZoAG9NsGBUwFVuC+9EsGWPC/bODADSwG+WsF +V2AGVXAGNHwGZEAFGDwFa6DACUwGCKzAZGAF/xvE+XsFbFDDZyAFG0zBWWAGacDDSzzBaLC/ +IywGI1wFYpDC8TsGaMDBYoDECDHCVmAGsDu7slu7AtC7vNu7vxu8w1u8x+sLycu8zfu80VsK +00C91ou92su9kPC94Tu+ghAIhGwHcEC/aOC+Q/98BS+8wS/cBloMv2IgBZQsBfo7wAV8wDzM +wCzsw0OcwxrMwWlABmjwyFdMyidsBZUsBSvMwi5cxP6LxDe8ymBgBSMcBiC8vkGcw5NcyVZw +xDWsxJhMwFwMxYhMxQUsBlOwymwQyRpMBcwMxgexylPQBmVsxgNQu+igxmvsu8ArvMRrvMh7 +AXTsvNAbvXlcvdcLDZ2wvZDwx+DrCOJLvoQcCHlwyOubyPwLv/PbyPebv5D8v71MyZd8yz+c +wJzswJ7cv6AcxVgwyqUM0Kecy+obxMzMwlHwyvh7BbFcw7NcybV8yxTN0VbAy6v8y0gszCNc +zAo8BseMBlW8zJXczP//OwbQPNPSbBDUbM10gc20awACsM3GoLvd3MbgDMfHuwHkzLzmfMfp +vMfZ687eG8/zPMiEfM+IrMj9y8j568gA7cwDbckCbNCbjNELzc8NLcqkbMoFLL8jbdEzjdEa +DcMdTcMfTckhnclvXdIYHNYoHcxjMMxUwNIJ7NL5jMwErMzM7Mw2Hc01jBA7fc1mrM3czLve +7MbhHMdKXc52jM56fL3ZywmZ0L2UwAyO8AiLIAiGYNWDcM8cnMhPrMDu28g8nAUBHb9+XQb0 +ewVtkAW+7dtiYNZZ8L9t8MJo4MO/PcpZ8MJmMNE8DNeUHNwsPAZZcML/WwVlUAW0bMt6HcJX +/2DSvhzYq+y/K13b83vYMF3AFszMEY2/jT3TMi0FkF3J1SzZs1u7t5u7uLvfvhu8wksMDuAA +G+ALwsgNBm7gTY3OpTAKnzABE0ABzzABz8AMzFAJFM4MilAIhlAIHF4IfhAHWxDiW8AFbuAF +XXDiXeAGKN4FXgAFIr4FXQAFXjDjM67iK+4GXPDiULDiKc4FPs4FXvAGP+7jb/AFRm7kbvDi +W5DkOp7jIl7iKy7jNO4FJU7jX7DjKB7kK97iatDlarDkXv7lb7AFYe7iIh7jLx7jXTDkZv7k +PI7lJx7kXsDmJo7iJc7mQ57iXeDlCDHkVF4X8BDogh7o7SDo7dAO6v9w6Iqe6LN7ANYpAAKw +AAJQAJReABEAAQqQ6QoQApkeDh7gAQnw6R4wDMHAAcFw6sLAAL+gAb3Q6rowC9TgCrLuCrYQ +67NuC6yQ66zQCqrQCr7eCtRwC7Yu67PgCr/eCrVw7MjeCrrOCrYw664Q7MfuCqtADdZu7arQ +7Lze7LTe7KywCq7Q7LQA7a6gCtdu7bdA7r3+69RQ7edu7ucO7tBOC8yu67Xg7el+7Leg7NUO +7bUA7dSgCgD/7MduC9Vw7rUO7fuu6whx7tVwC4A+6IZu6Iiu6IfO6LLr6EAN6QRQ6ZQeAcWA +ACKPAJyuAB/w6aF+8sMwDKZ+6t3QC7/ACzL/zwuvruzP7u/ejuu63goJP+vFfuzJDvT1nusE +/+u2MO3wfu06n+vbruvd3uzg3uzFDu3mDu1TP+vr7uvlfu7UUAtcf/S/7gr03uz33uz5/uv7 +fuz9Puv/PusBP+1HL+4Hr/TD/vS53vDnDvF0IfETT+gVb/EYH7saD+kC0PEeD/IjT/KZLuop +P+osf+rB8PIxP/M1X/DkXva6vvS73vPEbuy/HvSfP/TO7vm+DvZan/TWrvlNn+t2n+tRr+tX +L+tV7/PqjvRc7/UIP+1jb+/4TvqtkPa/vvay3vay/vZhH/e6Tgtzn/p1r/l4f+16Hxd8T+gU +n+iA3w6NPmOEb/iV/474I1/yjO8BKv/4Lg/zM0/zs2Dzl5/z2s75rvDzoS/0zV70pW/7CK/t +2e70mv/t4Q4QrATOclWwoCpqBl0RVKiq1cNWrhBSo0itVkWKtiBGpNVKoMBaHwXecrXx1sZW +qxIarKWQmkOIrjSKpFUNo62VBW2JfNfTZ0+M1G79JFrU6FGkSZUuZUoU3lOoT9tBbddOXVWs +VwdsHXDAgAEBYQkUIEs2QjEEaRGEUKDAgwdyCTx88DBsGIcGwYJ16/WL119eumahtKXQVUiR +Oz+2wqmQlmGNG1fZrIhzY+SHEoMqFuhq1UaJoFeVhMjQoEqFs4KqMjyx4sWK1TBHrOXxI//i +j6gNklSouyDvgi9Bz/xY8ybljDyNBl3V1Plz6NGTSo3azl1Vd+rUBdDenfu6dezYEThwgMB5 +AAsirI8QIgIx+MQSEAvxDRw4DuDsixP3i784DjLAIAMCM/hFG1gSTNCCVBpssIJYIowlFQQV +hKWCVGTRUJZrHHzQwliumcXDa2SxEEIJY8HQQxQj5DDDDRkkEUYNK9hQwxJT1MbDVDq8UUYH +VwwSxA5JNFFBHzdsMRZZbNwwFQtuTGXJJmXR8cYmeazAwqNS7FE6MMMUc0wylYLHqTPLVHNN +Ntt0800445RzTjrrtPNOPPPUc08++/TzT0ADFXRQQgs19FBEE1UjdFFGG3X0UUgjlXRSSiu1 +9FJMM9V0U0479fRTUEMVdVRKAwIAOw== +--------------863F29C0C60FE676C16F30A9-- +From VM Mon Jul 24 20:47:34 2000 +Content-Length: 7242 +Status: RO +X-VM-v5-Data: ([nil nil nil nil t nil t nil nil] + [nil nil nil nil nil nil nil "Alexander Staubo" "alex@mop.no" "" nil "RE: Schemers.org logo" "^From:" nil nil nil "2000072500:58:36" "Schemers.org logo" nil "<14715.10231.877955.536511@sun.cs.rice.edu>" nil] + nil) +Return-Path: +Received: from faust.mop.no (faust.mop.no [194.63.250.43]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id UAA11794 + for ; Mon, 24 Jul 2000 20:00:33 -0500 (CDT) +Received: from magnolia (hidden-user@nas-213-203.nyc-t.navipath.net [64.20.213.203]) + by faust.mop.no (8.9.3/8.8.7) with SMTP id DAA14807 + for ; Tue, 25 Jul 2000 03:20:45 +0200 +Message-ID: +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_NextPart_000_0011_01BFF5B1.EF7CE720" +X-Priority: 3 (Normal) +X-MSMail-Priority: Normal +X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) +X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 +In-Reply-To: <14715.10231.877955.536511@sun.cs.rice.edu> +Importance: Normal +From: "Alexander Staubo" +To: +Subject: RE: Schemers.org logo +Date: Mon, 24 Jul 2000 20:58:36 -0400 + +This is a multi-part message in MIME format. + +------=_NextPart_000_0011_01BFF5B1.EF7CE720 +Content-Type: text/plain; + charset="US-ASCII" +Content-Transfer-Encoding: 7bit + +Included are two logo: One of the original (the one with +guidelines), one of a different font design that is much sharper +at this low resolution. + +Of course, as a designer I would like to rework your complete +site as a whole, but I doubt I have time for that. ;) + +Hope you like 'em. + +--A. + +> -----Original Message----- +> From: Shriram Krishnamurthi [mailto:shriram@cs.rice.edu] +> Sent: Sunday, July 23, 2000 13:16 +> To: Alexander Staubo +> Cc: clements@cs.rice.edu +> Subject: RE: Schemers.org logo +> +> +> You're right, my requested size is too small for any +> subtlety. I did +> like your new logo, especially at the larger size (at +> the smaller +> size, as you point out, the dot disappears). I've +> incorporated it +> into www.schemers.org for now. I do rather like your original +> submission, especially if you could bring it down to +> the same size as +> the larger of your revised submissions (the one on the +> Web page), and +> could add some color to it. +> +> Cheers, +> Shriram +> + +------=_NextPart_000_0011_01BFF5B1.EF7CE720 +Content-Type: image/gif; + name="schemerv1-1.gif" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="schemerv1-1.gif" + +R0lGODlh+gApAOYAAM/Pz9/f3+/v73Z2dpqamkVFRaqqqlVVVf8AAAAA/zExMSEhIREREf8GBv8d +Hf8HBzY2+t7r///ezw4P//8/P/+7u/+jmRAQ//8yMuvl9Ofy/wsLzI6O/P9wcP//+//69Pj4/Q8P +D/9/f5ig///t7fbW1vhcXP9/ef8pKfTi4v+ppv+Hh/+OjgIC/fKTkyQl//9zc+Pj9/9RUfz8/P4o +JdLS8/8SEv+Pivv7/N8KCnp+///8819i//6pqVFR9n9/9Do6/PdhYf/Qy/+AgP/+/v39/f/Wyf8C +AvLO2v9cXP8uLIyO+/83N9HR8mJm//ykpCIi/5qi/yUm/7W3+//9/f+YmPGYmObu/11d9vyRkYKC +842N98LM//9hYfIgKf/o6A4ODv8mI4qKiru7u2ZmZgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 +BAAAAAAALAAAAAD6ACkAQAf/gGaCg4SFhoeIggCEi4mOj5CRkpOUlZaXmJmam4NihAWcoaKjpKWm +lp5mY2MFAGOqnYQBA4MBZIOvsYKpuwO5rwa8ZsIHAoICxYK/B4MCoLi5ggqvuc/KC8qqwreDyWbI +xrCqzMfWqtHnA8EECuGpq63UupWeAGLorwQE6NzK+GPqxLAL1y8YLkVkcgkQwysAPjFkEq4aQyaA +GQKNzBjMdnDXp0PCeC0ctFGcoAAWDa0iJGwYS3RmzInkVRIdykMrB1VM5JDQGIgSV+2UFEAYAVom +VRHwRCDlOUJDC43cZaCjs2gMTTkttHVrM1mRvPIES/aYoa5hI4WrNYoFgrcy/2AgUPLBSYIEPx6t +dbTXjFhIWKPZO0W4sOHDiBMnVQzyI+PHkCNLHjTA170B9xAWgAlgQLiiZDIDIDPN5aACBLhZjEZG +QMZmB6oqE+MUYt+nlFuHU5gw9TeT9mB+i42LdqfWKtGJ6TxPUOWfADObGb350kKLDgWgM1BAgNec +u5h7JCSATCPtyxFmTFWUAEdxzmhrD0oROvR7Y9YKa9WR18/m0fyUkXLQsGRMLrwEx5E1g433noAd +OZiTPdOskl4tAj1YjnGSjIbfZhMZQIYBE4lxgIXm+aOIGBVCqAp99+AXo4UT1QdAAekRUEBEBRzQ +SIOEDODKGAYMcECPBzA0gP8CnuzXWHOCGGCAKyIWsCNmBhBwwImFgGdac9KdxpIhUlJJhpVkYKkl +lz4ReMiNOe54po8rDvLFA28h0IAEUdx1VxO1ECDbQQLIpk9yYzpCoitHLcBAaDSm1NJklFbKWApW +BEGBCS6UQMRkRUEkpACp/dTUKgNY9NphTlrq6quwvtpqrLTWaqs9DIlhAHZ8HQWRGOr41Zw1S1Wm +a4cMJdmUI6nlCuxqDIW26kW/phoJrsr+dQywzlpLLZuF4MrQrsJyEky1BNy2LWa5ersUuOQdVYAC +0o6hgJVWsomUGcVQY8yZ6Ajgy4H3OAQAAAGwI4YxwggpYjDSdgJTQovMQuX/GACQM8ZRXaIjZGgi +7rcxQzoO6kwhFPslJJEYa8xxm4Qw8NmXZuzbryr/VofKN5D+FJUqGXcc88zbjGFRlkYv2hrGrpg2 +5UFE7ihWSD4h4uQvflHtYM1rRZNlM/7xIw+/LGEESwAKEEIOzZ5F+PW2BVIWYZQDqsLdz5R4Al2X +AFR17GxxOze31g/yI5UYO2JsUypU72a1Y4Vo3VmNJ5ZoeY0cetlSSDDJpIgvE1VO4+glpgReUWwd +slDiTWOYN2vGpIsPRgBMhVvWqQvink6/wWJMT3J/s0B3Wf+kZEoFLRzearAAsICkkCe6tS2SGm0S +MnjfTjPNYQrieS1DFXz9/wHZa56IAMP/HuPxgvRjRg9e0GABFxMk0AIHIAQ6XTjOiK7jIhxSEZRk +QSczmId59plOk8wAhjI48IEQjKAEJ0jBClrwghjMoAY3yMEOevCBOcgTAjCQBCOMwE8b+KAKV1iG +ENjqhTB8xBAQ0AER5IkJHtCBD4ogGRdxBCCNWIpwYkjEItLKAAdIV0dCpa7DzMJZCWmiEadIxVjN +qopYzKKsoqfFLnqRMVf8ohjHmIkh0swc08HEtBCBjy45woyPWKMhVsUZSskxXG5kBCRegxZCFClV +phNVAG6zkAvlAolkUKKTRNQIagTwEFpKT34AAi+YdUJgWPtJOIq0CARNiv8QkeykdoxkRvN1xiKT ++uNNtJGmQWZiKaqSUZLYSKBTbu8bwDLAgbKGGellZTrki5Z5ABKulVEkkSNCHGb4sx9yDCYaC4FJ +eRziswEUwJokwhjxLCmIMizCbAHa0S6At4vdNaMiKLImNldxo754aQDuC0kqMhYaoLhiX5SYSmc6 +Ga4FuNNj8SRPqoQSkSQpgES0QZAyDqaKMtxnIgl5icSyYYzRKLQTvoFFRE9iTo0or2b5ad5SjjEi +btbsFq84WXH0ppG10SwY4RiYSFNRnkFpDylFQd1CO+nQGQkFjolYVpowRxxxlOSmJ6ENLw61C6wF +IBgp3RXjfGKiRxqoE4P/MmOCpiEjn9UoRdMxJ1NNUsCLDEghFPFpi45JIxZ9NRcAEKs5o1FWswnQ +ObujRu1o9pMkaatDtUNNHn9JlcDVLK9Ac000vGWSjb5oHr/Q5bOk55JGlouy1YlUgt4BOnhAMVcR +qZGQ7sovh8gINgm9x43Ap4zOsuKzwhRtIwWzL+H4RxmSZewk9qERfGrHFcbwxn/uKp6kGCWNzXvP +l4oy0Ll5g2qZNMQV3WEWXhgFc9idSG3dRN2JRs+6oMwu6Yh515+Y7izPCpDapAgSBLknlgNCynBv +Z17lQjcbWBvgLs6Ez5pt7aOLGdaTHKTEXXQtdycx7OYk+t1BFHgYB05w/1neOQmIXLMQ/X0Ebz9X +u9b5g0S2o/AhdNmNqukuGgF4xmhIDItVIA2VOlmLt2h7Ue8NmG1OGQo0lzIt81G2ezGhLGN13Awe +I0q/CGExNYi0DxgTIgNTWIIUILCFGERuEB32jHKegU8fH2Io9jivKnyB21TAUrABGJK7PMbb8tBo +dYhjGBf/Wwh95MfNEGKFAfz5T8pyr3N+trMA8CzJAux50EJDMrVS/F41p2TDZlhBnsKwAx74CQsz +IMmyWMKunbxNwYrah3fisb6LYMzJqdldT3IyUpAAGMXiPOONPxkMp6BDS8Lx8n8Brd9azw3XR95a +nRN5kiXrThhVEGEDhKtwBSj4SQuFKJJTFoVLm4L6EdK2SkT0g4ghARUnQC6e5bqEHwv9dUUBAzfm +nBLNy4nXh93uHiHLbSH2MmIiiHCACLvwgBNE4AJ3AcIbL3Q+emuSEvVVoJ/JyHBRkOAICLBBBVDw +lhto4AUJqMFkrK0QnRnw2w0PeSWo8IQs6PstDVABEnAgmUIxYHcHQk8jUSrymtvcAExaRWrIcADQ +DZLgNg+6yDEG2wcTIhAAOw== + +------=_NextPart_000_0011_01BFF5B1.EF7CE720 +Content-Type: image/gif; + name="schemerv4-1.gif" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="schemerv4-1.gif" + +R0lGODlh+gAVAOYAAEVFRe/v79/f3xEREc/Pz2ZmZpqamqqqqlVVVSEhITExMf8AAHZ2dgAA//8U +FPXs9MvV/+Hh9f+vpNra9A8U/3By///09N7e+v8tJf+8s/xLS/R4ePjU0zs7+zg4/AwM/f/V1f8r +JXiC//8+P9bS/P54ePfi4v83N/zEyPJ+fv9yZv+FhRwc/P1ISP8zM/8aGv8nJ2Zm92Nv///T0/9U +VMvY//+Dg/9gVZqf/wcK//Y2PNfO7v8FBXV19f/Tw/+amv8pKcLC+Pf7/6as+v9xcX198zY5/wAB +/xsb/v8UE/9DP//19f8fH4qKiru7uwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 +BAAAAAAALAAAAAD6ABUAQAf/gFCCUAROTYeIBk6DjIyFBoiRTYuNUIeUlY0ChwKCB5KgiJgBkp2Z +jZIEgqShoYOfrZFOpqeFoIqnuYIChq2KAZWssYe4uba+qq9Py8zNzgXAgk3LurrLk87ZAE7LlNe5 +00+M4Y0IywerCU8D0YIATwDS1LnfgvW5AgX3B9n9y9DVuD3BVI2cPHHVDKgbMMggKn8DoeQbAHFd +AVqDJlZ8kqBJIyezqq0CGY0XyJMoUdIyKbKWk2RQUspEOQgkxlw2GWmEOOCioBcLFjgYgYFEjgYe +dunb+ESBR50gW7LUaW5jT1MU41VT8ARBzWUGRBLoNuieLoHenjxtaWneWHin/8IxcAe3LUK2ZnOp +KzAoq0iuXqtR5NtSXWC7LQ0sMyUg7ynF4hxXQitIIExrastmFkkZimRw8zRRlPxOq8OWnxvdS/01 +IggdIXyIaMAiiL3NIks3DK3LYeeAZNkKH068uPHjyJOLNJFCQ4sNHJRLT/6WadNG/JolGN1vrua1 +Z4NbvxeuGfhKjZ2ZHn+X/bIE7aozVdCSAHfrA2iVHw8+O/tFy3inSyEwnaYLAACEdVsTAcyEUiHi +4TbZIeOEFsBCN1WFDl3r3ZXJJd+1pNttAhrzEnARteSQgad0xuIpmzSBkUkzHcDVE9G8mEkh7bDW +WlrnFcSbJ/+8pRUjI+p4iv+PNz5x0y4OOmHjMu1k8puQdylJ5D+7eVhNN0sB0MQBMh1y45FQvPNE +AZM4aMCNtPhYWYTWraXkOwQhWdd+G4Uo0j1hjllmE2dC8UNQCyghhBENNFAEFIGSWWMT6jyhIGIi +nVYVAoLO1MRSh00n6qiklmpqJUs4wIQNPCxwQw0UTHDqrI0QUFVFAGFXaUUDnCdnTHQyZacz9GHJ +TIfWaTYeAJcRcitEuYq160bMVjher5UcMC1ECWy46S+NBHBAVZdCsdABVer05mJ+ogjkcAbBmYua +qiQ55JcS7kjuIN86ka64+1azFAMhWTkuefeGawBFCTCy0CRPVtaEX3KOaFf/s0s+saFn+bYYYZC9 +hcaAYwEwHI29XuILciUWV1wXZitXYk6xmLo7Z4ru3liAIlGmqyXMAkG0zcegeXiaQKEirWeHMLer +C2CD6Myzg+l6jDOWXbaUXTIv9uJKTAXcB23Wxl3TYJQvdfYr2YOUvA4wI+eL8nA+jpYfI06EbR1h +OAWXaWg/lyfgi3w24wSC5VpNyc+DvLPWr2p3HHLKab7HbiNzCydnOJcizllwDwxRARIxXCDIW3kW +zXYuF3I0CGRVZxJAN35VU1U0s0seLlhO953iP2jndFBc752CcvBRLYgabrXrcrsFQASlAgRHNPBB +BOa+rIvbfDNec+4xWyuRbNg8XWYfeyVCHhz5/gxLeUbz7sle7xmvJQD7/QygCgyI0iABDo3qwPjc +gybvneZ812rW2WQSu3BFiVYQjOBxFpiSdK0gKERwwQIyIIMG9MCBDsJYqQpBNQma8IQoLNUMSnCC +oCQBBTtIIakCAQA7 + +------=_NextPart_000_0011_01BFF5B1.EF7CE720-- +From VM Thu Aug 31 09:28:07 2000 +Content-Length: 106 +Status: RO +X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] + [nil nil nil nil nil nil nil "Brian Sabbey" "bsabbey@newton.ruph.cornell.edu" "" nil "logo" "^From:" nil nil nil "2000081418:38:55" "logo" nil nil nil] + nil) +Return-Path: +Received: from srfi.schemers.org (srfi.schemers.org [128.42.6.206]) + by cs.rice.edu (8.9.0/8.9.0) with ESMTP id NAA29721 + for ; Mon, 14 Aug 2000 13:39:02 -0500 (CDT) +Received: from newton.ruph.cornell.edu (ruph.cornell.edu [132.236.84.11]) + by srfi.schemers.org (8.9.0/8.9.0) with ESMTP id NAA09643 + for ; Mon, 14 Aug 2000 13:39:00 -0500 (CDT) +Received: from einstein.ruph.cornell.edu (einstein.ruph.cornell.edu [132.236.84.12]) + by newton.ruph.cornell.edu (8.9.3/8.9.3) with ESMTP id OAA06266 + for ; Mon, 14 Aug 2000 14:38:58 -0400 +Received: (from bsabbey@localhost) + by einstein.ruph.cornell.edu (8.9.3/8.9.3) id OAA14884; + Mon, 14 Aug 2000 14:38:56 -0400 +Message-ID: +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII +From: Brian Sabbey +To: shriram@srfi.schemers.org +Subject: logo +Date: Mon, 14 Aug 2000 14:38:55 -0400 (EDT) + +I think it would be great if your logo was: + +(. schemers org) + +in a code font. + +Regards, +Brian Sabbey diff --git a/www/logo-dsandler.gif b/www/logo-dsandler.gif new file mode 100644 index 0000000..fa0f562 Binary files /dev/null and b/www/logo-dsandler.gif differ diff --git a/www/logo.gif b/www/logo.gif new file mode 120000 index 0000000..9d75d8b --- /dev/null +++ b/www/logo.gif @@ -0,0 +1 @@ +schemers.gif \ No newline at end of file diff --git a/www/logo2.gif b/www/logo2.gif new file mode 100644 index 0000000..888a8d5 Binary files /dev/null and b/www/logo2.gif differ diff --git a/www/logo3.gif b/www/logo3.gif new file mode 100644 index 0000000..152c15e Binary files /dev/null and b/www/logo3.gif differ diff --git a/www/logo4.gif b/www/logo4.gif new file mode 100644 index 0000000..72e3f99 Binary files /dev/null and b/www/logo4.gif differ diff --git a/www/plt-logo.gif b/www/plt-logo.gif new file mode 100644 index 0000000..44a81a7 Binary files /dev/null and b/www/plt-logo.gif differ diff --git a/www/quotes b/www/quotes new file mode 100644 index 0000000..216fcb9 --- /dev/null +++ b/www/quotes @@ -0,0 +1,2 @@ +The Revolution came and changed his whole SCHEME of life. --Macaulay. +http://work.ucsd.edu:5141/cgi-bin/http_webster?method=exact&isindex=Scheme&db=* diff --git a/www/robots.txt b/www/robots.txt new file mode 100644 index 0000000..e69de29 diff --git a/www/schemers.gif b/www/schemers.gif new file mode 100644 index 0000000..4a0beef Binary files /dev/null and b/www/schemers.gif differ diff --git a/www/template.shtml b/www/template.shtml new file mode 100644 index 0000000..a479ec7 --- /dev/null +++ b/www/template.shtml @@ -0,0 +1,15 @@ + + + + + + +schemers.org: + + + + + + + + diff --git a/www/welcome.shtml b/www/welcome.shtml new file mode 100644 index 0000000..2a25ef0 --- /dev/null +++ b/www/welcome.shtml @@ -0,0 +1,49 @@ + + + + + + +schemers.org: Welcome + + + +

+Welcome to schemers.org! This is a collection of resources for the +Scheme programming language. It was initiated by the +PLT group at +Rice University. +It now runs on a server in the +Brown University computer +science department. +

+ +

+The pages were built and are maintained by Shriram Krishnamurthi, +with help from other members of Rice PLT, most notably +Matthias Felleisen, +Paul Steckler and +Yan-David Erlich. +Comments, suggestions and contributions of material are always +welcome. Please contact me at sk+59@cs.brown.edu. +

+ +

+Several people have contributed logos for this site. The current logo +is from Dan Sandler, a +Rice graduate who spent a summer working with PLT. He wrote Scheme +code to rework the Rice computer science department's entire Web site, +and thus got the group thinking seriously about the Web. Thanks, Dan! +

+ +

+The ``favorite'' icon — the little lambda that you might see +associated with this site in some browsers, especially if you bookmark +any of its pages — was generated by Mason Loring Bliss. Thanks, +Mason! +

+ + + +