This file is indexed.

/usr/share/doc/racket/reference/creatingunits.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
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
<!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.1&nbsp;Creating 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="" class="tocviewselflink" 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="compoundunits.html" class="tocviewlink" 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._unit%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">unit</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">define-<wbr></wbr>signature</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._open%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">open</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-values-for-export%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">define-<wbr></wbr>values-<wbr></wbr>for-<wbr></wbr>export</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._contracted%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">contracted</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._only%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">only</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._except%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">except</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._rename%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">rename</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._prefix%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">prefix</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">import</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._export%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">export</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">link</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._tag%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">tag</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._init-depend%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">init-<wbr></wbr>depend</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._extends%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">extends</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="mzlib_unit.html" title="backward to &quot;7 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="invokingunits.html" title="forward to &quot;7.2 Invoking Units&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;creatingunits&quot;">7.1<tt>&nbsp;</tt><a name="(part._creatingunits)"></a>Creating 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)._unit))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">unit</a></span></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%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">tagged-sig-spec</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="#%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-sig-spec</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="RktVar">init-depends-decl</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">unit-body-expr-or-defn</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktMeta">...</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">tagged-sig-spec</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">sig-spec</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="RktPn">(</span><span class="RktSym"><a href="#%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">sig-spec</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">sig-spec</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">sig-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">|</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="#%28form._%28%28lib._racket%2Funit..rkt%29._prefix%29%29" class="RktStxLink" data-pltdoc="x">prefix</a></span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</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="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._rename%29%29" class="RktStxLink" data-pltdoc="x">rename</a></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</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="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._only%29%29" class="RktStxLink" data-pltdoc="x">only</a></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</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="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._except%29%29" class="RktStxLink" data-pltdoc="x">except</a></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</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">init-depends-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"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td></td></tr></table></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="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._init-depend%29%29" class="RktStxLink" data-pltdoc="x">init-depend</a></span><span class="hspace">&nbsp;</span><span class="RktVar">tagged-sig-id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</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-sig-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="RktVar">sig-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">|</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="#%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">sig-id</span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Produces a unit that encapsulates its
<span class="RktVar">unit-body-expr-or-defn</span>s. Expressions in the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>
body can refer to identifiers bound by the <span class="RktVar">sig-spec</span>s of the
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="RktStxLink" data-pltdoc="x">import</a></span> clause, and the body must include one definition for
each identifier of a <span class="RktVar">sig-spec</span> in the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._export%29%29" class="RktStxLink" data-pltdoc="x">export</a></span> clause.
An identifier that is exported cannot be <span class="RktSym"><a href="set_.html#%28form._%28%28quote._~23~25kernel%29._set%21%29%29" class="RktStxLink" data-pltdoc="x">set!</a></span>ed in either the
defining unit or in importing units, although the implicit assignment
to initialize the variable may be visible as a mutation.</div></p><p>Each import or export <span class="RktVar">sig-spec</span> ultimately refers to a
<span class="RktVar">sig-id</span>, which is an identifier that is bound to a signature
by <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxLink" data-pltdoc="x">define-signature</a></span>.</p><p>In a specific import or export position, the set of identifiers bound
or required by a particular <span class="RktVar">sig-id</span> can be adjusted in a few
ways:</p><ul><li><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._prefix%29%29" class="RktStxLink" data-pltdoc="x">prefix</a></span><span class="stt"> </span><span class="RktVar">id</span><span class="stt"> </span><span class="RktVar">sig-spec</span><span class="RktPn">)</span> as an import binds the same as
<span class="RktVar">sig-spec</span>, except that each binding is prefixed with <span class="RktVar">id</span>.
As an export, this form causes definitions using the <span class="RktVar">id</span>
prefix to satisfy the exports required by <span class="RktVar">sig-spec</span>.</p></li><li><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._rename%29%29" class="RktStxLink" data-pltdoc="x">rename</a></span><span class="stt"> </span><span class="RktVar">sig-spec</span><span class="stt"> </span><span class="RktPn">(</span><span class="RktVar">id</span><span class="stt"> </span><span class="RktVar">id</span><span class="RktPn">)</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span> as an import binds the
same as <span class="RktVar">sig-spec</span>, except that the first <span class="RktVar">id</span> is used
for the binding instead of the second <span class="RktVar">id</span> (where
<span class="RktVar">sig-spec</span> by itself must imply a binding that is
<span class="RktSym"><a href="stxcmp.html#%28def._%28%28quote._~23~25kernel%29._bound-identifier~3d~3f%29%29" class="RktValLink" data-pltdoc="x">bound-identifier=?</a></span> to second <span class="RktVar">id</span>).  As an export,
this form causes a definition for the first <span class="RktVar">id</span> to satisfy
the export named by the second <span class="RktVar">id</span> in <span class="RktVar">sig-spec</span>.</p></li><li><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._only%29%29" class="RktStxLink" data-pltdoc="x">only</a></span><span class="stt"> </span><span class="RktVar">sig-spec</span><span class="stt"> </span><span class="RktVar">id</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span> as an import binds the same as
<span class="RktVar">sig-spec</span>, but restricted to just the listed <span class="RktVar">id</span>s
(where <span class="RktVar">sig-spec</span> by itself must imply a binding that is
<span class="RktSym"><a href="stxcmp.html#%28def._%28%28quote._~23~25kernel%29._bound-identifier~3d~3f%29%29" class="RktValLink" data-pltdoc="x">bound-identifier=?</a></span> to each <span class="RktVar">id</span>).  This form is not
allowed for an export.</p></li><li><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._except%29%29" class="RktStxLink" data-pltdoc="x">except</a></span><span class="stt"> </span><span class="RktVar">sig-spec</span><span class="stt"> </span><span class="RktVar">id</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span> as an import binds the same
as <span class="RktVar">sig-spec</span>, but excluding all listed <span class="RktVar">id</span>s (where
<span class="RktVar">sig-spec</span> by itself must imply a binding that is
<span class="RktSym"><a href="stxcmp.html#%28def._%28%28quote._~23~25kernel%29._bound-identifier~3d~3f%29%29" class="RktValLink" data-pltdoc="x">bound-identifier=?</a></span> to each <span class="RktVar">id</span>).  This form is not
allowed for an export.</p></li></ul><p>As suggested by the grammar, these adjustments to a signature can be
nested arbitrarily.</p><p>A unit&rsquo;s declared imports are matched with actual supplied imports by
signature. That is, the order in which imports are supplied to a unit
when linking is irrelevant; all that matters is the signature
implemented by each supplied import. One actual import must be
provided for each declared import. Similarly, when a unit implements
multiple signatures, the order of the export signatures does not
matter.</p><p>To support multiple imports or exports for the same signature, an
import or export can be tagged using the form <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._tag%29%29" class="RktStxLink" data-pltdoc="x">tag</a></span><span class="stt"> </span><span class="RktVar">id</span><span class="stt"> </span><span class="RktVar">sig-spec</span><span class="RktPn">)</span>. When an import declaration of a unit is
tagged, then one actual import must be given the same tag (with the
same signature) when the unit is linked. Similarly, when an export
declaration is tagged for a unit, then references to that particular
export must explicitly use the tag.</p><p>A unit is prohibited syntactically from importing two signatures that
are not distinct, unless they have different tags; two signatures are
<span style="font-style: italic">distinct</span> only if they share no ancestor through
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._extends%29%29" class="RktStxLink" data-pltdoc="x">extends</a></span>. The same syntactic constraint applies to exported
signatures. In addition, a unit is prohibited syntactically from
importing the same identifier twice (after renaming and other
transformations on a <span class="RktVar">sig-spec</span>), exporting the same identifier
twice (again, after renaming), or exporting an identifier that is
imported.</p><p>When units are linked, the bodies of the linked units are
executed in an order that is specified at the linking site. An
optional <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._init-depend%29%29" class="RktStxLink" data-pltdoc="x">init-depend</a></span><span class="stt"> </span><span class="RktVar">tagged-sig-id</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span>
declaration constrains the allowed orders of linking by specifying
that the current unit must be initialized after the unit that supplies
the corresponding import. Each <span class="RktVar">tagged-sig-id</span> in an
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._init-depend%29%29" class="RktStxLink" data-pltdoc="x">init-depend</a></span> declaration must have a corresponding import in the
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="RktStxLink" data-pltdoc="x">import</a></span> clause.</p><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)._define-signature))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">define-signature</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">extension-decl</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktVar">sig-elem</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">extension-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"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td></td></tr></table></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="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._extends%29%29" class="RktStxLink" data-pltdoc="x">extends</a></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-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">sig-elem</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">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">|</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="define.html#%28form._%28%28quote._~23~25kernel%29._define-syntaxes%29%29" class="RktStxLink" data-pltdoc="x">define-syntaxes</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVar">expr</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="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28quote._~23~25kernel%29._define-values%29%29" class="RktStxLink" data-pltdoc="x">define-values</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVar">expr</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="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-values-for-export%29%29" class="RktStxLink" data-pltdoc="x">define-values-for-export</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVar">expr</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="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._contracted%29%29" class="RktStxLink" data-pltdoc="x">contracted</a></span><span class="hspace">&nbsp;</span><span class="RktPn">[</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">contract</span><span class="RktPn">]</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</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="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._open%29%29" class="RktStxLink" data-pltdoc="x">open</a></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</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="RktPn">(</span><span class="RktSym"><a href="define-struct.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct%29%29" class="RktStxLink" data-pltdoc="x">struct</a></span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktVar">field</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVar">struct-option</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</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="RktPn">(</span><span class="RktVar">sig-form-id</span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktVar">datum</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">field</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">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">|</td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="RktPn">[</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktPn">#:mutable</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">struct-option</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">#:mutable</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="RktPn">#:constructor-name</span><span class="hspace">&nbsp;</span><span class="RktVar">constructor-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">|</td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="RktPn">#:extra-constructor-name</span><span class="hspace">&nbsp;</span><span class="RktVar">constructor-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">|</td><td align="left" valign="baseline"><span class="stt">&nbsp;</span></td><td align="left" valign="baseline"><span class="RktPn">#:omit-constructor</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="RktPn">#:omit-define-syntaxes</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="RktPn">#:omit-define-values</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Binds an identifier to a signature that specifies a group
of bindings for import or export:</div></p><ul><li><p>Each <span class="RktVar">id</span> in a signature declaration means that a unit
implementing the signature must supply a variable definition for the
<span class="RktVar">id</span>. That is, <span class="RktVar">id</span> is available for use in units
importing the signature, and <span class="RktVar">id</span> must be defined by units
exporting the signature.</p></li><li><p>Each <span class="RktSym"><a href="define.html#%28form._%28%28quote._~23~25kernel%29._define-syntaxes%29%29" class="RktStxLink" data-pltdoc="x">define-syntaxes</a></span> form in a signature declaration
introduces a macro that is available for use in any unit that
imports the signature.  Free variables in the definition&rsquo;s
<span class="RktVar">expr</span> refer to other identifiers in the signature first, or
the context of the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxLink" data-pltdoc="x">define-signature</a></span> form if the signature
does not include the identifier.</p></li><li><p>Each <span class="RktSym"><a href="define.html#%28form._%28%28quote._~23~25kernel%29._define-values%29%29" class="RktStxLink" data-pltdoc="x">define-values</a></span> form in a signature declaration
introduces code that effectively prefixes every unit that imports the
signature.  Free variables in the definition&rsquo;s <span class="RktVar">expr</span> are
treated the same as for <span class="RktSym"><a href="define.html#%28form._%28%28quote._~23~25kernel%29._define-syntaxes%29%29" class="RktStxLink" data-pltdoc="x">define-syntaxes</a></span>.</p></li><li><p>Each <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-values-for-export%29%29" class="RktStxLink" data-pltdoc="x">define-values-for-export</a></span> form in a signature
declaration introduces code that effectively suffixes every unit that
exports the signature.  Free variables in the definition&rsquo;s
<span class="RktVar">expr</span> are treated the same as for <span class="RktSym"><a href="define.html#%28form._%28%28quote._~23~25kernel%29._define-syntaxes%29%29" class="RktStxLink" data-pltdoc="x">define-syntaxes</a></span>.</p></li><li><p>Each <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._contracted%29%29" class="RktStxLink" data-pltdoc="x">contracted</a></span> form in a signature declaration means
that a unit exporting the signature must supply a variable definition
for each <span class="RktVar">id</span> in that form.  If the signature is imported, then
uses of <span class="RktVar">id</span> inside the unit are protected by the appropriate
contracts using the unit as the negative blame.  If the signature is
exported, then the exported values are protected by the appropriate
contracts which use the unit as the positive blame, but internal uses
of the exported identifiers are not protected.  Variables in the
<span class="RktVar">contract</span> expressions are treated the same as for
<span class="RktSym"><a href="define.html#%28form._%28%28quote._~23~25kernel%29._define-syntaxes%29%29" class="RktStxLink" data-pltdoc="x">define-syntaxes</a></span>.</p></li><li><p>Each <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._open%29%29" class="RktStxLink" data-pltdoc="x">open</a></span><span class="stt"> </span><span class="RktVar">sig-spec</span><span class="RktPn">)</span> adds to the signature everything
specified by <span class="RktVar">sig-spec</span>.</p></li><li><p>Each <span class="RktPn">(</span><span class="RktSym"><a href="define-struct.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct%29%29" class="RktStxLink" data-pltdoc="x">struct</a></span><span class="stt"> </span><span class="RktVar">id</span><span class="stt"> </span><span class="RktPn">(</span><span class="RktVar">field</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span><span class="stt"> </span><span class="RktVar">struct-option</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span>  adds
all of the identifiers that would be bound by <span class="RktPn">(</span><span class="RktSym"><a href="define-struct.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct%29%29" class="RktStxLink" data-pltdoc="x">struct</a></span><span class="stt"> </span><span class="RktVar">id</span><span class="stt"> </span><span class="RktPn">(</span><span class="RktVar">field</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span><span class="stt"> </span><span class="RktSym">field-option</span><span class="stt"> </span><span class="RktMeta"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._......%29%29" class="RktStxLink" data-pltdoc="x">...</a></span><span class="RktPn">)</span>, where the extra option
<span class="RktPn">#:omit-constructor</span> omits the constructor identifier.</p></li><li><p>Each <span class="RktPn">(</span><span class="RktVar">sig-form-id</span><span class="stt"> </span><span class="RktPn">. </span><span class="RktVar">datum</span><span class="RktPn">)</span> extends the signature in a
way that is defined by <span class="RktVar">sig-form-id</span>, which must be bound by
<span class="RktSym"><a href="define-sig-form.html#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature-form%29%29" class="RktStxLink" data-pltdoc="x">define-signature-form</a></span>.  One such binding is for
<span class="RktSym"><a href="define-sig-form.html#%28form._%28%28lib._racket%2Funit..rkt%29._struct%2Fctc%29%29" class="RktStxLink" data-pltdoc="x">struct/ctc</a></span>.</p></li></ul><p>When a <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxLink" data-pltdoc="x">define-signature</a></span> form includes an <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._extends%29%29" class="RktStxLink" data-pltdoc="x">extends</a></span>
clause, then the define signature automatically includes everything in
the extended signature. Furthermore, any implementation of the new
signature can be used as an implementation of the extended signature.</p><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._open))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._open%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">open</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktVar">sig-elem</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxLink" data-pltdoc="x">define-signature</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._define-values-for-export))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-values-for-export%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">define-values-for-export</a></span></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVar">expr</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktVar">sig-elem</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxLink" data-pltdoc="x">define-signature</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._contracted))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._contracted%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">contracted</a></span></span><span class="hspace">&nbsp;</span><span class="RktPn">[</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">contract</span><span class="RktPn">]</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktVar">sig-elem</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxLink" data-pltdoc="x">define-signature</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._only))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._only%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">only</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktVar">sig-spec</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._except))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._except%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">except</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktVar">sig-spec</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._rename))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._rename%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">rename</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktVar">sig-spec</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._prefix))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._prefix%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">prefix</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktVar">sig-spec</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._import))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">import</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">tagged-sig-spec</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in certain forms; see, for example, <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._export))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._export%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">export</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">tagged-sig-spec</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in certain forms; see, for example, <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._link))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._link%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">link</a></span></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></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in certain forms; see, for example, <span class="RktSym"><a href="compoundunits.html#%28form._%28%28lib._racket%2Funit..rkt%29._compound-unit%29%29" class="RktStxLink" data-pltdoc="x">compound-unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._tag))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._tag%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">tag</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">sig-spec</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._tag%29%29" class="RktStxDef 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">sig-id</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in certain forms; see, for example, <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div><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><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racket/unit..rkt)._init-depend))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._init-depend%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">init-depend</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">tagged-sig-id</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only in a <span class="RktSym">init-depend-decl</span>; see <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._unit%29%29" class="RktStxLink" data-pltdoc="x">unit</a></span>.</div></p><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><p class="RForeground"><a name="(form._((lib._racket/unit..rkt)._extends))"></a><span title="Provided from: racket/unit, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._extends%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">extends</a></span></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Allowed only within <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Funit..rkt%29._define-signature%29%29" class="RktStxLink" data-pltdoc="x">define-signature</a></span>.</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.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="mzlib_unit.html" title="backward to &quot;7 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="invokingunits.html" title="forward to &quot;7.2 Invoking Units&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div></div></div><div id="contextindicator">&nbsp;</div></body></html>