Eval-and-Environments.xhtml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:pls="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:ssml="http://www.w3.org/2001/10/synthesis" xmlns:svg="http://www.w3.org/2000/svg">
  3. <head>
  4. <title>Eval and Environments</title>
  5. <link rel="stylesheet" type="text/css" href="docbook-epub.css"/>
  6. <link rel="stylesheet" type="text/css" href="kawa.css"/>
  7. <script src="kawa-ebook.js" type="text/javascript"/>
  8. <meta name="generator" content="DocBook XSL-NS Stylesheets V1.79.1"/>
  9. <link rel="prev" href="Hash-tables.xhtml" title="Hash tables"/>
  10. <link rel="next" href="Locations.xhtml" title="Locations"/>
  11. </head>
  12. <body>
  13. <header/>
  14. <section class="chapter" title="Eval and Environments" epub:type="chapter" id="Eval-and-Environments">
  15. <div class="titlepage">
  16. <div>
  17. <div>
  18. <h2 class="title">Eval and Environments</h2>
  19. </div>
  20. </div>
  21. </div>
  22. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873198800" class="indexterm"/> <code class="function">environment</code> <em class="replaceable"><code>list</code></em><em class="replaceable"><code><sup>*</sup></code></em></p>
  23. <div class="blockquote">
  24. <blockquote class="blockquote">
  25. <p>This procedure returns a specifier for the environment that
  26. results by starting with an empty environment and then
  27. importing each <em class="replaceable"><code>list</code></em>, considered as an <a class="link" href="Importing.xhtml#meta-import-set"><em class="replaceable"><code>import-set</code></em></a>, into it.
  28. The bindings of the environment represented by the specifier
  29. are immutable, as is the environment itself.
  30. See the <code class="literal">eval</code> function for examples.
  31. </p>
  32. </blockquote>
  33. </div>
  34. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873193056" class="indexterm"/> <code class="function">null-environment</code> <em class="replaceable"><code>version</code></em></p>
  35. <div class="blockquote">
  36. <blockquote class="blockquote">
  37. <p>This procedure returns an environment that contains no variable bindings,
  38. but contains (syntactic) bindings for all the syntactic keywords.
  39. </p>
  40. <p>The effect of assigning to a variable in this environment (such
  41. as <code class="literal">let</code>) is undefined.
  42. </p>
  43. </blockquote>
  44. </div>
  45. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873188672" class="indexterm"/> <code class="function">scheme-report-environment</code> <em class="replaceable"><code>version</code></em></p>
  46. <div class="blockquote">
  47. <blockquote class="blockquote">
  48. <p>The <em class="replaceable"><code>version</code></em> must be an exact non-negative inetger corresponding to
  49. a version of one of the Revised<em class="replaceable"><code>version</code></em> Reports on Scheme.
  50. The procedure returns an environment that contains exactly the set of
  51. bindings specified in the corresponding report.
  52. </p>
  53. <p>This implementation supports <em class="replaceable"><code>version</code></em> that is 4 or 5.
  54. </p>
  55. <p>The effect of assigning to a variable in this environment (such
  56. as <code class="literal">car</code>) is undefined.
  57. </p>
  58. </blockquote>
  59. </div>
  60. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873182416" class="indexterm"/> <code class="function">interaction-environment</code></p>
  61. <div class="blockquote">
  62. <blockquote class="blockquote">
  63. <p>This procedure return an environment that contains implementation-defined
  64. bindings, as well as top-level user bindings.
  65. </p>
  66. </blockquote>
  67. </div>
  68. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873179344" class="indexterm"/> <code class="function">environment-bound?</code> <em class="replaceable"><code>environment</code></em> <em class="replaceable"><code>symbol</code></em></p>
  69. <div class="blockquote">
  70. <blockquote class="blockquote">
  71. <p>Return true <code class="literal">#t</code> if there is a binding for <em class="replaceable"><code>symbol</code></em>
  72. in <em class="replaceable"><code>environment</code></em>; otherwise returns <code class="literal">#f</code>.
  73. </p>
  74. </blockquote>
  75. </div>
  76. <p class="synopsis" kind="Syntax"><span class="kind">Syntax</span><span class="ignore">: </span><a id="idm139667873173840" class="indexterm"/> <code class="function">fluid-let</code> ((<em class="replaceable"><code>variable</code></em> <em class="replaceable"><code>init</code></em>) <em class="replaceable"><code>...</code></em>) <em class="replaceable"><code>body</code></em> <em class="replaceable"><code>...</code></em></p>
  77. <div class="blockquote">
  78. <blockquote class="blockquote">
  79. <p>Evaluate the <em class="replaceable"><code>init</code></em> expressions.
  80. Then modify the dynamic bindings for the <em class="replaceable"><code>variables</code></em> to the
  81. values of the <em class="replaceable"><code>init</code></em> expressions, and evaluate the <em class="replaceable"><code>body</code></em> expressions.
  82. Return the result of the last expression in <em class="replaceable"><code>body</code></em>.
  83. Before returning, restore the original bindings.
  84. The temporary bindings are only visible in the current thread, and its
  85. descendent threads.
  86. </p>
  87. </blockquote>
  88. </div>
  89. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873166400" class="indexterm"/> <code class="function">base-uri</code> [<em class="replaceable"><code>node</code></em>]</p>
  90. <div class="blockquote">
  91. <blockquote class="blockquote">
  92. <p>If <em class="replaceable"><code>node</code></em> is specified, returns the base-URI property
  93. of the <em class="replaceable"><code>node</code></em>. If the <em class="replaceable"><code>node</code></em> does not have the base-URI
  94. property, returns <code class="literal">#f</code>.
  95. (The XQuery version returns the empty sequence in that case.)
  96. </p>
  97. <p>In the zero-argument case, returns the "base URI" of the current context.
  98. By default the base URI is the current working directory (as a URL).
  99. While a source file is <code class="literal">load</code>ed, the base URI is temporarily
  100. set to the URL of the document.
  101. </p>
  102. </blockquote>
  103. </div>
  104. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873159760" class="indexterm"/> <code class="function">eval</code> <em class="replaceable"><code>expression</code></em> [<em class="replaceable"><code>environment</code></em>]</p>
  105. <div class="blockquote">
  106. <blockquote class="blockquote">
  107. <p>This procedure evaluates <em class="replaceable"><code>expression</code></em> in the environment indicated
  108. by <em class="replaceable"><code>environment</code></em>.
  109. The default for <em class="replaceable"><code>environment</code></em> is the result
  110. of <code class="literal">(interaction-environment)</code>.
  111. </p>
  112. <pre class="screen">(eval ’(* 7 3) (environment '(scheme base)))
  113. ⇒ 21
  114. (let ((f (eval '(lambda (f x) (f x x))
  115. (null-environment 5))))
  116. (f + 10))
  117. ⇒ 20
  118. (eval '(define foo 32) (environment '(scheme base)))
  119. ⇒ <span class="emphasis"><em>error is signaled</em></span>
  120. </pre>
  121. </blockquote>
  122. </div>
  123. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873152768" class="indexterm"/> <code class="function">load</code> <em class="replaceable"><code>path</code></em> [<em class="replaceable"><code>environment</code></em>]</p>
  124. <p class="synopsis" kind="Procedure"><span class="kind">Procedure</span><span class="ignore">: </span><a id="idm139667873149392" class="indexterm"/> <code class="function">load-relative</code> <em class="replaceable"><code>path</code></em> [<em class="replaceable"><code>environment</code></em>]</p>
  125. <div class="blockquote">
  126. <blockquote class="blockquote">
  127. <p>The <em class="replaceable"><code>path</code></em> can be an (absolute) URL or a filename
  128. of a source file, which is read and evaluated line-by-line.
  129. The <em class="replaceable"><code>path</code></em> can also be a fully-qualified class name.
  130. (Mostly acts like the <code class="literal">-f</code> command-line option,
  131. but with different error handling.)
  132. Since <code class="literal">load</code> is a run-time function it doesn’t know
  133. about the enclosing lexical environment, and the latter
  134. can’t know about definitions introduced by <code class="literal">load</code>.
  135. For those reasons it is highly recommended that you use instead use
  136. <code class="literal"><a class="link" href="Importing.xhtml#require">require</a></code> or <code class="literal"><a class="link" href="Syntax-and-conditional-compilation.xhtml#include">include</a></code>.
  137. </p>
  138. <p>Evaluation is done in the specified <em class="replaceable"><code>environment</code></em>,
  139. which defauls to result of <code class="literal">(interaction-environment)</code>.
  140. </p>
  141. <p>The <code class="literal">load-relative</code> procedure is like <code class="literal">load</code>,
  142. except that <em class="replaceable"><code>path</code></em> is a
  143. URI that is relative to the context’s current base URI.
  144. </p>
  145. </blockquote>
  146. </div>
  147. </section>
  148. <footer>
  149. <div class="navfooter">
  150. <ul>
  151. <li>
  152. <b class="toc">
  153. <a href="Locations.xhtml">Locations</a>
  154. </b>
  155. </li>
  156. <li>
  157. <b class="toc">
  158. <a href="Parameter-objects.xhtml">Parameter objects</a>
  159. </b>
  160. </li>
  161. </ul>
  162. <p>
  163. Up: <a accesskey="u" href="pt01.xhtml">Part . Reference Documentation</a></p>
  164. <p>
  165. Previous: <a accesskey="p" href="Data-structures.xhtml">Data structures</a></p>
  166. <p>
  167. Next: <a accesskey="n" href="Debugging.xhtml">Debugging</a></p>
  168. </div>
  169. </footer>
  170. </body>
  171. </html>