This file is indexed.

/usr/share/doc/racket/reference/compoundunits.html is in racket-doc 6.1-4.

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
<!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>7.3&nbsp;Linking Units and Creating Compound Units</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="extras.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="../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="../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;);">&#9658;</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x"><span style="font-weight: bold">The Racket Reference</span></a></td></tr></table></div><div class="tocviewsublisttop" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="model.html" class="tocviewlink" data-pltdoc="x">Language Model</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="notation.html" class="tocviewlink" data-pltdoc="x">Notation for Documentation</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="syntax.html" class="tocviewlink" data-pltdoc="x">Syntactic Forms</a></td></tr><tr><td align="right">4&nbsp;</td><td><a href="data.html" class="tocviewlink" data-pltdoc="x">Datatypes</a></td></tr><tr><td align="right">5&nbsp;</td><td><a href="structures.html" class="tocviewlink" data-pltdoc="x">Structures</a></td></tr><tr><td align="right">6&nbsp;</td><td><a href="mzlib_class.html" class="tocviewlink" data-pltdoc="x">Classes and Objects</a></td></tr><tr><td align="right">7&nbsp;</td><td><a href="mzlib_unit.html" class="tocviewselflink" data-pltdoc="x">Units</a></td></tr><tr><td align="right">8&nbsp;</td><td><a href="contracts.html" class="tocviewlink" data-pltdoc="x">Contracts</a></td></tr><tr><td align="right">9&nbsp;</td><td><a href="match.html" class="tocviewlink" data-pltdoc="x">Pattern Matching</a></td></tr><tr><td align="right">10&nbsp;</td><td><a href="control.html" class="tocviewlink" data-pltdoc="x">Control Flow</a></td></tr><tr><td align="right">11&nbsp;</td><td><a href="concurrency.html" class="tocviewlink" data-pltdoc="x">Concurrency and Parallelism</a></td></tr><tr><td align="right">12&nbsp;</td><td><a href="Macros.html" class="tocviewlink" data-pltdoc="x">Macros</a></td></tr><tr><td align="right">13&nbsp;</td><td><a href="input-and-output.html" class="tocviewlink" data-pltdoc="x">Input and Output</a></td></tr><tr><td align="right">14&nbsp;</td><td><a href="security.html" class="tocviewlink" data-pltdoc="x">Reflection and Security</a></td></tr><tr><td align="right">15&nbsp;</td><td><a href="os.html" class="tocviewlink" data-pltdoc="x">Operating System</a></td></tr><tr><td align="right">16&nbsp;</td><td><a href="memory.html" class="tocviewlink" data-pltdoc="x">Memory Management</a></td></tr><tr><td align="right">17&nbsp;</td><td><a href="unsafe.html" class="tocviewlink" data-pltdoc="x">Unsafe Operations</a></td></tr><tr><td align="right">18&nbsp;</td><td><a href="running.html" class="tocviewlink" data-pltdoc="x">Running Racket</a></td></tr><tr><td align="right"></td><td><a href="doc-bibliography.html" class="tocviewlink" data-pltdoc="x">Bibliography</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;);">&#9660;</a></td><td>7&nbsp;</td><td><a href="mzlib_unit.html" class="tocviewlink" data-pltdoc="x">Units</a></td></tr></table><div class="tocviewsublistbottom" style="display: block;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">7.1&nbsp;</td><td><a href="creatingunits.html" class="tocviewlink" data-pltdoc="x">Creating Units</a></td></tr><tr><td align="right">7.2&nbsp;</td><td><a href="invokingunits.html" class="tocviewlink" data-pltdoc="x">Invoking Units</a></td></tr><tr><td align="right">7.3&nbsp;</td><td><a href="" class="tocviewselflink" data-pltdoc="x">Linking Units and Creating Compound Units</a></td></tr><tr><td align="right">7.4&nbsp;</td><td><a href="linkinference.html" class="tocviewlink" data-pltdoc="x">Inferred Linking</a></td></tr><tr><td align="right">7.5&nbsp;</td><td><a href="Generating_A_Unit_from_Context.html" class="tocviewlink" data-pltdoc="x">Generating A Unit from Context</a></td></tr><tr><td align="right">7.6&nbsp;</td><td><a href="Structural_Matching.html" class="tocviewlink" data-pltdoc="x">Structural Matching</a></td></tr><tr><td align="right">7.7&nbsp;</td><td><a href="define-sig-form.html" class="tocviewlink" data-pltdoc="x">Extending the Syntax of Signatures</a></td></tr><tr><td align="right">7.8&nbsp;</td><td><a href="Unit_Utilities.html" class="tocviewlink" data-pltdoc="x">Unit Utilities</a></td></tr><tr><td align="right">7.9&nbsp;</td><td><a href="unitcontracts.html" class="tocviewlink" data-pltdoc="x">Unit Contracts</a></td></tr><tr><td align="right">7.10&nbsp;</td><td><a href="single-unit.html" class="tocviewlink" data-pltdoc="x">Single-<wbr></wbr>Unit Modules</a></td></tr><tr><td align="right">7.11&nbsp;</td><td><a href="Single-Signature_Modules.html" class="tocviewlink" data-pltdoc="x">Single-<wbr></wbr>Signature Modules</a></td></tr><tr><td align="right">7.12&nbsp;</td><td><a href="Transformer_Helpers.html" class="tocviewlink" data-pltdoc="x">Transformer Helpers</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._compound-unit%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">compound-<wbr></wbr>unit</span></span></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.1&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.1&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="invokingunits.html" title="backward to &quot;7.2 Invoking Units&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="mzlib_unit.html" title="up to &quot;7 Units&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="linkinference.html" title="forward to &quot;7.4 Inferred Linking&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div><h4 x-source-module="(lib &quot;scribblings/reference/reference.scrbl&quot;)" x-part-tag="&quot;compoundunits&quot;">7.3<tt>&nbsp;</tt><a name="(part._compoundunits)"></a>Linking Units and Creating Compound Units</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><table cellspacing="0" cellpadding="0" class="RktBlk RForeground"><tr><td><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._compound-unit))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._compound-unit%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">compound-unit</a></span></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="RktStxLink" data-pltdoc="x">import</a></span><span class="hspace">&nbsp;</span><span class="RktVar">link-binding</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._export%29%29" class="RktStxLink" data-pltdoc="x">export</a></span><span class="hspace">&nbsp;</span><span class="RktVar">tagged-link-id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span><span class="hspace">&nbsp;</span><span class="RktVar">linkage-decl</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></td></tr><tr><td><span class="stt">&nbsp;</span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="specgrammar"><tr><td align="right" valign="baseline"><span class="RktVar">link-binding</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktVar">link-id</span><span class="hspace">&nbsp;</span><span class="RktSym">:</span><span class="hspace">&nbsp;</span><span class="RktVar">tagged-sig-id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="center" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">tagged-link-id</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._tag%29%29" class="RktStxLink" data-pltdoc="x">tag</a></span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">link-id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="RktVar">link-id</span></td></tr><tr><td align="right" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="center" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">linkage-decl</span></td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktPn">(</span><span class="RktVar">link-binding</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVar">unit-expr</span><span class="hspace">&nbsp;</span><span class="RktVar">tagged-link-id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Links several units into one new compound unit without immediately
invoking any of the linked units.  The <span class="RktVar">unit-expr</span>s in the
<span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> clause determine the units to be linked in creating the
compound unit. The <span class="RktVar">unit-expr</span>s are evaluated when the
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._compound-unit%29%29" class="RktStxLink" data-pltdoc="x">compound-unit</a></span> form is evaluated.</div></p><p>The <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="RktStxLink" data-pltdoc="x">import</a></span> clause determines the imports of the compound
unit. Outside the compound unit, these imports behave as for a plain
unit; inside the compound unit, they are propagated to some of the
linked units. The <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._export%29%29" class="RktStxLink" data-pltdoc="x">export</a></span> clause determines the exports of the
compound unit.  Again, outside the compound unit, these exports are
treated the same as for a plain unit; inside the compound unit, they
are drawn from the exports of the linked units. Finally, the left-hand
and right-hand parts of each declaration in the <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> clause
specify how the compound unit&rsquo;s imports and exports are propagated to
the linked units.</p><p>Individual elements of an imported or exported signature are not
available within the compound unit. Instead, imports and exports are
connected at the level of whole signatures. Each specific import or
export (i.e., an instance of some signature, possibly tagged) is given
a <span class="RktVar">link-id</span> name. Specifically, a <span class="RktVar">link-id</span> is bound by
the <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="RktStxLink" data-pltdoc="x">import</a></span> clause or the left-hand part of a declaration in
the <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> clause. A bound <span class="RktVar">link-id</span> is referenced in
the right-hand part of a declaration in the <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> clause or by
the <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._export%29%29" class="RktStxLink" data-pltdoc="x">export</a></span> clause.</p><p>The left-hand side of a <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> declaration gives names to each
expected export of the unit produced by the corresponding
<span class="RktVar">unit-expr</span>. The actual unit may export additional signatures,
and it may export an extension of a specific signature instead of just
the specified one. If the unit does not export one of the specified
signatures (with the specified tag, if any), the
<span class="RktSym"><a href="exns.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._exn~3afail~3acontract%29%29" class="RktValLink" data-pltdoc="x">exn:fail:contract</a></span> exception is raised when the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._compound-unit%29%29" class="RktStxLink" data-pltdoc="x">compound-unit</a></span> form is
evaluated.</p><p>The right-hand side of a <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> declaration specifies the
imports to be supplied to the unit produced by the corresponding
<span class="RktVar">unit-expr</span>. The actual unit may import fewer signatures, and
it may import a signature that is extended by the specified one.  If
the unit imports a signature (with a particular tag) that is not
included in the supplied imports, the <span class="RktSym"><a href="exns.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._exn~3afail~3acontract%29%29" class="RktValLink" data-pltdoc="x">exn:fail:contract</a></span> exception is raised
when the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._compound-unit%29%29" class="RktStxLink" data-pltdoc="x">compound-unit</a></span> form is evaluated. Each
<span class="RktVar">link-id</span> supplied as an import must be bound either in the
<span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="RktStxLink" data-pltdoc="x">import</a></span> clause or in some declaration within the <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span>
clause.</p><p>The order of declarations in the <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> clause determines the
order of invocation of the linked units. When the compound unit is
invoked, the unit produced by the first <span class="RktVar">unit-expr</span> is invoked
first, then the second, and so on. If the order specified in the
<span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxLink" data-pltdoc="x">link</a></span> clause is inconsistent with <span class="RktSym"><a href="creatingunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._init-depend%29%29" class="RktStxLink" data-pltdoc="x">init-depend</a></span>
declarations of the actual units, then the
<span class="RktSym"><a href="exns.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._exn~3afail~3acontract%29%29" class="RktValLink" data-pltdoc="x">exn:fail:contract</a></span> exception is raised when the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._compound-unit%29%29" class="RktStxLink" data-pltdoc="x">compound-unit</a></span> form is
evaluated.</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.1&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.1&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="invokingunits.html" title="backward to &quot;7.2 Invoking Units&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="mzlib_unit.html" title="up to &quot;7 Units&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="linkinference.html" title="forward to &quot;7.4 Inferred Linking&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div></div></div><div id="contextindicator">&nbsp;</div></body></html>