133 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
| <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | |
| <html>
 | |
| <!-- Generated from TeX source by tex2page, v 4o4, 
 | |
|      (c) Dorai Sitaram, http://www.cs.rice.edu/~dorai/tex2page -->
 | |
| <head>
 | |
| <title>
 | |
| Revised^5 Report on the Algorithmic Language Scheme
 | |
| </title>
 | |
| <link rel="stylesheet" type="text/css" href="r5rs-Z-C.css" title=default>
 | |
| <meta name=robots content="noindex,follow">
 | |
| </head>
 | |
| <body>
 | |
| 
 | |
| <p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-2.html">previous</a></span><span>, <a href="r5rs-Z-H-4.html">next</a></span> page<span>;   </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>;   </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
 | |
| 
 | |
| <a name="%_chap_Temp_3"></a>
 | |
| <h1 class=chapter>
 | |
| <div class=chapterheading> </div><p>
 | |
| <a href="r5rs-Z-H-2.html#%_toc_%_chap_Temp_3">Introduction</a></h1><p>
 | |
| 
 | |
| 
 | |
| <p>
 | |
| 
 | |
| <p>
 | |
| 
 | |
| Programming languages should be designed not by piling feature on top of
 | |
| feature, but by removing the weaknesses and restrictions that make additional
 | |
| features appear necessary.  Scheme demonstrates that a very small number
 | |
| of rules for forming expressions, with no restrictions on how they are
 | |
| composed, suffice to form a practical and efficient programming language
 | |
| that is flexible enough to support most of the major programming
 | |
| paradigms in use today.<p>
 | |
| 
 | |
| Scheme
 | |
| was one of the first programming languages to incorporate first class
 | |
| procedures as in the lambda calculus, thereby proving the usefulness of
 | |
| static scope rules and block structure in a dynamically typed language.
 | |
| Scheme was the first major dialect of Lisp to distinguish procedures
 | |
| from lambda expressions and symbols, to use a single lexical
 | |
| environment for all variables, and to evaluate the operator position
 | |
| of a procedure call in the same way as an operand position.  By relying
 | |
| entirely on procedure calls to express iteration, Scheme emphasized the
 | |
| fact that tail-recursive procedure calls are essentially goto's that
 | |
| pass arguments.  Scheme was the first widely used programming language to
 | |
| embrace first class escape procedures, from which all previously known
 | |
| sequential control structures can be synthesized.  A subsequent
 | |
| version of Scheme introduced the concept of exact and inexact numbers,
 | |
| an extension of Common Lisp's generic arithmetic.
 | |
| More recently, Scheme became the first programming language to support
 | |
| hygienic macros, which permit the syntax of a block-structured language
 | |
| to be extended in a consistent and reliable manner.
 | |
| 
 | |
| <p>
 | |
| 
 | |
| <a name="%_sec_Temp_4"></a>
 | |
| <h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_Temp_4">Background</a></h3><p>
 | |
| 
 | |
| The first description of Scheme was written in
 | |
| 1975 [<a href="r5rs-Z-H-14.html#%_sec_7.3">28</a>].  A revised report [<a href="r5rs-Z-H-14.html#%_sec_7.3">25</a>]
 | |
|  appeared in 1978, which described the evolution
 | |
| of the language as its MIT implementation was upgraded to support an
 | |
| innovative compiler [<a href="r5rs-Z-H-14.html#%_sec_7.3">26</a>].  Three distinct projects began in
 | |
| 1981 and 1982 to use variants of Scheme for courses at MIT, Yale, and
 | |
| Indiana University [<a href="r5rs-Z-H-14.html#%_sec_7.3">21</a>, <a href="r5rs-Z-H-14.html#%_sec_7.3">17</a>, <a href="r5rs-Z-H-14.html#%_sec_7.3">10</a>].  An introductory
 | |
| computer science textbook using Scheme was published in
 | |
| 1984 [<a href="r5rs-Z-H-14.html#%_sec_7.3">1</a>].<p>
 | |
| 
 | |
| As Scheme became more widespread,
 | |
| local dialects began to diverge until students and researchers
 | |
| occasionally found it difficult to understand code written at other
 | |
| sites.
 | |
