This file is indexed.

/usr/share/doc/racket/inside/Evaluation.html is in racket-doc 6.7-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>8&nbsp;Evaluation</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_0&quot;);">&#9660;</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x">Inside:<span class="mywbr"> &nbsp;</span> Racket C API</a></td></tr></table></div><div class="tocviewsublisttop" style="display: block;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="overview.html" class="tocviewlink" data-pltdoc="x">Overview</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="embedding.html" class="tocviewlink" data-pltdoc="x">Embedding into a Program</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="Writing_Racket_Extensions.html" class="tocviewlink" data-pltdoc="x">Writing Racket Extensions</a></td></tr><tr><td align="right">4&nbsp;</td><td><a href="im_values_types.html" class="tocviewlink" data-pltdoc="x">Values and Types</a></td></tr><tr><td align="right">5&nbsp;</td><td><a href="im_memoryalloc.html" class="tocviewlink" data-pltdoc="x">Memory Allocation</a></td></tr><tr><td align="right">6&nbsp;</td><td><a href="im_env.html" class="tocviewlink" data-pltdoc="x">Namespaces and Modules</a></td></tr><tr><td align="right">7&nbsp;</td><td><a href="Procedures.html" class="tocviewlink" data-pltdoc="x">Procedures</a></td></tr><tr><td align="right">8&nbsp;</td><td><a href="" class="tocviewselflink" data-pltdoc="x">Evaluation</a></td></tr><tr><td align="right">9&nbsp;</td><td><a href="exceptions.html" class="tocviewlink" data-pltdoc="x">Exceptions and Escape Continuations</a></td></tr><tr><td align="right">10&nbsp;</td><td><a href="threads.html" class="tocviewlink" data-pltdoc="x">Threads</a></td></tr><tr><td align="right">11&nbsp;</td><td><a href="config.html" class="tocviewlink" data-pltdoc="x">Parameterizations</a></td></tr><tr><td align="right">12&nbsp;</td><td><a href="contmarks.html" class="tocviewlink" data-pltdoc="x">Continuation Marks</a></td></tr><tr><td align="right">13&nbsp;</td><td><a href="im_encodings.html" class="tocviewlink" data-pltdoc="x">String Encodings</a></td></tr><tr><td align="right">14&nbsp;</td><td><a href="Bignums__Rationals__and_Complex_Numbers.html" class="tocviewlink" data-pltdoc="x">Bignums, Rationals, and Complex Numbers</a></td></tr><tr><td align="right">15&nbsp;</td><td><a href="Ports_and_the_Filesystem.html" class="tocviewlink" data-pltdoc="x">Ports and the Filesystem</a></td></tr><tr><td align="right">16&nbsp;</td><td><a href="Structures.html" class="tocviewlink" data-pltdoc="x">Structures</a></td></tr><tr><td align="right">17&nbsp;</td><td><a href="security.html" class="tocviewlink" data-pltdoc="x">Security Guards</a></td></tr><tr><td align="right">18&nbsp;</td><td><a href="Custodians.html" class="tocviewlink" data-pltdoc="x">Custodians</a></td></tr><tr><td align="right">19&nbsp;</td><td><a href="Subprocesses.html" class="tocviewlink" data-pltdoc="x">Subprocesses</a></td></tr><tr><td align="right">20&nbsp;</td><td><a href="Miscellaneous_Utilities.html" class="tocviewlink" data-pltdoc="x">Miscellaneous Utilities</a></td></tr><tr><td align="right"></td><td><a href="doc-index.html" class="tocviewlink" data-pltdoc="x">Index</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_1&quot;);">&#9658;</a></td><td>8&nbsp;</td><td><a href="" class="tocviewselflink" data-pltdoc="x">Evaluation</a></td></tr></table><div class="tocviewsublistbottom" style="display: none;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">8.1&nbsp;</td><td><a href="#%28part._topleveleval%29" class="tocviewlink" data-pltdoc="x">Top-<wbr></wbr>level Evaluation Functions</a></td></tr><tr><td align="right">8.2&nbsp;</td><td><a href="#%28part._.Tail_.Evaluation%29" class="tocviewlink" data-pltdoc="x">Tail Evaluation</a></td></tr><tr><td align="right">8.3&nbsp;</td><td><a href="#%28part._multiple%29" class="tocviewlink" data-pltdoc="x">Multiple Values</a></td></tr><tr><td align="right">8.4&nbsp;</td><td><a href="#%28part._.Evaluation_.Functions%29" class="tocviewlink" data-pltdoc="x">Evaluation Functions</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber">8.1<tt>&nbsp;</tt></span><a href="#%28part._topleveleval%29" class="tocsubseclink" data-pltdoc="x">Top-<wbr></wbr>level Evaluation Functions</a></td></tr><tr><td><span class="tocsublinknumber">8.2<tt>&nbsp;</tt></span><a href="#%28part._.Tail_.Evaluation%29" class="tocsubseclink" data-pltdoc="x">Tail Evaluation</a></td></tr><tr><td><span class="tocsublinknumber">8.3<tt>&nbsp;</tt></span><a href="#%28part._multiple%29" class="tocsubseclink" data-pltdoc="x">Multiple Values</a></td></tr><tr><td><span class="tocsublinknumber">8.4<tt>&nbsp;</tt></span><a href="#%28part._.Evaluation_.Functions%29" class="tocsubseclink" data-pltdoc="x">Evaluation Functions</a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="navsettop"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;6.7&quot;, &quot;../&quot;);" onfocus="this.style.color=&quot;black&quot;; this.style.textAlign=&quot;left&quot;; if (this.value == &quot;...search manuals...&quot;) this.value=&quot;&quot;;" onblur="if (this.value.match(/^ *$/)) { this.style.color=&quot;#888&quot;; this.style.textAlign=&quot;center&quot;; this.value=&quot;...search manuals...&quot;; }"/></form>&nbsp;&nbsp;<a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;6.7&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="Procedures.html" title="backward to &quot;7 Procedures&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;Inside: Racket C API&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="exceptions.html" title="forward to &quot;9 Exceptions and Escape Continuations&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div><h3 x-source-module="(lib &quot;scribblings/inside/inside.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;Evaluation&quot;">8<tt>&nbsp;</tt><a name="(part._.Evaluation)"></a>Evaluation</h3><p>A Racket S-expression is evaluated by calling <a href="#%28cpp._scheme_eval%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval</span></a>.
This function takes an S-expression (as a <span class="stt">Scheme_Object*</span>) and a
namespace and returns the value of the expression in that namespace.</p><p>The function <a href="#%28cpp._scheme_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply</span></a> takes a <span class="stt">Scheme_Object*</span> that is
a procedure, the number of arguments to pass to the procedure, and an
array of <span class="stt">Scheme_Object *</span> arguments. The return value is the
result of the application. There is also a function
<a href="#%28cpp._scheme_apply_to_list%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply_to_list</span></a>, which takes a procedure and a list
(constructed with <a href="im_values_types.html#%28cpp._scheme_make_pair%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_make_pair</span></a>) and performs the Racket
<span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&amp;rel=procedures.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._apply%2529%2529&amp;version=6.7" class="RktValLink Sq" data-pltdoc="x">apply</a></span> operation.</p><p>The <a href="#%28cpp._scheme_eval%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval</span></a> function actually calls <a href="#%28cpp._scheme_compile%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_compile</span></a>
followed by <a href="#%28cpp._scheme_eval_compiled%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_compiled</span></a>.</p><h4 x-source-module="(lib &quot;scribblings/inside/inside.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;topleveleval&quot;">8.1<tt>&nbsp;</tt><a name="(part._topleveleval)"></a>Top-level Evaluation Functions</h4><p>The functions <a href="#%28cpp._scheme_eval%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval</span></a>, <a href="#%28cpp._scheme_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply</span></a>, etc., are
<span style="font-style: italic">top-level evaluation functions</span>. Continuation invocations are
confined to jumps within a top-level evaluation (i.e., a continuation
barrier is installed by these functions).</p><p>The functions <a href="#%28cpp.__scheme_eval_compiled%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_eval_compiled</span></a>, <a href="#%28cpp.__scheme_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_apply</span></a>,
etc. (with a leading underscore) provide the same functionality
without starting a new top-level evaluation; these functions should
only be used within new primitive procedures. Since these functions
allow full continuation hops, calls to non-top-level evaluation
functions can return zero or multiple times.</p><p>Currently, escape continuations and primitive error escapes can jump
out of all evaluation and application functions. For more information,
see <a href="exceptions.html" data-pltdoc="x">Exceptions and Escape Continuations</a>.</p><h4 x-source-module="(lib &quot;scribblings/inside/inside.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;Tail_Evaluation&quot;">8.2<tt>&nbsp;</tt><a name="(part._.Tail_.Evaluation)"></a><a name="(idx._(gentag._321._(lib._scribblings/inside/inside..scrbl)))"></a>Tail Evaluation</h4><p>All of Racket&rsquo;s built-in functions and syntax support proper
tail-recursion. When a new primitive procedure or syntax is added to
Racket, special care must be taken to ensure that tail recursion is
handled properly. Specifically, when the final return value of a
function is the result of an application, then
<a href="#%28cpp._scheme_tail_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_tail_apply</span></a> should be used instead of
<a href="#%28cpp._scheme_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply</span></a>.  When <a href="#%28cpp._scheme_tail_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_tail_apply</span></a> is called, it
postpones the procedure application until control returns to the
Racket evaluation loop.</p><p>For example, consider the following implementation of a
<span class="RktSym">thunk-or</span> primitive, which takes any number of thunks and
performs <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._or%2529%2529&amp;version=6.7" class="RktStxLink Sq" data-pltdoc="x">or</a></span> on the results of the thunks, evaluating only as
many thunks as necessary.</p><p><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">static Scheme_Object *</span></p></td></tr><tr><td><p><span class="stt">thunk_or (int argc, Scheme_Object **argv)</span></p></td></tr><tr><td><p><span class="stt">{</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;</span><span class="stt">int i;</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;</span><span class="stt">Scheme_Object *v;</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;</span><span class="stt">if (!argc)</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="stt">return scheme_false;</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;</span><span class="stt">for (i = 0; i &lt; argc - 1; i++)</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="stt">if (SCHEME_FALSEP((v = _scheme_apply(argv[i], 0, NULL))))</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="stt">return v;</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;</span></p></td></tr><tr><td><p><span class="stt"></span><span class="hspace">&nbsp;&nbsp;</span><span class="stt">return scheme_tail_apply(argv[argc - 1], 0, NULL);</span></p></td></tr><tr><td><p><span class="stt">}</span></p></td></tr></table></p><p>This <span class="RktSym">thunk-or</span> properly implements tail-recursion: if the
final thunk is applied, then the result of <span class="RktSym">thunk-or</span> is the
result of that application, so <a href="#%28cpp._scheme_tail_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_tail_apply</span></a> is used for
the final application.</p><h4 x-source-module="(lib &quot;scribblings/inside/inside.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;multiple&quot;">8.3<tt>&nbsp;</tt><a name="(part._multiple)"></a>Multiple Values</h4><p>A primitive procedure can return multiple values by returning the
result of calling <a href="#%28cpp._scheme_values%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_values</span></a>. The functions
<a href="#%28cpp._scheme_eval_compiled_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_compiled_multi</span></a>, <a href="#%28cpp._scheme_apply_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply_multi</span></a>,
<a href="#%28cpp.__scheme_eval_compiled_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_eval_compiled_multi</span></a>, and <a href="#%28cpp.__scheme_apply_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_apply_multi</span></a>
potentially return multiple values; all other evaluation and
applications procedures return a single value or raise an exception.</p><p>Multiple return values are represented by the
<span class="stt">scheme_multiple_values</span> &ldquo;value.&rdquo; This quasi-value has the type
<span class="stt">Scheme_Object*</span>, but it is not a pointer or a fixnum. When the
result of an evaluation or application is
<span class="stt">scheme_multiple_values</span>, the number of actual values can be
obtained as <span class="stt">scheme_multiple_count</span>, and the array of
<span class="stt">Scheme_Object*</span> values as <span class="stt">scheme_multiple_array</span>. (Both of
those identifiers are actually macros.)</p><p>A garbage collection must not occur between the return of a
<span class="stt">scheme_multiple_values</span> &ldquo;value&rdquo; and the receipt of the values
through <span class="stt">scheme_multiple_count</span> <span class="stt">scheme_multiple_array</span>.
Furthermore, if <span class="stt">scheme_multiple_array</span> is to be used across a
potential garbage collection, then it must be specifically received by
calling <a href="#%28cpp._scheme_detach_multiple_array%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_detach_multiple_array</span></a>; otherwise, a garbage
collection or further evaluation may change the content of the array.
Otherwise, if any application or evaluation procedure is called, the
<span class="stt">scheme_multiple_count</span> and <span class="stt">scheme_multiple_array</span> variables
may be modified (but the array previously referenced by
<span class="stt">scheme_multiple_array</span> is never re-used if
<a href="#%28cpp._scheme_detach_multiple_array%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_detach_multiple_array</span></a> is called).</p><p>The <span class="stt">scheme_multiple_count</span> and
<span class="stt">scheme_multiple_array</span> variables only contain meaningful values
when <span class="stt">scheme_multiple_values</span> is returned.</p><h4 x-source-module="(lib &quot;scribblings/inside/inside.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;Evaluation_Functions&quot;">8.4<tt>&nbsp;</tt><a name="(part._.Evaluation_.Functions)"></a>Evaluation Functions</h4><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_eval)"></a><a name="(idx._(gentag._322._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_eval%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">expr</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Evaluates the (uncompiled) S-expression <span style="font-style: italic">expr</span> in the namespace
<span style="font-style: italic">env</span>.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_eval_compiled)"></a><a name="(idx._(gentag._323._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_eval_compiled%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_compiled</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">obj</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Evaluates the compiled expression <span style="font-style: italic">obj</span>, which was previously
returned from <a href="#%28cpp._scheme_compile%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_compile</span></a>, first linking to the namespace <span style="font-style: italic">env</span>.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_eval_compiled_multi)"></a><a name="(idx._(gentag._324._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_eval_compiled_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_compiled_multi</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">obj</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Evaluates the compiled expression <span style="font-style: italic">obj</span>, possibly
returning multiple values (see <a href="#%28part._multiple%29" data-pltdoc="x">Multiple Values</a>).</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp.__scheme_eval_compiled)"></a><a name="(idx._(gentag._325._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp.__scheme_eval_compiled%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_eval_compiled</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">obj</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Non-top-level version of <a href="#%28cpp._scheme_eval_compiled%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_compiled</span></a>. (See <a href="#%28part._topleveleval%29" data-pltdoc="x">Top-level Evaluation Functions</a>.)</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp.__scheme_eval_compiled_multi)"></a><a name="(idx._(gentag._326._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp.__scheme_eval_compiled_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_eval_compiled_multi</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">obj</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Non-top-level version of <a href="#%28cpp._scheme_eval_compiled_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_compiled_multi</span></a>. (See <a href="#%28part._topleveleval%29" data-pltdoc="x">Top-level Evaluation Functions</a>.)</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Env*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_basic_env)"></a><a name="(idx._(gentag._327._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_basic_env%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_basic_env</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Creates the main namespace for an embedded Racket. This procedure
must be called before other Racket library function (except
<span class="stt">scheme_make_param</span>). Extensions to Racket cannot call this
function.</div></p><p>If it is called more than once, this function resets all threads
(replacing the main thread), parameters, ports, namespaces, and
finalizations.</p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_make_namespace)"></a><a name="(idx._(gentag._328._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_make_namespace%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_make_namespace</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">argc</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">argv</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Creates and returns a new namespace. This values can be cast to
<span class="stt">Scheme_Env *</span>. It can also be installed in
a parameterization using <a href="config.html#%28cpp._scheme_set_param%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_set_param</span></a> with
<a href="config.html#%28cpp._.M.Z.C.O.N.F.I.G_.E.N.V%29" class="RktStxLink" data-pltdoc="x"><span class="stt">MZCONFIG_ENV</span></a>.</div></p><p>When Racket is embedded in an application, create the initial
namespace with <a href="#%28cpp._scheme_basic_env%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_basic_env</span></a> before calling this procedure
to create new namespaces.</p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_apply)"></a><a name="(idx._(gentag._329._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">c</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Applies the procedure <span style="font-style: italic">f</span> to the given arguments.</div></p><p>Beware that the procedure can mutate <span style="font-style: italic">args</span> if it is the same as
the result of <a href="Procedures.html#%28cpp._scheme_current_argument_stack%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_current_argument_stack</span></a>.</p><p>If <span style="font-style: italic">c</span> is <span class="stt">0</span>, then <span style="font-style: italic">args</span> can be <span class="stt">NULL</span>.</p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_apply_multi)"></a><a name="(idx._(gentag._330._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_apply_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply_multi</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">c</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Applies the procedure <span style="font-style: italic">f</span> to the given arguments, possibly
returning multiple values (see <a href="#%28part._multiple%29" data-pltdoc="x">Multiple Values</a>).</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp.__scheme_apply)"></a><a name="(idx._(gentag._331._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp.__scheme_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_apply</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">c</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Non-top-level version of <a href="#%28cpp._scheme_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply</span></a>. (See <a href="#%28part._topleveleval%29" data-pltdoc="x">Top-level Evaluation Functions</a>.)</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp.__scheme_apply_multi)"></a><a name="(idx._(gentag._332._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp.__scheme_apply_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">_scheme_apply_multi</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">c</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Non-top-level version of <a href="#%28cpp._scheme_apply_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply_multi</span></a>. (See <a href="#%28part._topleveleval%29" data-pltdoc="x">Top-level Evaluation Functions</a>.)</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_apply_to_list)"></a><a name="(idx._(gentag._333._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_apply_to_list%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_apply_to_list</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Applies the procedure <span style="font-style: italic">f</span> to the list of arguments in <span style="font-style: italic">args</span>.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_eval_string)"></a><a name="(idx._(gentag._334._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_eval_string%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_string</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">char*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">str</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Reads a single S-expression from <span style="font-style: italic">str</span> and evaluates it in the given
namespace; the expression must return a single value, otherwise an
exception is raised. The <span style="font-style: italic">str</span> argument is parsed as a
UTF-8-encoded string of Unicode characters (so plain ASCII is fine).</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_eval_string_multi)"></a><a name="(idx._(gentag._335._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_eval_string_multi%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_string_multi</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">char*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">str</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Like <a href="#%28cpp._scheme_eval_string%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_string</span></a>, but returns
 <span class="stt">scheme_multiple_values</span> when the expression returns multiple
 values.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_eval_string_all)"></a><a name="(idx._(gentag._336._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_eval_string_all%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_string_all</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">char*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">str</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">all</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Like <a href="#%28cpp._scheme_eval_string%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_string</span></a>, but if <span style="font-style: italic">all</span> is not <span class="stt">0</span>, then
 expressions are read and evaluated from <span style="font-style: italic">str</span> until the end of
 the string is reached.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_tail_apply)"></a><a name="(idx._(gentag._337._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_tail_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_tail_apply</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">n</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Applies the procedure as a tail-call. Actually, this function just
registers the given application to be invoked when control returns to
the evaluation loop. (Hence, this function is only useful within a
primitive procedure that is returning to its caller.)</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_tail_apply_no_copy)"></a><a name="(idx._(gentag._338._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_tail_apply_no_copy%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_tail_apply_no_copy</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">n</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Like <a href="#%28cpp._scheme_tail_apply%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_tail_apply</span></a>, but the array <span style="font-style: italic">args</span> is not
copied. Use this only when <span style="font-style: italic">args</span> has infinite extent and will not
be used again, or when <span style="font-style: italic">args</span> will certainly not be used again
until the called procedure has returned.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_tail_apply_to_list)"></a><a name="(idx._(gentag._339._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_tail_apply_to_list%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_tail_apply_to_list</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">f</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">l</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Applies the procedure as a tail-call.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_compile)"></a><a name="(idx._(gentag._340._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_compile%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_compile</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">form</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">writable</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Compiles the S-expression <span style="font-style: italic">form</span> in the given namespace. The
returned value can be used with <a href="#%28cpp._scheme_eval_compiled%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_eval_compiled</span></a> et al.
Provide a non-zero value for <span style="font-style: italic">writable</span> if the resulting compiled
object will be marshalled via <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._write%2529%2529&amp;version=6.7" class="RktValLink Sq" data-pltdoc="x">write</a></span> instead of evaluated.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_expand)"></a><a name="(idx._(gentag._341._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_expand%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_expand</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">form</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Env*</span><span class="hspace">&nbsp;</span><span style="font-style: italic">env</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Expands all macros in the S-expression <span style="font-style: italic">form</span> using the given
namespace.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">Scheme_Object*</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_values)"></a><a name="(idx._(gentag._342._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_values%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_values</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">int</span><span class="hspace">&nbsp;</span><span style="font-style: italic">n</span><span class="stt">,</span></p></td></tr><tr><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Returns the given values together as multiple return values. Unless
<span style="font-style: italic">n</span> is <span class="stt">1</span>, the result will always be
<span class="stt">scheme_multiple_values</span>.</div></p><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="boxed"><tr><td><table cellspacing="0" cellpadding="0"><tr><td><p><span class="stt">void</span></p></td><td><p><span class="hspace">&nbsp;</span></p></td><td><p><a name="(cpp._scheme_detach_multiple_array)"></a><a name="(idx._(gentag._343._(lib._scribblings/inside/inside..scrbl)))"></a><a href="#%28cpp._scheme_detach_multiple_array%29" class="RktStxLink" data-pltdoc="x"><span class="stt">scheme_detach_multiple_array</span></a></p></td><td><p><span class="stt">(</span></p></td><td><p><span class="stt">Scheme_Object**</span><span class="hspace">&nbsp;</span><span style="font-style: italic">args</span><span class="stt">)</span></p></td></tr></table></td></tr></table></div><div class="SIntrapara">Called to receive multiple-value results; see <a href="#%28part._multiple%29" data-pltdoc="x">Multiple Values</a>.</div></p><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;6.7&quot;, &quot;../&quot;);" onfocus="this.style.color=&quot;black&quot;; this.style.textAlign=&quot;left&quot;; if (this.value == &quot;...search manuals...&quot;) this.value=&quot;&quot;;" onblur="if (this.value.match(/^ *$/)) { this.style.color=&quot;#888&quot;; this.style.textAlign=&quot;center&quot;; this.value=&quot;...search manuals...&quot;; }"/></form>&nbsp;&nbsp;<a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;6.7&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="Procedures.html" title="backward to &quot;7 Procedures&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;Inside: Racket C API&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="exceptions.html" title="forward to &quot;9 Exceptions and Escape Continuations&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div></div></div><div id="contextindicator">&nbsp;</div></body></html>