r5rs-z-h-10.html

来自「scheme 标准(r5rs)。Scheme是MIT发布的基于Lambda运算的」· HTML 代码 · 共 547 行 · 第 1/2 页

HTML
547
字号
<p><div align=left><img src="r5rs-Z-G-30.gif" border="0"></div><p><p><a name="%_sec_7.2.4"></a><h3><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.2.4">7.2.4&nbsp;&nbsp;Auxiliary functions</a></h3><p><p><p><div align=left><img src="r5rs-Z-G-31.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-32.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-33.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-34.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-35.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-36.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-37.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-38.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-39.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-40.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-41.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-42.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-43.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-44.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-45.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-46.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-47.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-48.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-49.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-50.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-51.gif" border="0"></div><p><p><a name="%_idx_638"></a><p><div align=left><img src="r5rs-Z-G-52.gif" border="0"></div><p><p><a name="%_idx_640"></a><p><div align=left><img src="r5rs-Z-G-53.gif" border="0"></div><p><p><a name="%_idx_642"></a><p><div align=left><img src="r5rs-Z-G-54.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-55.gif" border="0"></div><p><p><a name="%_idx_644"></a><p><div align=left><img src="r5rs-Z-G-56.gif" border="0"></div><p><p><a name="%_idx_646"></a><p><div align=left><img src="r5rs-Z-G-57.gif" border="0"></div><p><p><a name="%_idx_648"></a><p><div align=left><img src="r5rs-Z-G-58.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-59.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-60.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-61.gif" border="0"></div><p><p><p><div align=left><img src="r5rs-Z-G-62.gif" border="0"></div><p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p><a name="%_sec_7.3"></a><h2><a href="r5rs-Z-H-2.html#%_toc_%_sec_7.3">7.3&nbsp;&nbsp;Derived expression types</a></h2><p><p>This section gives macro definitions for the derived expression types interms of the primitive expression types (literal, variable, call, <tt>lambda</tt>,<tt>if</tt>, <tt>set!</tt>).  See section&nbsp;<a href="r5rs-Z-H-9.html#%_sec_6.4">6.4</a> for a possibledefinition of <tt>delay</tt>.<p><tt><p>(define-syntax&nbsp;<tt>cond</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;(else&nbsp;=&gt;)<br>&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(else&nbsp;result1&nbsp;result2&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;=&gt;&nbsp;result))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp&nbsp;test))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;temp&nbsp;(result&nbsp;temp))))<br>&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;=&gt;&nbsp;result)&nbsp;clause1&nbsp;clause2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp&nbsp;test))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;temp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(result&nbsp;temp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;clause1&nbsp;clause2&nbsp;...))))<br>&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test))&nbsp;test)<br>&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test)&nbsp;clause1&nbsp;clause2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp&nbsp;test))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;temp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;clause1&nbsp;clause2&nbsp;...))))<br>&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;result1&nbsp;result2&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)))<br>&nbsp;&nbsp;&nbsp;&nbsp;((cond&nbsp;(test&nbsp;result1&nbsp;result2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clause1&nbsp;clause2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;clause1&nbsp;clause2&nbsp;...)))))<br><p></tt><p><tt><p>(define-syntax&nbsp;<tt>case</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;(else)<br>&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;(key&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clauses&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((atom-key&nbsp;(key&nbsp;...)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;atom-key&nbsp;clauses&nbsp;...)))<br>&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;key<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else&nbsp;result1&nbsp;result2&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;key<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((atoms&nbsp;...)&nbsp;result1&nbsp;result2&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(memv&nbsp;key&nbsp;'(atoms&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)))<br>&nbsp;&nbsp;&nbsp;&nbsp;((case&nbsp;key<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((atoms&nbsp;...)&nbsp;result1&nbsp;result2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clause&nbsp;clauses&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(memv&nbsp;key&nbsp;'(atoms&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;result1&nbsp;result2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;key&nbsp;clause&nbsp;clauses&nbsp;...)))))<br><p></tt><p><tt><p>(define-syntax&nbsp;<tt>and</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((and)&nbsp;<tt>#t</tt>)<br>&nbsp;&nbsp;&nbsp;&nbsp;((and&nbsp;test)&nbsp;test)<br>&nbsp;&nbsp;&nbsp;&nbsp;((and&nbsp;test1&nbsp;test2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test1&nbsp;(and&nbsp;test2&nbsp;...)&nbsp;<tt>#f</tt>))))<br><p></tt><p><tt><p>(define-syntax&nbsp;<tt>or</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((or)&nbsp;<tt>#f</tt>)<br>&nbsp;&nbsp;&nbsp;&nbsp;((or&nbsp;test)&nbsp;test)<br>&nbsp;&nbsp;&nbsp;&nbsp;((or&nbsp;test1&nbsp;test2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((x&nbsp;test1))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;x&nbsp;x&nbsp;(or&nbsp;test2&nbsp;...))))))<br><p></tt><p><tt><p>(define-syntax&nbsp;<tt>let</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((let&nbsp;((name&nbsp;val)&nbsp;...)&nbsp;body1&nbsp;body2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((lambda&nbsp;(name&nbsp;...)&nbsp;body1&nbsp;body2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;((let&nbsp;tag&nbsp;((name&nbsp;val)&nbsp;...)&nbsp;body1&nbsp;body2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;((tag&nbsp;(lambda&nbsp;(name&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body1&nbsp;body2&nbsp;...)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val&nbsp;...))))<br><p></tt><p><tt><p>(define-syntax&nbsp;<tt>let*</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((let*&nbsp;()&nbsp;body1&nbsp;body2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;()&nbsp;body1&nbsp;body2&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;((let*&nbsp;((name1&nbsp;val1)&nbsp;(name2&nbsp;val2)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body1&nbsp;body2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((name1&nbsp;val1))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let*&nbsp;((name2&nbsp;val2)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body1&nbsp;body2&nbsp;...)))))<br><p></tt><p>The following <tt>letrec</tt> macro uses the symbol <tt>&lt;undefined&gt;</tt>in place of an expression which returns something that when stored ina location makes it an error to try to obtain the value stored in thelocation (no such expression is defined in Scheme).A trick is used to generate the temporary names needed to avoidspecifying the order in which the values are evaluated.This could also be accomplished by using an auxiliary macro.<p><tt><p>(define-syntax&nbsp;<tt>letrec</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;((var1&nbsp;init1)&nbsp;...)&nbsp;body&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec&nbsp;&quot;generate_temp_names&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(var1&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...))<br>&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;&quot;generate_temp_names&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(temp1&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((var1&nbsp;&lt;undefined&gt;)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((temp1&nbsp;init1)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(set!&nbsp;var1&nbsp;temp1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...)))<br>&nbsp;&nbsp;&nbsp;&nbsp;((letrec&nbsp;&quot;generate_temp_names&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(x&nbsp;y&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(temp&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec&nbsp;&quot;generate_temp_names&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(y&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(newtemp&nbsp;temp&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((var1&nbsp;init1)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;...))))<br><p></tt><p><tt><p>(define-syntax&nbsp;<tt>begin</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((begin&nbsp;exp&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((lambda&nbsp;()&nbsp;exp&nbsp;...)))))<br><p></tt><p>The following alternative expansion for <tt>begin</tt> does not make use ofthe ability to write more than one expression in the body of a lambdaexpression.  In any case, note that these rules apply only if the bodyof the <tt>begin</tt> contains no definitions.<p><tt><p>(define-syntax&nbsp;begin<br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((begin&nbsp;exp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exp)<br>&nbsp;&nbsp;&nbsp;&nbsp;((begin&nbsp;exp1&nbsp;exp2&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((x&nbsp;exp1))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin&nbsp;exp2&nbsp;...)))))<br><p></tt><p>The following definitionof <tt>do</tt> uses a trick to expand the variable clauses.As with <tt>letrec</tt> above, an auxiliary macro would also work.The expression <tt>(if #f #f)</tt> is used to obtain an unspecificvalue.<p><tt><p>(define-syntax&nbsp;<tt>do</tt><br>&nbsp;&nbsp;(syntax-rules&nbsp;()<br>&nbsp;&nbsp;&nbsp;&nbsp;((do&nbsp;((var&nbsp;init&nbsp;step&nbsp;...)&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(test&nbsp;expr&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(letrec<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((loop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(lambda&nbsp;(var&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;test<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;#f&nbsp;#f)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expr&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;(do&nbsp;&quot;step&quot;&nbsp;var&nbsp;step&nbsp;...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...))))))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;init&nbsp;...)))<br>&nbsp;&nbsp;&nbsp;&nbsp;((do&nbsp;&quot;step&quot;&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;((do&nbsp;&quot;step&quot;&nbsp;x&nbsp;y)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y)))<br><p></tt><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p>  <p><div class=navigation>[Go to <span><a href="r5rs.html">first</a>, <a href="r5rs-Z-H-9.html">previous</a></span><span>, <a href="r5rs-Z-H-11.html">next</a></span> page<span>; &nbsp;&nbsp;</span><span><a href="r5rs-Z-H-2.html#%_toc_start">contents</a></span><span><span>; &nbsp;&nbsp;</span><a href="r5rs-Z-H-15.html#%_index_start">index</a></span>]</div><p></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?