| Fifteen representatives of the major implementations of Scheme therefore
 | |
| met in October 1984 to work toward a better and more widely accepted
 | |
| standard for Scheme.
 | |
| Their report [<a href="r5rs-Z-H-14.html#%_sec_7.3">4</a>]
 | |
| was published at MIT and Indiana University in the summer of 1985.
 | |
| Further revision took place in the spring of 1986 [<a href="r5rs-Z-H-14.html#%_sec_7.3">23</a>],
 | |
| and in the spring of 1988 [<a href="r5rs-Z-H-14.html#%_sec_7.3">6</a>].
 | |
| The present report reflects further revisions agreed upon in a meeting
 | |
| at Xerox PARC in June 1992.<p>
 | |
| 
 | |
| 
 | |
| <p>
 | |
| 
 | |
| <p><p><p>
 | |
| 
 | |
| We intend this report to belong to the entire Scheme community, and so
 | |
| we grant permission to copy it in whole or in part without fee.  In
 | |
| particular, we encourage implementors of Scheme to use this report as
 | |
| a starting point for manuals and other documentation, modifying it as
 | |
| necessary.<p>
 | |
| 
 | |
| <a name="%_sec_Temp_5"></a>
 | |
| <h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_Temp_5">Acknowledgements</a></h3><p>
 | |
| 
 | |
| We would like to thank the following people for their help: Alan Bawden, Michael
 | |
| Blair, George Carrette, Andy Cromarty, Pavel Curtis, Jeff Dalton, Olivier Danvy,
 | |
| Ken Dickey, Bruce Duba, Marc Feeley,
 | |
| Andy Freeman, Richard Gabriel, Yekta Gürsel, Ken Haase, Robert
 | |
| Hieb, Paul Hudak, Morry Katz, Chris Lindblad, Mark Meyer, Jim Miller, Jim Philbin,
 | |
| John Ramsdell, Mike Shaff, Jonathan Shapiro, Julie Sussman,
 | |
| Perry Wagle, Daniel Weise, Henry Wu, and Ozan Yigit.
 | |
| We thank Carol Fessenden, Daniel
 | |
| Friedman, and Christopher Haynes for permission to use text from the Scheme 311
 | |
| version 4 reference manual.  We thank Texas Instruments, Inc. for permission to
 | |
| use text from the <em>TI Scheme Language Reference Manual</em>[<a href="r5rs-Z-H-14.html#%_sec_7.3">30</a>].
 | |
| We gladly acknowledge the influence of manuals for MIT Scheme[<a href="r5rs-Z-H-14.html#%_sec_7.3">17</a>],
 | |
| T[<a href="r5rs-Z-H-14.html#%_sec_7.3">22</a>], Scheme 84[<a href="r5rs-Z-H-14.html#%_sec_7.3">11</a>],Common Lisp[<a href="r5rs-Z-H-14.html#%_sec_7.3">27</a>],
 | |
| and Algol 60[<a href="r5rs-Z-H-14.html#%_sec_7.3">18</a>].<p>
 | |
| 
 | |
| We also thank Betty Dexter for the extreme effort she put into
 | |
| setting this report in T<small>E</small>X, and Donald Knuth for designing the program
 | |
| that caused her troubles.<p>
 | |
| 
 | |
| The Artificial Intelligence Laboratory of the
 | |
| Massachusetts Institute of Technology, the Computer Science
 | |
| Department of Indiana University, the Computer and Information
 | |
| Sciences Department of the University of Oregon, and the NEC Research
 | |
| Institute supported the preparation of this report.  Support for the MIT
 | |
| work was provided in part by
 | |
| the Advanced Research Projects Agency of the Department of Defense under Office
 | |
| of Naval Research contract N00014-80-C-0505.  Support for the Indiana
 | |
| University work was provided by NSF grants NCS 83-04567 and NCS
 | |
| 83-03325.<p>
 | |
| 
 | |
|    <p><p><p>
 | |
|  
 | |
| 
 | |
| <p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-2.html">previous</a></span><span>, <a href="r5rs-Z-H-4.html">next</a></span> page<span>;   </span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>;   </span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p>
 | |
| 
 | |
| </body>
 | |
| </html>
 |