/usr/share/doc/racket/reference/require.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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 | <!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>3.2 Importing and Exporting: require and provide</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="icons.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,"tocview_0");">►</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 </td><td><a href="model.html" class="tocviewlink" data-pltdoc="x">Language Model</a></td></tr><tr><td align="right">2 </td><td><a href="notation.html" class="tocviewlink" data-pltdoc="x">Notation for Documentation</a></td></tr><tr><td align="right">3 </td><td><a href="syntax.html" class="tocviewselflink" data-pltdoc="x">Syntactic Forms</a></td></tr><tr><td align="right">4 </td><td><a href="data.html" class="tocviewlink" data-pltdoc="x">Datatypes</a></td></tr><tr><td align="right">5 </td><td><a href="structures.html" class="tocviewlink" data-pltdoc="x">Structures</a></td></tr><tr><td align="right">6 </td><td><a href="mzlib_class.html" class="tocviewlink" data-pltdoc="x">Classes and Objects</a></td></tr><tr><td align="right">7 </td><td><a href="mzlib_unit.html" class="tocviewlink" data-pltdoc="x">Units</a></td></tr><tr><td align="right">8 </td><td><a href="contracts.html" class="tocviewlink" data-pltdoc="x">Contracts</a></td></tr><tr><td align="right">9 </td><td><a href="match.html" class="tocviewlink" data-pltdoc="x">Pattern Matching</a></td></tr><tr><td align="right">10 </td><td><a href="control.html" class="tocviewlink" data-pltdoc="x">Control Flow</a></td></tr><tr><td align="right">11 </td><td><a href="concurrency.html" class="tocviewlink" data-pltdoc="x">Concurrency and Parallelism</a></td></tr><tr><td align="right">12 </td><td><a href="Macros.html" class="tocviewlink" data-pltdoc="x">Macros</a></td></tr><tr><td align="right">13 </td><td><a href="input-and-output.html" class="tocviewlink" data-pltdoc="x">Input and Output</a></td></tr><tr><td align="right">14 </td><td><a href="security.html" class="tocviewlink" data-pltdoc="x">Reflection and Security</a></td></tr><tr><td align="right">15 </td><td><a href="os.html" class="tocviewlink" data-pltdoc="x">Operating System</a></td></tr><tr><td align="right">16 </td><td><a href="memory.html" class="tocviewlink" data-pltdoc="x">Memory Management</a></td></tr><tr><td align="right">17 </td><td><a href="unsafe.html" class="tocviewlink" data-pltdoc="x">Unsafe Operations</a></td></tr><tr><td align="right">18 </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,"tocview_1");">▼</a></td><td>3 </td><td><a href="syntax.html" class="tocviewlink" data-pltdoc="x">Syntactic Forms</a></td></tr></table><div class="tocviewsublist" style="display: block;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">3.1 </td><td><a href="module.html" class="tocviewlink" data-pltdoc="x">Modules:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">module</span></span>, <span class="RktSym"><span class="RktStxLink">module*</span></span>, ...</a></td></tr><tr><td align="right">3.2 </td><td><a href="" class="tocviewselflink" data-pltdoc="x">Importing and Exporting:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">require</span></span> and <span class="RktSym"><span class="RktStxLink">provide</span></span></a></td></tr><tr><td align="right">3.3 </td><td><a href="quote.html" class="tocviewlink" data-pltdoc="x">Literals:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">quote</span></span> and <span class="RktSym"><span class="RktStxLink">#%datum</span></span></a></td></tr><tr><td align="right">3.4 </td><td><a href="__expression.html" class="tocviewlink" data-pltdoc="x">Expression Wrapper:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">#%expression</span></span></a></td></tr><tr><td align="right">3.5 </td><td><a href="__top.html" class="tocviewlink" data-pltdoc="x">Variable References and <span class="RktSym"><span class="RktStxLink">#%top</span></span></a></td></tr><tr><td align="right">3.6 </td><td><a href="Locations____variable-reference.html" class="tocviewlink" data-pltdoc="x">Locations:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">#%variable-<wbr></wbr>reference</span></span></a></td></tr><tr><td align="right">3.7 </td><td><a href="application.html" class="tocviewlink" data-pltdoc="x">Procedure Applications and <span class="RktSym"><span class="RktStxLink">#%app</span></span></a></td></tr><tr><td align="right">3.8 </td><td><a href="lambda.html" class="tocviewlink" data-pltdoc="x">Procedure Expressions:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">lambda</span></span> and <span class="RktSym"><span class="RktStxLink">case-<wbr></wbr>lambda</span></span></a></td></tr><tr><td align="right">3.9 </td><td><a href="let.html" class="tocviewlink" data-pltdoc="x">Local Binding:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">let</span></span>, <span class="RktSym"><span class="RktStxLink">let*</span></span>, <span class="RktSym"><span class="RktStxLink">letrec</span></span>, ...</a></td></tr><tr><td align="right">3.10 </td><td><a href="local.html" class="tocviewlink" data-pltdoc="x">Local Definitions:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">local</span></span></a></td></tr><tr><td align="right">3.11 </td><td><a href="shared.html" class="tocviewlink" data-pltdoc="x">Constructing Graphs:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">shared</span></span></a></td></tr><tr><td align="right">3.12 </td><td><a href="if.html" class="tocviewlink" data-pltdoc="x">Conditionals:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">if</span></span>, <span class="RktSym"><span class="RktStxLink">cond</span></span>, <span class="RktSym"><span class="RktStxLink">and</span></span>, and <span class="RktSym"><span class="RktStxLink">or</span></span></a></td></tr><tr><td align="right">3.13 </td><td><a href="case.html" class="tocviewlink" data-pltdoc="x">Dispatch:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">case</span></span></a></td></tr><tr><td align="right">3.14 </td><td><a href="define.html" class="tocviewlink" data-pltdoc="x">Definitions:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">define</span></span>, <span class="RktSym"><span class="RktStxLink">define-<wbr></wbr>syntax</span></span>, ...</a></td></tr><tr><td align="right">3.15 </td><td><a href="begin.html" class="tocviewlink" data-pltdoc="x">Sequencing:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">begin</span></span>, <span class="RktSym"><span class="RktStxLink">begin0</span></span>, and <span class="RktSym"><span class="RktStxLink">begin-<wbr></wbr>for-<wbr></wbr>syntax</span></span></a></td></tr><tr><td align="right">3.16 </td><td><a href="when_unless.html" class="tocviewlink" data-pltdoc="x">Guarded Evaluation:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">when</span></span> and <span class="RktSym"><span class="RktStxLink">unless</span></span></a></td></tr><tr><td align="right">3.17 </td><td><a href="set_.html" class="tocviewlink" data-pltdoc="x">Assignment:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">set!</span></span> and <span class="RktSym"><span class="RktStxLink">set!-<wbr></wbr>values</span></span></a></td></tr><tr><td align="right">3.18 </td><td><a href="for.html" class="tocviewlink" data-pltdoc="x">Iterations and Comprehensions:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">for</span></span>, <span class="RktSym"><span class="RktStxLink">for/<span class="mywbr"> </span>list</span></span>, ...</a></td></tr><tr><td align="right">3.19 </td><td><a href="wcm.html" class="tocviewlink" data-pltdoc="x">Continuation Marks:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">with-<wbr></wbr>continuation-<wbr></wbr>mark</span></span></a></td></tr><tr><td align="right">3.20 </td><td><a href="quasiquote.html" class="tocviewlink" data-pltdoc="x">Quasiquoting:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">quasiquote</span></span>, <span class="RktSym"><span class="RktStxLink">unquote</span></span>, and <span class="RktSym"><span class="RktStxLink">unquote-<wbr></wbr>splicing</span></span></a></td></tr><tr><td align="right">3.21 </td><td><a href="Syntax_Quoting__quote-syntax.html" class="tocviewlink" data-pltdoc="x">Syntax Quoting:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">quote-<wbr></wbr>syntax</span></span></a></td></tr><tr><td align="right">3.22 </td><td><a href="__top-interaction.html" class="tocviewlink" data-pltdoc="x">Interaction Wrapper:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">#%top-<wbr></wbr>interaction</span></span></a></td></tr><tr><td align="right">3.23 </td><td><a href="block.html" class="tocviewlink" data-pltdoc="x">Blocks:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">block</span></span></a></td></tr><tr><td align="right">3.24 </td><td><a href="stratified-body.html" class="tocviewlink" data-pltdoc="x">Internal-<wbr></wbr>Definition Limiting:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">#%stratified-<wbr></wbr>body</span></span></a></td></tr><tr><td align="right">3.25 </td><td><a href="performance-hint.html" class="tocviewlink" data-pltdoc="x">Performance Hints:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">begin-<wbr></wbr>encourage-<wbr></wbr>inline</span></span></a></td></tr><tr><td align="right">3.26 </td><td><a href="lazy-require.html" class="tocviewlink" data-pltdoc="x">Importing Modules Lazily:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">lazy-<wbr></wbr>require</span></span></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,"tocview_2");">►</a></td><td>3.2 </td><td><a href="" class="tocviewselflink" data-pltdoc="x">Importing and Exporting:<span class="mywbr"> </span> <span class="RktSym"><span class="RktStxLink">require</span></span> and <span class="RktSym"><span class="RktStxLink">provide</span></span></a></td></tr></table><div class="tocviewsublistbottom" style="display: none;" id="tocview_2"><table cellspacing="0" cellpadding="0"><tr><td align="right">3.2.1 </td><td><a href="#%28part._.Additional_require_.Forms%29" class="tocviewlink" data-pltdoc="x">Additional <span class="RktSym"><span class="RktStxLink">require</span></span> Forms</a></td></tr><tr><td align="right">3.2.2 </td><td><a href="#%28part._.Additional_provide_.Forms%29" class="tocviewlink" data-pltdoc="x">Additional <span class="RktSym"><span class="RktStxLink">provide</span></span> Forms</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%2Fprivate%2Fbase..rkt%29._require%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">require</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">only-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">except-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">prefix-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">rename-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">combine-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._relative-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">relative-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-meta-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">only-<wbr></wbr>meta-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">lib</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._file%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">file</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">planet</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">submod</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._local-require%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">local-<wbr></wbr>require</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">provide</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">all-<wbr></wbr>defined-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-from-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">all-<wbr></wbr>from-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">rename-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">except-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">prefix-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">struct-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">combine-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._protect-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">protect-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">for-<wbr></wbr>meta</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">for-<wbr></wbr>syntax</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-template%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">for-<wbr></wbr>template</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-label%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">for-<wbr></wbr>label</span></span></a></td></tr><tr><td><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25require%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">#%require</span></span></a></td></tr><tr><td><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25provide%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">#%provide</span></span></a></td></tr><tr><td><span class="tocsublinknumber">3.2.1<tt> </tt></span><a href="#%28part._.Additional_require_.Forms%29" class="tocsubseclink" data-pltdoc="x">Additional <span class="RktSym"><span class="RktStxLink">require</span></span> Forms</a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._matching-identifiers-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">matching-<wbr></wbr>identifiers-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._subtract-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">subtract-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._filtered-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">filtered-<wbr></wbr>in</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._path-up%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">path-<wbr></wbr>up</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">multi-<wbr></wbr>in</span></span></a></td></tr><tr><td><span class="tocsublinknumber">3.2.2<tt> </tt></span><a href="#%28part._.Additional_provide_.Forms%29" class="tocsubseclink" data-pltdoc="x">Additional <span class="RktSym"><span class="RktStxLink">provide</span></span> Forms</a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprovide..rkt%29._matching-identifiers-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">matching-<wbr></wbr>identifiers-<wbr></wbr>out</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racket%2Fprovide..rkt%29._filtered-out%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">filtered-<wbr></wbr>out</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, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <a href="module.html" title="backward to "3.1 Modules: module, module*, ..."" data-pltdoc="x">← prev</a> <a href="syntax.html" title="up to "3 Syntactic Forms"" data-pltdoc="x">up</a> <a href="quote.html" title="forward to "3.3 Literals: quote and #%datum"" data-pltdoc="x">next →</a></span> </div><h4 x-source-module="(lib "scribblings/reference/reference.scrbl")" x-part-tag=""require"">3.2<tt> </tt><a name="(part._require)"></a><a name="(part._provide)"></a><a name="(idx._(gentag._86._(lib._scribblings/reference/reference..scrbl)))"></a><a name="(idx._(gentag._87._(lib._scribblings/reference/reference..scrbl)))"></a>Importing and Exporting: <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> and <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span></h4><blockquote class="refpara"><blockquote class="refcolumn"><blockquote class="refcontent"><p><span class="imageleft"><img src="finger.png" alt="+" width="24" height="24"/></span><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=module-require.html&version=6.1" class="Sq" data-pltdoc="x">Imports: <span class="RktSym"><span class="RktStxLink">require</span></span></a> in <a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=index.html&version=6.1" class="Sq" data-pltdoc="x"><span style="font-weight: bold">The Racket Guide</span></a> introduces <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span>.</p></blockquote></blockquote></blockquote><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/private/base..rkt)._require))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">require</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="specgrammar"><tr><td align="right" valign="baseline"><span class="RktVar">require-spec</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">module-path</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-in%29%29" class="RktStxLink" data-pltdoc="x">only-in</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktVar">id-maybe-renamed</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-in%29%29" class="RktStxLink" data-pltdoc="x">except-in</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-in%29%29" class="RktStxLink" data-pltdoc="x">prefix-in</a></span><span class="hspace"> </span><span class="RktVar">prefix-id</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-in%29%29" class="RktStxLink" data-pltdoc="x">rename-in</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktVar">orig-id</span><span class="hspace"> </span><span class="RktVar">bind-id</span><span class="RktPn">]</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-in%29%29" class="RktStxLink" data-pltdoc="x">combine-in</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._relative-in%29%29" class="RktStxLink" data-pltdoc="x">relative-in</a></span><span class="hspace"> </span><span class="RktVar">module-path</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-meta-in%29%29" class="RktStxLink" data-pltdoc="x">only-meta-in</a></span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-template%29%29" class="RktStxLink" data-pltdoc="x">for-template</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-label%29%29" class="RktStxLink" data-pltdoc="x">for-label</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">derived-require-spec</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">module-path</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">root-module-path</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="hspace"> </span><span class="RktVar">root-module-path</span><span class="hspace"> </span><span class="RktVar">submod-path-element</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="hspace"> </span><span class="RktVal">"."</span><span class="hspace"> </span><span class="RktVar">submod-path-element</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="hspace"> </span><span class="RktVal">".."</span><span class="hspace"> </span><span class="RktVar">submod-path-element</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">root-module-path</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="quote.html#%28form._%28%28quote._~23~25kernel%29._quote%29%29" class="RktStxLink" data-pltdoc="x">quote</a></span><span class="hspace"> </span><span class="RktVar">id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">rel-string</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVar">rel-string</span><span class="hspace"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=syntax&rel=stxparse-patterns.html%23%2528form._%2528%2528lib._syntax%252Fparse..rkt%2529._......%252B%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...+</a></span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">id</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._file%29%29" class="RktStxLink" data-pltdoc="x">file</a></span><span class="hspace"> </span><span class="RktVar">string</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktVar">id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktVar">string</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktVar">rel-string</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">user-string</span><span class="hspace"> </span><span class="RktVar">pkg-string</span><span class="hspace"> </span><span class="RktVar">vers</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">rel-string</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">submod-path-element</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">id</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVal">".."</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">id-maybe-renamed</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">id</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">[</span><span class="RktVar">orig-id</span><span class="hspace"> </span><span class="RktVar">bind-id</span><span class="RktPn">]</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">phase-level</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">exact-integer</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVal">#f</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">vers</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </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"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">nat</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">nat</span><span class="hspace"> </span><span class="RktVar">minor-vers</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">minor-vers</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">nat</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktVar">nat</span><span class="hspace"> </span><span class="RktVar">nat</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">=</span><span class="hspace"> </span><span class="RktVar">nat</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">+</span><span class="hspace"> </span><span class="RktVar">nat</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">-</span><span class="hspace"> </span><span class="RktVar">nat</span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">In a <a href="syntax-model.html#%28tech._top._level._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">top-level context</span></a>, <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> <a href="eval-model.html#%28tech._instantiate%29" class="techoutside" data-pltdoc="x"><span class="techinside">instantiates</span></a>
modules (see <a href="eval-model.html#%28part._module-eval-model%29" data-pltdoc="x">Modules and Module-Level Variables</a>). In a <a href="syntax-model.html#%28tech._top._level._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">top-level
context</span></a> or <a href="syntax-model.html#%28tech._module._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">module context</span></a>, expansion of <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span>
<a href="syntax-model.html#%28tech._visit%29" class="techoutside" data-pltdoc="x"><span class="techinside">visits</span></a> modules (see <a href="syntax-model.html#%28part._mod-parse%29" data-pltdoc="x">Module Phases and Visits</a>). In both contexts and
both evaluation and expansion, <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> introduces bindings
into a <a href="syntax-model.html#%28tech._namespace%29" class="techoutside" data-pltdoc="x"><span class="techinside">namespace</span></a> or a module (see <a href="syntax-model.html#%28part._intro-binding%29" data-pltdoc="x">Introducing Bindings</a>). A
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> form in a <a href="syntax-model.html#%28tech._expression._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">expression context</span></a> or
<a href="syntax-model.html#%28tech._internal._definition._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">internal-definition context</span></a> is a syntax error.</div></p><p>A <span class="RktVar">require-spec</span> designates a particular set of identifiers to
be bound in the importing context. Each identifier is mapped to a
particular export of a particular module; the identifier to bind may
be different from the symbolic name of the originally exported
identifier. Each identifier also binds at a particular <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase
level</span></a>.</p><p>No identifier can be bound multiple times in a given <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase
level</span></a> by an import, unless all of the bindings refer to the same
original definition in the same module. In a <a href="syntax-model.html#%28tech._module._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">module context</span></a>,
an identifier can be either imported or defined for a given
<a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a>, but not both.</p><p>The syntax of <span class="RktVar">require-spec</span> can be extended via
<span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Frequire-syntax..rkt%29._define-require-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-require-syntax</a></span>, and when multiple
<span class="RktVar">require-spec</span>s are specified in a <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span>, the
bindings of each <span class="RktVar">require-spec</span> are visible for expanding later
<span class="RktVar">require-spec</span>s. The pre-defined forms (as exported by
<a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/base</span></a>) are as follows:</p><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktVar">module-path</span></td></tr></table></blockquote><p> Imports all exported bindings from the
named module, using the export identifiers as the local identifiers.
(See below for information on <span class="RktVar">module-path</span>.) The lexical
context of the <span class="RktVar">module-path</span> form determines the context of
the introduced identifiers.</p></blockquote><blockquote class="leftindent"><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/private/base..rkt)._only-in))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">only-in</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktVar">id-maybe-renamed</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktVar">require-spec</span>, but constrained to those exports for
which the identifiers to bind match <span class="RktVar">id-maybe-renamed</span>: as
<span class="RktVar">id</span> or as <span class="RktVar">orig-id</span> in <span class="RktPn">[</span><span class="RktVar">orig-id</span><span class="stt"> </span><span class="RktVar">bind-id</span><span class="RktPn">]</span>. If
the <span class="RktVar">id</span> or <span class="RktVar">orig-id</span> of any <span class="RktVar">id-maybe-renamed</span>
is not in the set that <span class="RktVar">require-spec</span> describes, a syntax
error is reported.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-in%29%29" class="RktStxLink" data-pltdoc="x">only-in</a></span><span class="hspace"> </span><span class="RktSym">racket/tcp</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-listen%29%29" class="RktValLink" data-pltdoc="x">tcp-listen</a></span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-accept%29%29" class="RktValLink" data-pltdoc="x">tcp-accept</a></span><span class="hspace"> </span><span class="RktSym">my-accept</span><span class="RktPn">]</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-listen%29%29" class="RktValLink" data-pltdoc="x">tcp-listen</a></span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-listen></span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">my-accept</span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-accept></span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-accept%29%29" class="RktValLink" data-pltdoc="x">tcp-accept</a></span></td></tr><tr><td><p><span class="RktErr">tcp-accept: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._except-in))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">except-in</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Like
<span class="RktVar">require-spec</span>, but omitting those imports for which
<span class="RktVar">id</span>s are the identifiers to bind; if any <span class="RktVar">id</span> is not
in the set that <span class="RktVar">require-spec</span> describes, a syntax error is
reported.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-in%29%29" class="RktStxLink" data-pltdoc="x">except-in</a></span><span class="hspace"> </span><span class="RktSym">racket/tcp</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-listen%29%29" class="RktValLink" data-pltdoc="x">tcp-listen</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-accept%29%29" class="RktValLink" data-pltdoc="x">tcp-accept</a></span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-accept></span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-listen%29%29" class="RktValLink" data-pltdoc="x">tcp-listen</a></span></td></tr><tr><td><p><span class="RktErr">tcp-listen: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._prefix-in))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">prefix-in</a></span></span><span class="hspace"> </span><span class="RktVar">prefix-id</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Like
<span class="RktVar">require-spec</span>, but adjusting each identifier to be bound by
prefixing it with <span class="RktVar">prefix-id</span>. The lexical context of the
<span class="RktVar">prefix-id</span> is ignored, and instead preserved from the
identifiers before prefixing.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-in%29%29" class="RktStxLink" data-pltdoc="x">prefix-in</a></span><span class="hspace"> </span><span class="RktSym">tcp:</span><span class="hspace"> </span><span class="RktSym">racket/tcp</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">tcp:tcp-accept</span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-accept></span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">tcp:tcp-listen</span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-listen></span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._rename-in))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">rename-in</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktVar">orig-id</span><span class="hspace"> </span><span class="RktVar">bind-id</span><span class="RktPn">]</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktVar">require-spec</span>, but replacing the identifier to
bind <span class="RktVar">orig-id</span> with <span class="RktVar">bind-id</span>; if any
<span class="RktVar">orig-id</span> is not in the set that <span class="RktVar">require-spec</span>
describes, a syntax error is reported.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-in%29%29" class="RktStxLink" data-pltdoc="x">rename-in</a></span><span class="hspace"> </span><span class="RktSym">racket/tcp</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-accept%29%29" class="RktValLink" data-pltdoc="x">tcp-accept</a></span><span class="hspace"> </span><span class="RktSym">accept</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-listen%29%29" class="RktValLink" data-pltdoc="x">tcp-listen</a></span><span class="hspace"> </span><span class="RktSym">listen</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">accept</span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-accept></span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">listen</span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-listen></span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._combine-in))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">combine-in</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">The union of the <span class="RktVar">require-spec</span>s. If two or more imports from the
<span class="RktVar">require-spec</span>s have the same identifier name but they do not refer to
the same original binding, a syntax error is reported.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-in%29%29" class="RktStxLink" data-pltdoc="x">combine-in</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-in%29%29" class="RktStxLink" data-pltdoc="x">only-in</a></span><span class="hspace"> </span><span class="RktSym">racket/tcp</span><span class="hspace"> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-accept%29%29" class="RktValLink" data-pltdoc="x">tcp-accept</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-in%29%29" class="RktStxLink" data-pltdoc="x">only-in</a></span><span class="hspace"> </span><span class="RktSym">racket/tcp</span><span class="hspace"> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-listen%29%29" class="RktValLink" data-pltdoc="x">tcp-listen</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-accept%29%29" class="RktValLink" data-pltdoc="x">tcp-accept</a></span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-accept></span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym"><a href="tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-listen%29%29" class="RktValLink" data-pltdoc="x">tcp-listen</a></span></td></tr><tr><td><p><span class="RktRes">#<procedure:tcp-listen></span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._relative-in))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._relative-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">relative-in</a></span></span><span class="hspace"> </span><span class="RktVar">module-path</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like the union of the <span class="RktVar">require-spec</span>s, but each
relative module path in a <span class="RktVar">require-spec</span> is treated
as relative to <span class="RktVar">module-path</span> instead of the enclosing
context.</div></p><p>The <a href="stxtrans.html#%28tech._require._transformer%29" class="techoutside" data-pltdoc="x"><span class="techinside">require transformer</span></a> that implements <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._relative-in%29%29" class="RktStxLink" data-pltdoc="x">relative-in</a></span>
sets <span class="RktSym"><a href="stxtrans.html#%28def._%28%28lib._racket%2Frequire-transform..rkt%29._current-require-module-path%29%29" class="RktValLink" data-pltdoc="x">current-require-module-path</a></span> to adjust module paths
in the <span class="RktVar">require-spec</span>s.</p></blockquote><blockquote class="leftindent"><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/private/base..rkt)._only-meta-in))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-meta-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">only-meta-in</a></span></span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like the combination of <span class="RktVar">require-spec</span>s, but removing any
binding that is not for <span class="RktVar">phase-level</span>, where <span class="RktVal">#f</span> for
<span class="RktVar">phase-level</span> corresponds to the <a href="syntax-model.html#%28tech._label._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">label phase level</span></a>.</div></p><p>The following example imports bindings only at <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a> 1,
the transform phase:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktSym">meta-eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVal">1</span><span class="hspace"> </span><span class="RktSym">meta-chicks</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define-for-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-for-syntax</a></span><span class="hspace"> </span><span class="RktSym">meta-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define-for-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-for-syntax</a></span><span class="hspace"> </span><span class="RktSym">meta-chicks</span><span class="hspace"> </span><span class="RktVal">3</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-meta-in%29%29" class="RktStxLink" data-pltdoc="x">only-meta-in</a></span><span class="hspace"> </span><span class="RktVal">1</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-syntax</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">desc</span><span class="hspace"> </span><span class="RktSym">stx</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Writing.html#%28def._%28%28quote._~23~25kernel%29._printf%29%29" class="RktValLink" data-pltdoc="x">printf</a></span><span class="hspace"> </span><span class="RktVal">"~s ~s\n"</span><span class="hspace"> </span><span class="RktSym">meta-eggs</span><span class="hspace"> </span><span class="RktSym">meta-chicks</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktRdr">#'</span><span class="RktPn">(</span><span class="RktSym"><a href="void.html#%28def._%28%28quote._~23~25kernel%29._void%29%29" class="RktValLink" data-pltdoc="x">void</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym">desc</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktOut">2 3</span></p></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktErr">num-eggs: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr></table></blockquote><p>The following example imports only bindings at <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a> 0, the
normal phase.</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._only-meta-in%29%29" class="RktStxLink" data-pltdoc="x">only-meta-in</a></span><span class="hspace"> </span><span class="RktVal">0</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr></table></blockquote></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Like the combination of
<span class="RktVar">require-spec</span>s, but the binding specified by
each <span class="RktVar">require-spec</span> is shifted by <span class="RktVar">phase-level</span>. The
<a href="syntax-model.html#%28tech._label._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">label phase level</span></a> corresponds to <span class="RktVal">#f</span>, and a shifting
combination that involves <span class="RktVal">#f</span> produces <span class="RktVal">#f</span>.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVal">0</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVal">1</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-syntax</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">roost</span><span class="hspace"> </span><span class="RktSym">stx</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="stxops.html#%28def._%28%28quote._~23~25kernel%29._datum-~3esyntax%29%29" class="RktValLink" data-pltdoc="x">datum->syntax</a></span><span class="hspace"> </span><span class="RktSym">stx</span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym">roost</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Same as
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="stt"> </span><span class="RktVal">1</span><span class="stt"> </span><span class="RktVar">require-spec</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>.</p></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-template%29%29" class="RktStxLink" data-pltdoc="x">for-template</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Same as
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="stt"> </span><span class="RktVal"><span class="nobreak">-1</span></span><span class="stt"> </span><span class="RktVar">require-spec</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>.</p></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-label%29%29" class="RktStxLink" data-pltdoc="x">for-label</a></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Same as
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="stt"> </span><span class="RktVal">#f</span><span class="stt"> </span><span class="RktVar">require-spec</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>. If an identifier in any of the
<span class="RktVar">require-spec</span>s is bound at more than one phase level, a syntax error
is reported.</p></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktVar">derived-require-spec</span></td></tr></table></blockquote><p>See <span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Frequire-syntax..rkt%29._define-require-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-require-syntax</a></span>
for information on expanding the set of <span class="RktVar">require-spec</span>
forms.</p></blockquote><blockquote class="refpara"><blockquote class="refcolumn"><blockquote class="refcontent"><p><span class="imageleft"><img src="finger.png" alt="+" width="24" height="24"/></span><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=module-paths.html&version=6.1" class="Sq" data-pltdoc="x">Module Paths</a> in <a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=index.html&version=6.1" class="Sq" data-pltdoc="x"><span style="font-weight: bold">The Racket Guide</span></a> introduces module paths.</p></blockquote></blockquote></blockquote><p>A <span class="RktVar">module-path</span> identifies a module, either a root module or
a <a href="eval-model.html#%28tech._submodule%29" class="techoutside" data-pltdoc="x"><span class="techinside">submodule</span></a> that is declared lexically within another module.
A root module is identified either through a concrete
name in the form of an identifier, or through an indirect name that
can trigger automatic loading of the module declaration. Except for
the <span class="RktPn">(</span><span class="RktSym"><a href="quote.html#%28form._%28%28quote._~23~25kernel%29._quote%29%29" class="RktStxLink" data-pltdoc="x">quote</a></span><span class="stt"> </span><span class="RktVar">id</span><span class="RktPn">)</span> case below, the actual resolution
of a root module path is up to the current
<a href="Module_Names_and_Loading.html#%28tech._module._name._resolver%29" class="techoutside" data-pltdoc="x"><span class="techinside">module name resolver</span></a> (see
<span class="RktSym"><a href="Module_Names_and_Loading.html#%28def._%28%28quote._~23~25kernel%29._current-module-name-resolver%29%29" class="RktValLink" data-pltdoc="x">current-module-name-resolver</a></span>), and the description below
corresponds to the default <a href="Module_Names_and_Loading.html#%28tech._module._name._resolver%29" class="techoutside" data-pltdoc="x"><span class="techinside">module name resolver</span></a>.</p><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="quote.html#%28form._%28%28quote._~23~25kernel%29._quote%29%29" class="RktStxLink" data-pltdoc="x">quote</a></span><span class="hspace"> </span><span class="RktVar">id</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Refers to a submodule previously declared with the name
<span class="RktVar">id</span> or a module previously declared interactively with the name
<span class="RktVar">id</span>. When <span class="RktVar">id</span> refers to a submodule, <span class="RktPn">(</span><span class="RktSym"><a href="quote.html#%28form._%28%28quote._~23~25kernel%29._quote%29%29" class="RktStxLink" data-pltdoc="x">quote</a></span><span class="stt"> </span><span class="RktVar">id</span><span class="RktPn">)</span>
is equivalent to <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="stt"> </span><span class="RktVal">"."</span><span class="stt"> </span><span class="RktVar">id</span><span class="RktPn">)</span>.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">a module declared interactively as </span><span class="RktSym">test</span><span class="RktCmt">:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktSym">test</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktVar">rel-string</span></td></tr></table></blockquote><p>A path relative to the containing source (as
determined by <span class="RktSym"><a href="eval.html#%28def._%28%28quote._~23~25kernel%29._current-load-relative-directory%29%29" class="RktValLink" data-pltdoc="x">current-load-relative-directory</a></span> or
<span class="RktSym"><a href="Filesystem.html#%28def._%28%28quote._~23~25kernel%29._current-directory%29%29" class="RktValLink" data-pltdoc="x">current-directory</a></span>). Regardless of the current platform,
<span class="RktVar">rel-string</span> is always parsed as a Unix-format relative path:
<span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span> is the path delimiter (multiple adjacent <span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span>s are
treated as a single delimiter), <span class="RktInBG"><span class="hspace"></span><span class="RktIn">..</span><span class="hspace"></span></span> accesses the parent
directory, and <span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span> accesses the current directory. The path
cannot be empty or contain a leading or trailing slash, path elements
before than the last one cannot include a file suffix (i.e., a
<span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span> in an element other than <span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span> or <span class="RktInBG"><span class="hspace"></span><span class="RktIn">..</span><span class="hspace"></span></span>),
and the only allowed characters are ASCII letters, ASCII digits,
<span class="RktInBG"><span class="hspace"></span><span class="RktIn">-</span><span class="hspace"></span></span>, <span class="RktInBG"><span class="hspace"></span><span class="RktIn">+</span><span class="hspace"></span></span>, <span class="RktInBG"><span class="hspace"></span><span class="RktIn">_</span><span class="hspace"></span></span>, <span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span>, <span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span>, and
<span class="RktInBG"><span class="hspace"></span><span class="RktIn">%</span><span class="hspace"></span></span>. Furthermore, a <span class="RktInBG"><span class="hspace"></span><span class="RktIn">%</span><span class="hspace"></span></span> is allowed only when followed
by two lowercase hexadecimal digits, and the digits must form a
number that is not the ASCII value of a letter, digit, <span class="RktInBG"><span class="hspace"></span><span class="RktIn">-</span><span class="hspace"></span></span>,
<span class="RktInBG"><span class="hspace"></span><span class="RktIn">+</span><span class="hspace"></span></span>, or <span class="RktInBG"><span class="hspace"></span><span class="RktIn">_</span><span class="hspace"></span></span>.</p><blockquote class="refpara"><blockquote class="refcolumn"><blockquote class="refcontent"><p>The <span class="RktInBG"><span class="hspace"></span><span class="RktIn">%</span><span class="hspace"></span></span> provision is intended to support a
one-to-one encoding of arbitrary strings as path elements (after
UTF-8 encoding). Such encodings are not decoded to arrive at a
filename, but instead preserved in the file access.</p></blockquote></blockquote></blockquote><p>If <span class="RktVar">rel-string</span> ends with a <span class="stt">".ss"</span> suffix, it is
converted to a <span class="stt">".rkt"</span> suffix. The <a href="eval.html#%28tech._compiled._load._handler%29" class="techoutside" data-pltdoc="x"><span class="techinside">compiled-load
handler</span></a> may reverse that conversion if a <span class="stt">".rkt"</span> file does
not exist and a <span class="stt">".ss"</span> exists.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">a module named </span><span class="stt">"x.rkt"</span><span class="RktCmt"> in the same</span></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">directory as the enclosing module</span><span class="RktCmt">'</span><span class="RktCmt">s file:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">"x.rkt"</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">a module named </span><span class="stt">"x.rkt"</span><span class="RktCmt"> in the parent directory</span></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">of the enclosing module file</span><span class="RktCmt">'</span><span class="RktCmt">s directory:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">"../x.rkt"</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._lib))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">lib</a></span></span><span class="hspace"> </span><span class="RktVar">rel-string</span><span class="hspace"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=syntax&rel=stxparse-patterns.html%23%2528form._%2528%2528lib._syntax%252Fparse..rkt%2529._......%252B%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...+</a></span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">A path to a module installed into
a <a href="collects.html#%28tech._collection%29" class="techoutside" data-pltdoc="x"><span class="techinside">collection</span></a> (see <a href="collects.html" data-pltdoc="x">Libraries and Collections</a>). The <span class="RktVar">rel-string</span>s in
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span> are constrained similar to the plain <span class="RktVar">rel-string</span>
case, with the additional constraint that a <span class="RktVar">rel-string</span>
cannot contain <span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span> or <span class="RktInBG"><span class="hspace"></span><span class="RktIn">..</span><span class="hspace"></span></span> directory indicators.</div></p><p>The specific interpretation of the path depends on the number and
shape of the <span class="RktVar">rel-string</span>s:</p><ul><li><p>If a single <span class="RktVar">rel-string</span> is provided, and if it
consists of a single element (i.e., no <span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span>) with no file
suffix (i.e., no <span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span>), then <span class="RktVar">rel-string</span> names a
<a href="collects.html#%28tech._collection%29" class="techoutside" data-pltdoc="x"><span class="techinside">collection</span></a>, and <span class="stt">"main.rkt"</span> is the library file name.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">the main </span><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?tag=%28mod-path._.%27swindle.%27%29&version=6.1" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">swindle</span></a><span class="RktCmt"> library:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVal">"swindle"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">the same:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVal">"swindle/main.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></li><li><p>If a single <span class="RktVar">rel-string</span> is provided, and if it
consists of multiple <span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span>-separated elements, then each
element up to the last names a <a href="collects.html#%28tech._collection%29" class="techoutside" data-pltdoc="x"><span class="techinside">collection</span></a>, subcollection,
etc., and the last element names a file. If the last element has
no file suffix, <span class="stt">".rkt"</span> is added, while a <span class="stt">".ss"</span>
suffix is converted to <span class="stt">".rkt"</span>.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="stt">"turbo.rkt"</span><span class="RktCmt"> from the </span><span class="stt">"swindle"</span><span class="RktCmt"> collection:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVal">"swindle/turbo"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">the same:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVal">"swindle/turbo.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="RktCmt">the same:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVal">"swindle/turbo.ss"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></li><li><p>If a single <span class="RktVar">rel-string</span> is provided, and if it
consists of a single element <span style="font-style: italic">with</span> a file suffix (i.e,
with a <span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span>), then <span class="RktVar">rel-string</span> names a file within
the <span class="stt">"mzlib"</span> <a href="collects.html#%28tech._collection%29" class="techoutside" data-pltdoc="x"><span class="techinside">collection</span></a>. A <span class="stt">".ss"</span>
suffix is converted to <span class="stt">".rkt"</span>. (This convention is for
compatibility with older version of Racket.)</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="stt">"tar.rkt"</span><span class="RktCmt"> module from the </span><span class="stt">"mzlib"</span><span class="RktCmt"> collection:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVal">"tar.ss"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></li><li><p>Otherwise, when multiple <span class="RktVar">rel-string</span>s are provided,
the first <span class="RktVar">rel-string</span> is effectively moved after the
others, and all <span class="RktVar">rel-string</span>s are appended with <span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span>
separators. The resulting path names a <a href="collects.html#%28tech._collection%29" class="techoutside" data-pltdoc="x"><span class="techinside">collection</span></a>, then
subcollection, etc., ending with a file name. No suffix is added
automatically, but a <span class="stt">".ss"</span> suffix is converted to
<span class="stt">".rkt"</span>. (This convention is for compatibility with older
version of Racket.)</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="stt">"tar.rkt"</span><span class="RktCmt"> module from the </span><span class="stt">"mzlib"</span><span class="RktCmt"> collection:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span><span class="hspace"> </span><span class="RktVal">"tar.ss"</span><span class="hspace"> </span><span class="RktVal">"mzlib"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></li></ul></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktVar">id</span></td></tr></table></blockquote><p>A shorthand for a <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span> form with a single
<span class="RktVar">rel-string</span> whose characters are the same as in the symbolic
form of <span class="RktVar">id</span>. In addition to the constraints of a <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span>
<span class="RktVar">rel-string</span>, <span class="RktVar">id</span> must not contain <span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span>.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Example:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/tcp</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._file))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._file%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">file</a></span></span><span class="hspace"> </span><span class="RktVar">string</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Similar to the plain <span class="RktVar">rel-string</span>
case, but <span class="RktVar">string</span> is a path—<wbr></wbr>possibly absolute—<wbr></wbr>using the
current platform’s path conventions and <span class="RktSym"><a href="Manipulating_Paths.html#%28def._%28%28quote._~23~25kernel%29._expand-user-path%29%29" class="RktValLink" data-pltdoc="x">expand-user-path</a></span>.
A <span class="stt">".ss"</span> suffix is converted to <span class="stt">".rkt"</span>.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Example:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._file%29%29" class="RktStxLink" data-pltdoc="x">file</a></span><span class="hspace"> </span><span class="RktVal">"~/tmp/x.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._planet))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">planet</a></span></span><span class="hspace"> </span><span class="RktVar">id</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktVar">string</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktVar">rel-string</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">user-string</span><span class="hspace"> </span><span class="RktVar">pkg-string</span><span class="hspace"> </span><span class="RktVar">vers</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">rel-string</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Specifies a library available via the <span class="planetName">PLaneT</span> server.</div></p><p>The first form is a shorthand for the last one, where the <span class="RktVar">id</span>’s
character sequence must match the following <span class="sroman">‹<span style="font-style: italic">spec</span>›</span> grammar:</p><table cellspacing="0" cellpadding="0"><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">spec</span>›</span></p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span>::=<span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">owner</span>›</span><span class="hspace"> </span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">pkg</span>›</span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">lib</span>›</span></p></td></tr><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">owner</span>›</span></p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span>::=<span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">elem</span>›</span></p></td></tr><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">pkg</span>›</span></p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span>::=<span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">elem</span>›</span><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span><span class="sroman">‹<span style="font-style: italic">elem</span>›</span><span class="hspace"> </span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">:</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">version</span>›</span></p></td></tr><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">version</span>›</span></p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span>::=<span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">int</span>›</span><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span><span class="sroman">‹<span style="font-style: italic">int</span>›</span><span class="hspace"> </span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">:</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">minor</span>›</span></p></td></tr><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">minor</span>›</span></p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span>::=<span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">int</span>›</span><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span><span class="RktInBG"><span class="hspace"></span><span class="RktIn"><=</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">int</span>›</span><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">>=</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">int</span>›</span><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">=</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">int</span>›</span></p></td></tr><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p> </p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">int</span>›</span><span class="hspace"> </span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">-</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">int</span>›</span></p></td></tr><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">lib</span>›</span></p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span>::=<span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">empty</span>›</span><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">path</span>›</span></p></td></tr><tr><td valign="baseline"><p><span class="hspace"> </span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">path</span>›</span></p></td><td valign="baseline"><p><span class="stt"><span class="hspace"> </span>::=<span class="hspace"> </span></span></p></td><td valign="baseline"><p><span class="sroman">‹<span style="font-style: italic">elem</span>›</span><span class="stt"><span class="hspace"> </span><span class="hspace"> </span>|<span class="hspace"> </span><span class="hspace"> </span></span><span class="sroman">‹<span style="font-style: italic">elem</span>›</span><span class="hspace"> </span><span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span><span class="hspace"> </span><span class="sroman">‹<span style="font-style: italic">path</span>›</span></p></td></tr></table><p>and where an <span class="sroman">‹<span style="font-style: italic">elem</span>›</span> is a non-empty sequence of characters
that are ASCII letters, ASCII digits, <span class="RktInBG"><span class="hspace"></span><span class="RktIn">-</span><span class="hspace"></span></span>, <span class="RktInBG"><span class="hspace"></span><span class="RktIn">+</span><span class="hspace"></span></span>,
<span class="RktInBG"><span class="hspace"></span><span class="RktIn">_</span><span class="hspace"></span></span>, or <span class="RktInBG"><span class="hspace"></span><span class="RktIn">%</span><span class="hspace"></span></span> followed by lowercase hexadecimal digits
(that do not encode one of the other allowed characters), and an
<span class="sroman">‹<span style="font-style: italic">int</span>›</span> is a non-empty sequence of ASCII digits. As this
shorthand is expended, a <span class="stt">".plt"</span> extension is added to
<span class="sroman">‹<span style="font-style: italic">pkg</span>›</span>, and a <span class="stt">".rkt"</span> extension is added to
<span class="sroman">‹<span style="font-style: italic">path</span>›</span>; if no <span class="sroman">‹<span style="font-style: italic">path</span>›</span> is included, <span class="stt">"main.rkt"</span>
is used in the expansion.</p><p>A <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="stt"> </span><span class="RktVar">string</span><span class="RktPn">)</span> form is like a <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="stt"> </span><span class="RktVar">id</span><span class="RktPn">)</span> form
with the identifier converted to a string, except that the
<span class="RktVar">string</span> can optionally end with a file extension (i.e., a
<span class="RktInBG"><span class="hspace"></span><span class="RktIn">.</span><span class="hspace"></span></span>) for a <span class="sroman">‹<span style="font-style: italic">path</span>›</span>. A <span class="stt">".ss"</span> file extension is
converted to <span class="stt">".rkt"</span>.</p><p>In the more general last form of a <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span> module path, the
<span class="RktVar">rel-string</span>s are similar to the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lib%29%29" class="RktStxLink" data-pltdoc="x">lib</a></span> form, except
that the <span class="RktPn">(</span><span class="RktVar">user-string</span><span class="stt"> </span><span class="RktVar">pkg-string</span><span class="stt"> </span><span class="RktVar">vers</span><span class="RktPn">)</span> names a
<span class="planetName">PLaneT</span>-based package instead of a <a href="collects.html#%28tech._collection%29" class="techoutside" data-pltdoc="x"><span class="techinside">collection</span></a>. A version
specification can include an optional major and minor version, where
the minor version can be a specific number or a constraint:
<span class="RktPn">(</span><span class="RktVar">nat</span><span class="stt"> </span><span class="RktVar">nat</span><span class="RktPn">)</span> specifies an inclusive range, <span class="RktPn">(</span><span class="RktSym">=</span><span class="stt"> </span><span class="RktVar">nat</span><span class="RktPn">)</span> specifies an exact match,
<span class="RktPn">(</span><span class="RktSym">+</span><span class="stt"> </span><span class="RktVar">nat</span><span class="RktPn">)</span> specifies a minimum
version and is equivalent to just <span class="RktVar">nat</span>, and
<span class="RktPn">(</span><span class="RktSym">-</span><span class="stt"> </span><span class="RktVar">nat</span><span class="RktPn">)</span> specifies a maximum
version. The <span class="RktSym">=</span>, <span class="RktSym">+</span>, and <span class="RktSym">-</span>
identifiers in a minor-version constraint are recognized
symbolically.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="stt">"main.rkt"</span><span class="RktCmt"> in package </span><span class="stt">"farm"</span><span class="RktCmt"> by </span><span class="stt">"mcdonald"</span><span class="RktCmt">:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktSym">mcdonald/farm</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="stt">"main.rkt"</span><span class="RktCmt"> in version >= 2.0 of </span><span class="stt">"farm"</span><span class="RktCmt"> by </span><span class="stt">"mcdonald"</span><span class="RktCmt">:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktSym">mcdonald/farm:2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="stt">"main.rkt"</span><span class="RktCmt"> in version >= 2.5 of </span><span class="stt">"farm"</span><span class="RktCmt"> by </span><span class="stt">"mcdonald"</span><span class="RktCmt">:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktSym">mcdonald/farm:2:5</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="RktCmt">;</span><span class="RktCmt"> </span><span class="stt">"duck.rkt"</span><span class="RktCmt"> in version >= 2.5 of </span><span class="stt">"farm"</span><span class="RktCmt"> by </span><span class="stt">"mcdonald"</span><span class="RktCmt">:</span></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._planet%29%29" class="RktStxLink" data-pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktSym">mcdonald/farm:2:5/duck</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._submod))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">submod</a></span></span><span class="hspace"> </span><span class="RktVar">root-module</span><span class="hspace"> </span><span class="RktVar">submod-path-element</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">submod</a></span><span class="hspace"> </span><span class="RktVal">"."</span><span class="hspace"> </span><span class="RktVar">submod-path-element</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">submod</a></span><span class="hspace"> </span><span class="RktVal">".."</span><span class="hspace"> </span><span class="RktVar">submod-path-element</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies a <a href="eval-model.html#%28tech._submodule%29" class="techoutside" data-pltdoc="x"><span class="techinside">submodule</span></a> within the module specified by <span class="RktVar">root-module</span>
or relative to the current module in the case of <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="stt"> </span><span class="RktVal">"."</span><span class="stt"> </span><span class="RktSym">....</span><span class="RktPn">)</span>,
where <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="stt"> </span><span class="RktVal">".."</span><span class="stt"> </span><span class="RktVar">submod-path-element</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> is equivalent to
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="stt"> </span><span class="RktVal">"."</span><span class="stt"> </span><span class="RktVal">".."</span><span class="stt"> </span><span class="RktVar">submod-path-element</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>.
Submodules have symbolic names, and a sequence of identifiers as <span class="RktVar">submod-path-element</span>s
determine a path of successively nested submodules with the given names.
A <span class="RktVal">".."</span> as a <span class="RktVar">submod-path-element</span> names the enclosing module
of a submodule, and it’s intended for use in <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="stt"> </span><span class="RktVal">"."</span><span class="stt"> </span><span class="RktSym">....</span><span class="RktPn">)</span>
and <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._submod%29%29" class="RktStxLink" data-pltdoc="x">submod</a></span><span class="stt"> </span><span class="RktVal">".."</span><span class="stt"> </span><span class="RktSym">....</span><span class="RktPn">)</span> forms.</div></p></blockquote><p>As <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> prepares to handle a sequence of
<span class="RktVar">require-spec</span>s, it logs a “prefetch” message to the
<a href="logging.html#%28tech._current._logger%29" class="techoutside" data-pltdoc="x"><span class="techinside">current logger</span></a> at the <span class="RktVal">'</span><span class="RktVal">info</span> level, using the name
<span class="RktVal">'</span><span class="RktVal">module-prefetch</span>, and including message data that is a list
of two elements: a list of <a href="Module_Names_and_Loading.html#%28tech._module._path%29" class="techoutside" data-pltdoc="x"><span class="techinside">module paths</span></a> that appear to be
imported, and a directory path to use for relative module paths. The
logged list of module paths may be incomplete, but a compilation
manager can use approximate prefetch information to start on
compilations in parallel.</p><p class="SHistory">Changed in version 6.0.1.10 of package <span class="stt">base</span>: Added prefetch logging.</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/private/base..rkt)._local-require))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._local-require%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">local-require</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span>, but for use in a <a href="syntax-model.html#%28tech._internal._definition._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">internal-definition context</span></a> to
import just into the local context. Only bindings from <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase
level</span></a> 0 are imported.</div></p><p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="let.html#%28form._%28%28lib._racket%2Fprivate%2Fletstx-scheme..rkt%29._let%29%29" class="RktStxLink" data-pltdoc="x">let</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._local-require%29%29" class="RktStxLink" data-pltdoc="x">local-require</a></span><span class="hspace"> </span><span class="RktSym">racket/control</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym">fcontrol</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p><span class="RktRes">#<procedure:fcontrol></span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">fcontrol</span></td></tr><tr><td><p><span class="RktErr">fcontrol: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr></table></blockquote></td></tr></table></p><blockquote class="refpara"><blockquote class="refcolumn"><blockquote class="refcontent"><p><span class="imageleft"><img src="finger.png" alt="+" width="24" height="24"/></span><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=module-provide.html&version=6.1" class="Sq" data-pltdoc="x">Exports: <span class="RktSym"><span class="RktStxLink">provide</span></span></a> in <a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=index.html&version=6.1" class="Sq" data-pltdoc="x"><span style="font-weight: bold">The Racket Guide</span></a> introduces <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span>.</p></blockquote></blockquote></blockquote><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/private/base..rkt)._provide))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">provide</a></span></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="specgrammar"><tr><td align="right" valign="baseline"><span class="RktVar">provide-spec</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">id</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-from-out%29%29" class="RktStxLink" data-pltdoc="x">all-from-out</a></span><span class="hspace"> </span><span class="RktVar">module-path</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-out%29%29" class="RktStxLink" data-pltdoc="x">rename-out</a></span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktVar">orig-id</span><span class="hspace"> </span><span class="RktVar">export-id</span><span class="RktPn">]</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-out%29%29" class="RktStxLink" data-pltdoc="x">except-out</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-out%29%29" class="RktStxLink" data-pltdoc="x">prefix-out</a></span><span class="hspace"> </span><span class="RktVar">prefix-id</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct-out%29%29" class="RktStxLink" data-pltdoc="x">struct-out</a></span><span class="hspace"> </span><span class="RktVar">id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-out%29%29" class="RktStxLink" data-pltdoc="x">combine-out</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._protect-out%29%29" class="RktStxLink" data-pltdoc="x">protect-out</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-template%29%29" class="RktStxLink" data-pltdoc="x">for-template</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-label%29%29" class="RktStxLink" data-pltdoc="x">for-label</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">derived-provide-spec</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">phase-level</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">exact-integer</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVal">#f</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Declares exports from a module. A <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span> form must appear in
a <a href="syntax-model.html#%28tech._module._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">module context</span></a> or a <a href="syntax-model.html#%28tech._module._begin._context%29" class="techoutside" data-pltdoc="x"><span class="techinside">module-begin context</span></a>.</div></p><p>A <span class="RktVar">provide-spec</span> indicates one or more bindings to provide.
For each exported binding, the external name is a symbol that can be
different from the symbolic form of the identifier that is bound
within the module. Also, each export is drawn from a particular
<a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a> and exported at the same <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a>; by
default, the relevant phase level is the number of
<span class="RktSym"><a href="begin.html#%28form._%28%28quote._~23~25kernel%29._begin-for-syntax%29%29" class="RktStxLink" data-pltdoc="x">begin-for-syntax</a></span> forms that enclose the <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span>
form.</p><p>The syntax of <span class="RktVar">provide-spec</span> can be extended by bindings to
<a href="stxtrans.html#%28tech._provide._transformer%29" class="techoutside" data-pltdoc="x"><span class="techinside">provide transformers</span></a> or <a href="stxtrans.html#%28tech._provide._pre._transformer%29" class="techoutside" data-pltdoc="x"><span class="techinside">provide pre-transformers</span></a>, such
as via <span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprovide-syntax..rkt%29._define-provide-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-provide-syntax</a></span>, but the pre-defined forms are
as follows.</p><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktVar">id</span></td></tr></table></blockquote><p> Exports <span class="RktVar">id</span>, which must be <a href="syntax-model.html#%28tech._bound%29" class="techoutside" data-pltdoc="x"><span class="techinside">bound</span></a>
within the module (i.e., either defined or imported) at the relevant
<a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a>. The symbolic form of <span class="RktVar">id</span> is used as the
external name, and the symbolic form of the defined or imported
identifier must match (otherwise, the external name could be
ambiguous).</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr></table></blockquote></td></tr></table><p>If <span class="RktVar">id</span> has a transformer binding to a <a href="syntax-model.html#%28tech._rename._transformer%29" class="techoutside" data-pltdoc="x"><span class="techinside">rename
transformer</span></a>, then the transformer affects the exported binding. See
<span class="RktSym"><a href="stxtrans.html#%28def._%28%28quote._~23~25kernel%29._make-rename-transformer%29%29" class="RktValLink" data-pltdoc="x">make-rename-transformer</a></span> for more information.</p></blockquote><blockquote class="leftindent"><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/private/base..rkt)._all-defined-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">all-defined-out</a></span></span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Exports all identifiers that are
defined at the relevant <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a> within the
exporting module, and that have the same lexical context as the
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span><span class="RktPn">)</span> form, excluding bindings to <a href="syntax-model.html#%28tech._rename._transformer%29" class="techoutside" data-pltdoc="x"><span class="techinside">rename
transformers</span></a> where the target identifier has the
<span class="RktVal">'</span><span class="RktVal">not-provide-all-defined</span> <a href="stxprops.html#%28tech._syntax._property%29" class="techoutside" data-pltdoc="x"><span class="techinside">syntax property</span></a>. The
external name for each identifier is the symbolic form of the
identifier. Only identifiers accessible from the lexical context of
the <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span><span class="RktPn">)</span> form are included; that is,
macro-introduced imports are not re-exported, unless the
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span><span class="RktPn">)</span> form was introduced at the same time.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._all-from-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-from-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">all-from-out</a></span></span><span class="hspace"> </span><span class="RktVar">module-path</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Exports all identifiers
that are imported into the exporting module using a
<span class="RktSym">require-spec</span> built on each <span class="RktVar">module-path</span> (see
<a href="" data-pltdoc="x">Importing and Exporting: <span class="RktSym"><span class="RktStxLink">require</span></span> and <span class="RktSym"><span class="RktStxLink">provide</span></span></a>) with no <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase-level</span></a> shift. The symbolic
name for export is derived from the name that is bound within the
module, as opposed to the symbolic name of the export from each
<span class="RktVar">module-path</span>. Only identifiers accessible from the lexical
context of the <span class="RktVar">module-path</span> are included; that is,
macro-introduced imports are not re-exported, unless the
<span class="RktVar">module-path</span> was introduced at the same time.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">hen-house</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-from-out%29%29" class="RktStxLink" data-pltdoc="x">all-from-out</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">hen-house</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._rename-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">rename-out</a></span></span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktVar">orig-id</span><span class="hspace"> </span><span class="RktVar">export-id</span><span class="RktPn">]</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Exports each
<span class="RktVar">orig-id</span>, which must be <a href="syntax-model.html#%28tech._bound%29" class="techoutside" data-pltdoc="x"><span class="techinside">bound</span></a> within the module at
the relevant <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a>. The symbolic name for each export is
<span class="RktVar">export-id</span> instead <span class="RktSym">orig-d</span>.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-out%29%29" class="RktStxLink" data-pltdoc="x">rename-out</a></span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktSym"><a href="pairs.html#%28def._%28%28lib._racket%2Flist..rkt%29._count%29%29" class="RktValLink" data-pltdoc="x">count</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="RktPn">]</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym"><a href="pairs.html#%28def._%28%28lib._racket%2Flist..rkt%29._count%29%29" class="RktValLink" data-pltdoc="x">count</a></span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym"><a href="pairs.html#%28def._%28%28lib._racket%2Flist..rkt%29._count%29%29" class="RktValLink" data-pltdoc="x">count</a></span></td></tr><tr><td><p><span class="RktErr">count: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._except-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">except-out</a></span></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Like the
first <span class="RktVar">provide-spec</span>, but omitting the bindings listed in each
subsequent <span class="RktVar">provide-spec</span>. If one of the latter bindings is
not included in the initial <span class="RktVar">provide-spec</span>, a syntax error is
reported. The symbolic export name information in the latter
<span class="RktVar">provide-spec</span>s is ignored; only the bindings are used.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._except-out%29%29" class="RktStxLink" data-pltdoc="x">except-out</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym">num-chicks</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-chicks</span><span class="hspace"> </span><span class="RktVal">3</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-chicks</span></td></tr><tr><td><p><span class="RktErr">num-chicks: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._prefix-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">prefix-out</a></span></span><span class="hspace"> </span><span class="RktVar">prefix-id</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktVar">provide-spec</span>, but with each symbolic export name from
<span class="RktVar">provide-spec</span> prefixed with <span class="RktVar">prefix-id</span>.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prefix-out%29%29" class="RktStxLink" data-pltdoc="x">prefix-out</a></span><span class="hspace"> </span><span class="RktSym">chicken:</span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">chicken:num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._struct-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">struct-out</a></span></span><span class="hspace"> </span><span class="RktVar">id</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Exports the bindings associated with a
structure type <span class="RktVar">id</span>. Typically, <span class="RktVar">id</span> is bound with
<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="RktSym">....</span><span class="RktPn">)</span>; more generally, <span class="RktVar">id</span> must have a
<a href="syntax-model.html#%28tech._transformer._binding%29" class="techoutside" data-pltdoc="x"><span class="techinside">transformer binding</span></a> of structure-type information at the relevant
<a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase level</span></a>; see <a href="structinfo.html" data-pltdoc="x">Structure Type Transformer Binding</a>. Furthermore, for
each identifier mentioned in the structure-type information, the
enclosing module must define or import one identifier that is
<span class="RktSym"><a href="stxcmp.html#%28def._%28%28quote._~23~25kernel%29._free-identifier~3d~3f%29%29" class="RktValLink" data-pltdoc="x">free-identifier=?</a></span>. If the structure-type information
includes a super-type identifier, and if the identifier has a
<a href="syntax-model.html#%28tech._transformer._binding%29" class="techoutside" data-pltdoc="x"><span class="techinside">transformer binding</span></a> of structure-type information, the
accessor and mutator bindings of the super-type are <span style="font-style: italic">not</span>
included by <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct-out%29%29" class="RktStxLink" data-pltdoc="x">struct-out</a></span> for export.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct-out%29%29" class="RktStxLink" data-pltdoc="x">struct-out</a></span><span class="hspace"> </span><span class="RktSym">egg</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><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"> </span><span class="RktSym">egg</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">color</span><span class="hspace"> </span><span class="RktSym">wt</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym">egg-color</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">egg</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">blue</span><span class="hspace"> </span><span class="RktVal">10</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktRes">'blue</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._combine-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">combine-out</a></span></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> The union of the
<span class="RktVar">provide-spec</span>s.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._combine-out%29%29" class="RktStxLink" data-pltdoc="x">combine-out</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktSym">num-chicks</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-chicks</span><span class="hspace"> </span><span class="RktVal">1</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-eggs</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">num-chicks</span></td></tr><tr><td><p><span class="RktRes">1</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><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/private/base..rkt)._protect-out))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._protect-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">protect-out</a></span></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Like the union of the
<span class="RktVar">provide-spec</span>s, except that the exports are protected;
requiring modules may refer to these bindings, but may not extract
these bindings from macro expansions or access them via <span class="RktSym"><a href="eval.html#%28def._%28%28quote._~23~25kernel%29._eval%29%29" class="RktValLink" data-pltdoc="x">eval</a></span> without
access privileges.
For more details, see <a href="modprotect.html" data-pltdoc="x">Code Inspectors</a>. The <span class="RktVar">provide-spec</span> must specify only
bindings that are defined within the exporting module.</div></p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._protect-out%29%29" class="RktStxLink" data-pltdoc="x">protect-out</a></span><span class="hspace"> </span><span class="RktSym">num-chicks</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">num-chicks</span><span class="hspace"> </span><span class="RktVal">3</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">weak-inspector</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._make-inspector%29%29" class="RktValLink" data-pltdoc="x">make-inspector</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="modprotect.html#%28def._%28%28quote._~23~25kernel%29._current-code-inspector%29%29" class="RktValLink" data-pltdoc="x">current-code-inspector</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">weak-eval</span><span class="hspace"> </span><span class="RktSym">x</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="parameters.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._parameterize%29%29" class="RktStxLink" data-pltdoc="x">parameterize</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym"><a href="modprotect.html#%28def._%28%28quote._~23~25kernel%29._current-code-inspector%29%29" class="RktValLink" data-pltdoc="x">current-code-inspector</a></span><span class="hspace"> </span><span class="RktSym">weak-inspector</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">weak-ns</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Namespaces.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._make-base-namespace%29%29" class="RktValLink" data-pltdoc="x">make-base-namespace</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Namespaces.html#%28def._%28%28quote._~23~25kernel%29._namespace-attach-module%29%29" class="RktValLink" data-pltdoc="x">namespace-attach-module</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Namespaces.html#%28def._%28%28quote._~23~25kernel%29._current-namespace%29%29" class="RktValLink" data-pltdoc="x">current-namespace</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">'</span><span class="RktVal">nest</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym">weak-ns</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="parameters.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._parameterize%29%29" class="RktStxLink" data-pltdoc="x">parameterize</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym"><a href="Namespaces.html#%28def._%28%28quote._~23~25kernel%29._current-namespace%29%29" class="RktValLink" data-pltdoc="x">current-namespace</a></span><span class="hspace"> </span><span class="RktSym">weak-ns</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Namespaces.html#%28def._%28%28quote._~23~25kernel%29._namespace-require%29%29" class="RktValLink" data-pltdoc="x">namespace-require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="eval.html#%28def._%28%28quote._~23~25kernel%29._eval%29%29" class="RktValLink" data-pltdoc="x">eval</a></span><span class="hspace"> </span><span class="RktSym">x</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="pairs.html#%28def._%28%28quote._~23~25kernel%29._list%29%29" class="RktValLink" data-pltdoc="x">list</a></span><span class="hspace"> </span><span class="RktSym">num-eggs</span><span class="hspace"> </span><span class="RktSym">num-chicks</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktRes">'(2 3)</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym">weak-eval</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">num-eggs</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym">weak-eval</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">num-chicks</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktErr">num-chicks: access disallowed by code inspector to protected</span></p></td></tr><tr><td><p><span class="RktErr">variable from module: 'nest</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">in: num-chicks</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p> Like the union of the
<span class="RktVar">provide-spec</span>s, but adjusted to apply to the <a href="syntax-model.html#%28tech._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">phase
level</span></a> specified by <span class="RktVar">phase-level</span> relative to the current
phase level (where <span class="RktVal">#f</span> corresponds to the <a href="syntax-model.html#%28tech._label._phase._level%29" class="techoutside" data-pltdoc="x"><span class="techinside">label phase
level</span></a>). In particular, an <span class="RktVar">id</span> or <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-out%29%29" class="RktStxLink" data-pltdoc="x">rename-out</a></span> form
as a <span class="RktVar">provide-spec</span> refers to a binding at
<span class="RktVar">phase-level</span> relative to the current level, an
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span> exports only definitions at
<span class="RktVar">phase-level</span> relative to the current phase level, and an
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-from-out%29%29" class="RktStxLink" data-pltdoc="x">all-from-out</a></span> exports bindings imported with a shift by
<span class="RktVar">phase-level</span>.</p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="begin.html#%28form._%28%28quote._~23~25kernel%29._begin-for-syntax%29%29" class="RktStxLink" data-pltdoc="x">begin-for-syntax</a></span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">chickens</span><span class="hspace"> </span><span class="RktVal">3</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym">chickens</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-syntax</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">test-eggs</span><span class="hspace"> </span><span class="RktSym">stx</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Writing.html#%28def._%28%28quote._~23~25kernel%29._printf%29%29" class="RktValLink" data-pltdoc="x">printf</a></span><span class="hspace"> </span><span class="RktVal">"Eggs are ~a\n"</span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktRdr">#'</span><span class="RktVal">0</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym">test-eggs</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktOut">Eggs are 2</span></p></td></tr><tr><td><p><span class="RktRes">0</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">chickens</span></td></tr><tr><td><p><span class="RktRes">3</span></p></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">broken-nest</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">chickens</span><span class="hspace"> </span><span class="RktVal">3</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym">chickens</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p><span class="RktErr">eval:7:0: module: provided identifier not defined or</span></p></td></tr><tr><td><p><span class="RktErr">imported for phase 1</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">at: eggs</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">in: (#%module-begin (do-wrapping-module-begin print-result</span></p></td></tr><tr><td><p><span class="RktErr">(module configure-runtime (quote #%kernel) (#%require</span></p></td></tr><tr><td><p><span class="RktErr">racket/runtime-config) (configure #f)))</span></p></td></tr><tr><td><p><span class="RktErr">(do-wrapping-module-begin print-result (define eggs 2))</span></p></td></tr><tr><td><p><span class="RktErr">(do-wrapping-module-begin print-result (define c...</span></p></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">nest2</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="begin.html#%28form._%28%28quote._~23~25kernel%29._begin-for-syntax%29%29" class="RktStxLink" data-pltdoc="x">begin-for-syntax</a></span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="hspace"> </span><span class="RktVal">2</span><span class="hspace"> </span><span class="RktSym">racket/base</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">nest2</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-syntax</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">test</span><span class="hspace"> </span><span class="RktSym">stx</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-syntax</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">show-eggs</span><span class="hspace"> </span><span class="RktSym">stx</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Writing.html#%28def._%28%28quote._~23~25kernel%29._printf%29%29" class="RktValLink" data-pltdoc="x">printf</a></span><span class="hspace"> </span><span class="RktVal">"Eggs are ~a\n"</span><span class="hspace"> </span><span class="RktSym">eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktRdr">#'</span><span class="RktVal">0</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="begin.html#%28form._%28%28quote._~23~25kernel%29._begin%29%29" class="RktStxLink" data-pltdoc="x">begin</a></span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">show-eggs</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktRdr">#'</span><span class="RktVal">0</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p><span class="RktOut">Eggs are 2</span></p></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym">test</span><span class="RktPn">)</span></td></tr><tr><td><p><span class="RktRes">0</span></p></td></tr></table></blockquote></td></tr></table></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Same as
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="stt"> </span><span class="RktVal">1</span><span class="stt"> </span><span class="RktVar">provide-spec</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>.</p></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-template%29%29" class="RktStxLink" data-pltdoc="x">for-template</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Same as
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="stt"> </span><span class="RktVal"><span class="nobreak">-1</span></span><span class="stt"> </span><span class="RktVar">provide-spec</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>.</p></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-label%29%29" class="RktStxLink" data-pltdoc="x">for-label</a></span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Same as
<span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxLink" data-pltdoc="x">for-meta</a></span><span class="stt"> </span><span class="RktVal">#f</span><span class="stt"> </span><span class="RktVar">provide-spec</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>.</p></blockquote><blockquote class="leftindent"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><span class="RktVar">derived-provide-spec</span></td></tr></table></blockquote><p>See <span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprovide-syntax..rkt%29._define-provide-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-provide-syntax</a></span>
for information on expanding the set of <span class="RktVar">provide-spec</span> forms.</p></blockquote><p>Each export specified within a module must have a distinct symbolic
export name, though the same binding can be specified with the
multiple symbolic names.</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/private/base..rkt)._for-meta))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-meta%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">for-meta</a></span></span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">See <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> and <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</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/private/base..rkt)._for-syntax))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">for-syntax</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">See <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> and <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</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/private/base..rkt)._for-template))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-template%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">for-template</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">See <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> and <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</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/private/base..rkt)._for-label))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-label%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">for-label</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">See <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> and <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</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"><span class="RktPn">(</span><a name="(form._((quote._~23~25kernel)._~23~25require))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25require%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">#%require</a></span></span><span class="hspace"> </span><span class="RktVar">raw-require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="specgrammar"><tr><td align="right" valign="baseline"><span class="RktVar">raw-require-spec</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">phaseless-spec</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">for-meta</span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">for-syntax</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">for-template</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">for-label</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">just-meta</span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">raw-require-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">phase-level</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">exact-integer</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVal">#f</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">phaseless-spec</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">raw-module-path</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">only</span><span class="hspace"> </span><span class="RktVar">raw-module-path</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">prefix</span><span class="hspace"> </span><span class="RktVar">prefix-id</span><span class="hspace"> </span><span class="RktVar">raw-module-path</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">all-except</span><span class="hspace"> </span><span class="RktVar">raw-module-path</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym">prefix-all-except</span><span class="hspace"> </span><span class="RktVar">prefix-id</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">raw-module-path</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">rename</span><span class="hspace"> </span><span class="RktVar">raw-module-path</span><span class="hspace"> </span><span class="RktVar">local-id</span><span class="hspace"> </span><span class="RktVar">exported-id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">raw-module-path</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">raw-root-module-path</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">submod</span><span class="hspace"> </span><span class="RktVar">raw-root-module-path</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=syntax&rel=stxparse-patterns.html%23%2528form._%2528%2528lib._syntax%252Fparse..rkt%2529._......%252B%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...+</a></span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">submod</span><span class="hspace"> </span><span class="RktVal">"."</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=syntax&rel=stxparse-patterns.html%23%2528form._%2528%2528lib._syntax%252Fparse..rkt%2529._......%252B%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...+</a></span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">raw-root-module-path</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">quote</span><span class="hspace"> </span><span class="RktVar">id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">rel-string</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">lib</span><span class="hspace"> </span><span class="RktVar">rel-string</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">id</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">file</span><span class="hspace"> </span><span class="RktVar">string</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym">planet</span><span class="hspace"> </span><span class="RktVar">rel-string</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">user-string</span><span class="hspace"> </span><span class="RktVar">pkg-string</span><span class="hspace"> </span><span class="RktVar">vers</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">literal-path</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">The primitive import form, to which <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> expands. A
<span class="RktVar">raw-require-spec</span> is similar to a <span class="RktVar">require-spec</span> in a
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> form, except that the syntax is more constrained, not
composable, and not extensible. Also, sub-form names like
<span class="RktSym">for-syntax</span> and <span class="RktSym">lib</span> are recognized
symbolically, instead of via bindings. Although not formalized in the
grammar above, a <span class="RktSym">just-meta</span> form cannot appear within a
<span class="RktSym">just-meta</span> form.</div></p><p>Each <span class="RktVar">raw-require-spec</span> corresponds to the obvious
<span class="RktVar">require-spec</span>, but the <span class="RktSym">rename</span> sub-form has the
identifiers in reverse order compared to <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._rename-in%29%29" class="RktStxLink" data-pltdoc="x">rename-in</a></span>.</p><p>For most <span class="RktVar">raw-require-spec</span>s, the lexical context of the
<span class="RktVar">raw-require-spec</span> determines the context of introduced
identifiers. The exception is the <span class="RktSym">rename</span> sub-form,
where the lexical context of the <span class="RktVar">local-id</span> is preserved.</p><p>A <span class="RktVar">literal-path</span> as a <span class="RktVar">raw-root-module-path</span> corresponds
to a path in the sense of <span class="RktSym"><a href="Manipulating_Paths.html#%28def._%28%28quote._~23~25kernel%29._path~3f%29%29" class="RktValLink" data-pltdoc="x">path?</a></span>. Since path values are never
produced by <span class="RktSym"><a href="Reading.html#%28def._%28%28quote._~23~25kernel%29._read-syntax%29%29" class="RktValLink" data-pltdoc="x">read-syntax</a></span>, they appear only in programmatically
constructed expressions. They also appear naturally as arguments to
functions such as <span class="RktSym"><a href="Namespaces.html#%28def._%28%28quote._~23~25kernel%29._namespace-require%29%29" class="RktValLink" data-pltdoc="x">namespace-require</a></span>, with otherwise take a
quoted <span class="RktSym">raw-module-spec</span>.</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._((quote._~23~25kernel)._~23~25provide))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25provide%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">#%provide</a></span></span><span class="hspace"> </span><span class="RktVar">raw-provide-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="specgrammar"><tr><td align="right" valign="baseline"><span class="RktVar">raw-provide-spec</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">phaseless-spec</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">for-meta</span><span class="hspace"> </span><span class="RktVar">phase-level</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">for-syntax</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">for-label</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">protect</span><span class="hspace"> </span><span class="RktVar">raw-provide-spec</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">phase-level</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">exact-integer</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVal">#f</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">phaseless-spec</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">id</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">rename</span><span class="hspace"> </span><span class="RktVar">local-id</span><span class="hspace"> </span><span class="RktVar">export-id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">struct</span><span class="hspace"> </span><span class="RktVar">struct-id</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">field-id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">all-from</span><span class="hspace"> </span><span class="RktVar">raw-module-path</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">all-from-except</span><span class="hspace"> </span><span class="RktVar">raw-module-path</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">all-defined</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">all-defined-except</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">prefix-all-defined</span><span class="hspace"> </span><span class="RktVar">prefix-id</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">prefix-all-defined-except</span><span class="hspace"> </span><span class="RktVar">prefix-id</span><span class="hspace"> </span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">protect</span><span class="hspace"> </span><span class="RktVar">phaseless-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktSym">expand</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">id</span><span class="hspace"> </span><span class="RktPn">. </span><span class="RktVar">datum</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">The primitive export form, to which <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span> expands. A
<span class="RktVar">raw-module-path</span> is as for <span class="RktSym"><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25require%29%29" class="RktStxLink" data-pltdoc="x">#%require</a></span>. A
<span class="RktSym">protect</span> sub-form cannot appear within a
<span class="RktSym">protect</span> sub-form.</div></p><p>Like <span class="RktSym"><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25require%29%29" class="RktStxLink" data-pltdoc="x">#%require</a></span>, the sub-form keywords for <span class="RktSym"><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25provide%29%29" class="RktStxLink" data-pltdoc="x">#%provide</a></span>
are recognized symbolically, and nearly every
<span class="RktVar">raw-provide-spec</span> has an obvious equivalent
<span class="RktVar">provide-spec</span> via <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span>, with the exception of the
<span class="RktSym">struct</span> and <span class="RktSym">expand</span> sub-forms.</p><p>A <span class="RktPn">(</span><span class="RktSym">struct</span><span class="stt"> </span><span class="RktVar">struct-id</span><span class="stt"> </span><span class="RktPn">(</span><span class="RktVar">field-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><span class="RktPn">)</span>
sub-form expands to <span class="RktVar">struct-id</span>,
<span class="RktSym">make-</span><span class="RktVar">struct-id</span>,
<span class="RktSym">struct:</span><span class="RktVar">struct-id</span>,
<span class="RktVar">struct-id</span><span class="RktSym">?</span>,
<span class="RktVar">struct-id</span><span class="RktSym">-</span><span class="RktVar">field-id</span> for each
<span class="RktVar">field-id</span>, and
<span class="RktSym">set-</span><span class="RktVar">struct-id</span><span class="RktSym">-</span><span class="RktVar">field-id</span><span class="RktSym">!</span>
for each <span class="RktVar">field-id</span>. The lexical context of the
<span class="RktVar">struct-id</span> is used for all generated identifiers.</p><p>Unlike <span class="RktSym"><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25require%29%29" class="RktStxLink" data-pltdoc="x">#%require</a></span>, the <span class="RktSym"><a href="#%28form._%28%28quote._~23~25kernel%29._~23~25provide%29%29" class="RktStxLink" data-pltdoc="x">#%provide</a></span> form is
macro-extensible via an explicit <span class="RktSym">expand</span> sub-form; the
<span class="RktPn">(</span><span class="RktVar">id</span><span class="stt"> </span><span class="RktPn">. </span><span class="RktVar">datum</span><span class="RktPn">)</span> part is locally expanded as an expression (even
though it is not actually an expression), stopping when a
<span class="RktSym"><a href="begin.html#%28form._%28%28quote._~23~25kernel%29._begin%29%29" class="RktStxLink" data-pltdoc="x">begin</a></span> form is produced; if the expansion result is
<span class="RktPn">(</span><span class="RktSym"><a href="begin.html#%28form._%28%28quote._~23~25kernel%29._begin%29%29" class="RktStxLink" data-pltdoc="x">begin</a></span><span class="stt"> </span><span class="RktVar">raw-provide-spec</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>, it is spliced in place of the
<span class="RktSym">expand</span> form, otherwise a syntax error is reported. The
<span class="RktSym">expand</span> sub-form is not normally used directly; it
provides a hook for implementing <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span> and <a href="stxtrans.html#%28tech._provide._transformer%29" class="techoutside" data-pltdoc="x"><span class="techinside">provide
transformers</span></a>.</p><p>The <span class="RktSym">all-from</span> and <span class="RktSym">all-from-except</span> forms
re-export only identifiers that are accessible in lexical context of
the <span class="RktSym">all-from</span> or <span class="RktSym">all-from-except</span> form
itself. That is, macro-introduced imports are not re-exported, unless
the <span class="RktSym">all-from</span> or <span class="RktSym">all-from-except</span> form was
introduced at the same time. Similarly, <span class="RktSym">all-defined</span> and
its variants export only definitions accessible from the lexical
context of the <span class="RktVar">phaseless-spec</span> form.</p><h5 x-source-module="(lib "scribblings/reference/reference.scrbl")" x-part-tag=""Additional_require_Forms"">3.2.1<tt> </tt><a name="(part._.Additional_require_.Forms)"></a><a name="(mod-path._racket/require)"></a>Additional <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span> Forms</h5><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._racket%2Frequire%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/require</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller"> package:</span> <span class="stt">base</span></span></td></tr></table></div><div class="SIntrapara">The bindings documented in this section are provided by the <a href="#%28mod-path._racket%2Frequire%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/require</span></a> library, not <a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/base</span></a> or <a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket</span></a>.</div></p><p>The following forms support more complex selection and manipulation of
sets of imported identifiers.</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/require..rkt)._matching-identifiers-in))"></a><span title="Provided from: racket/require | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._matching-identifiers-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">matching-identifiers-in</a></span></span><span class="hspace"> </span><span class="RktVar">regexp</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktVar">require-spec</span>, but including only imports whose names
match <span class="RktVar">regexp</span>. The <span class="RktVar">regexp</span> must be a literal regular
expression (see <a href="regexp.html" data-pltdoc="x">Regular Expressions</a>).</div></p><p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">zoo</span><span class="hspace"> </span><span class="RktSym">racket/base</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">tunafish</span><span class="hspace"> </span><span class="RktSym">swordfish</span><span class="hspace"> </span><span class="RktSym">blowfish</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktSym">monkey</span><span class="hspace"> </span><span class="RktSym">lizard</span><span class="hspace"> </span><span class="RktSym">ant</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">tunafish</span><span class="hspace"> </span><span class="RktVal">1</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">swordfish</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">blowfish</span><span class="hspace"> </span><span class="RktVal">3</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">monkey</span><span class="hspace"> </span><span class="RktVal">4</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">lizard</span><span class="hspace"> </span><span class="RktVal">5</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">ant</span><span class="hspace"> </span><span class="RktVal">6</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/require</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._matching-identifiers-in%29%29" class="RktStxLink" data-pltdoc="x">matching-identifiers-in</a></span><span class="hspace"> </span><span class="RktVal">#rx"\\w*fish"</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">zoo</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">tunafish</span></td></tr><tr><td><p><span class="RktRes">1</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">swordfish</span></td></tr><tr><td><p><span class="RktRes">2</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">blowfish</span></td></tr><tr><td><p><span class="RktRes">3</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">monkey</span></td></tr><tr><td><p><span class="RktErr">monkey: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr></table></blockquote></td></tr></table></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/require..rkt)._subtract-in))"></a><span title="Provided from: racket/require | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._subtract-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">subtract-in</a></span></span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="hspace"> </span><span class="RktVar">subtracted-spec</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktVar">require-spec</span>, but omitting those imports that would be
imported by one of the <span class="RktVar">subtracted-spec</span>s.</div></p><p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Examples:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">earth</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">land</span><span class="hspace"> </span><span class="RktSym">sea</span><span class="hspace"> </span><span class="RktSym">air</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">land</span><span class="hspace"> </span><span class="RktVal">1</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">sea</span><span class="hspace"> </span><span class="RktVal">2</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">air</span><span class="hspace"> </span><span class="RktVal">3</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">mars</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">aliens</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym">aliens</span><span class="hspace"> </span><span class="RktVal">4</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x">module</a></span><span class="hspace"> </span><span class="RktSym">solar-system</span><span class="hspace"> </span><span class="RktSym">racket</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">earth</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">mars</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-from-out%29%29" class="RktStxLink" data-pltdoc="x">all-from-out</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">earth</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-from-out%29%29" class="RktStxLink" data-pltdoc="x">all-from-out</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">mars</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/require</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._subtract-in%29%29" class="RktStxLink" data-pltdoc="x">subtract-in</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">solar-system</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">earth</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr><tr><td><span class="stt">> </span><span class="RktSym">land</span></td></tr><tr><td><p><span class="RktErr">land: undefined;</span></p></td></tr><tr><td><p><span class="RktErr"></span><span class="hspace"> </span><span class="RktErr">cannot reference undefined identifier</span></p></td></tr><tr><td><span class="stt">> </span><span class="RktSym">aliens</span></td></tr><tr><td><p><span class="RktRes">4</span></p></td></tr></table></blockquote></td></tr></table></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/require..rkt)._filtered-in))"></a><span title="Provided from: racket/require | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._filtered-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">filtered-in</a></span></span><span class="hspace"> </span><span class="RktVar">proc-expr</span><span class="hspace"> </span><span class="RktVar">require-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Applies an arbitrary transformation on the import names (as strings)
of <span class="RktVar">require-spec</span>. The <span class="RktVar">proc-expr</span> must evaluate at
expansion time to a single-argument procedure, which is applied on
each of the names from <span class="RktVar">require-spec</span>. For each name, the
procedure must return either a string for the import’s new name or
<span class="RktVal">#f</span> to exclude the import.</div></p><p><div class="SIntrapara">For example,
</div><div class="SIntrapara"><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._filtered-in%29%29" class="RktStxLink" data-pltdoc="x">filtered-in</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="lambda.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lambda%29%29" class="RktStxLink" data-pltdoc="x">lambda</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">name</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="if.html#%28form._%28%28lib._racket%2Fprivate%2Fletstx-scheme..rkt%29._and%29%29" class="RktStxLink" data-pltdoc="x">and</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._regexp-match~3f%29%29" class="RktValLink" data-pltdoc="x">regexp-match?</a></span><span class="hspace"> </span><span class="RktVal">#rx"^[a-z-]+$"</span><span class="hspace"> </span><span class="RktSym">name</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._regexp-replace%29%29" class="RktValLink" data-pltdoc="x">regexp-replace</a></span><span class="hspace"> </span><span class="RktVal">#rx"-"</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="strings.html#%28def._%28%28quote._~23~25kernel%29._string-titlecase%29%29" class="RktValLink" data-pltdoc="x">string-titlecase</a></span><span class="hspace"> </span><span class="RktSym">name</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">""</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktSym">racket/base</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">imports only bindings from <a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/base</span></a> that match the
pattern <span class="RktVal">#rx"^[a-z-]+$"</span>, and it converts the names to “camel case.”</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"><span class="RktPn">(</span><a name="(form._((lib._racket/require..rkt)._path-up))"></a><span title="Provided from: racket/require | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._path-up%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">path-up</a></span></span><span class="hspace"> </span><span class="RktVar">rel-string</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Specifies paths to modules named by the <span class="RktVar">rel-string</span>s similar
to using the <span class="RktVar">rel-string</span>s directly, except that if a required
module file is not found relative to the enclosing source, it is
searched for in the parent directory, and then in the grand-parent
directory, etc., all the way to the root directory. The discovered
path relative to the enclosing source becomes part of the expanded
form.</div></p><p><div class="SIntrapara">This form is useful in setting up a “project environment.” For
example, using the following <span class="stt">"config.rkt"</span> file in the root
directory of your project:
</div><div class="SIntrapara"><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=Module_Syntax.html%23%2528part._hash-lang%2529&version=6.1" class="RktModLink Sq" data-pltdoc="x"><span class="RktMod">#lang</span></a><span class="hspace"> </span><a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/base</span></a></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/require-syntax</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for-syntax%29%29" class="RktStxLink" data-pltdoc="x">for-syntax</a></span><span class="hspace"> </span><span class="RktVal">"utils/in-here.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">utils-in</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Frequire-syntax..rkt%29._define-require-syntax%29%29" class="RktStxLink" data-pltdoc="x">define-require-syntax</a></span><span class="hspace"> </span><span class="RktSym">utils-in</span><span class="hspace"> </span><span class="RktSym">in-here-transformer</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">and using <span class="stt">"utils/in-here.rkt"</span> under the same root directory:
</div><div class="SIntrapara"><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=guide&rel=Module_Syntax.html%23%2528part._hash-lang%2529&version=6.1" class="RktModLink Sq" data-pltdoc="x"><span class="RktMod">#lang</span></a><span class="hspace"> </span><a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/base</span></a></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/runtime-path</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktSym">in-here-transformer</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="Filesystem.html#%28form._%28%28lib._racket%2Fruntime-path..rkt%29._define-runtime-path%29%29" class="RktStxLink" data-pltdoc="x">define-runtime-path</a></span><span class="hspace"> </span><span class="RktSym">here</span><span class="hspace"> </span><span class="RktVal">"."</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="define.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._define%29%29" class="RktStxLink" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">in-here-transformer</span><span class="hspace"> </span><span class="RktSym">stx</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="stx-patterns.html#%28form._%28%28lib._racket%2Fprivate%2Fstxcase-scheme..rkt%29._syntax-case%29%29" class="RktStxLink" data-pltdoc="x">syntax-case</a></span><span class="hspace"> </span><span class="RktSym">stx</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktSym"><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="hspace"> </span><span class="RktSym">sym</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="stxops.html#%28def._%28%28lib._racket%2Fprivate%2Fstx..rkt%29._identifier~3f%29%29" class="RktValLink" data-pltdoc="x">identifier?</a></span><span class="hspace"> </span><span class="RktRdr">#'</span><span class="RktSym">sym</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="let.html#%28form._%28%28lib._racket%2Fprivate%2Fletstx-scheme..rkt%29._let%29%29" class="RktStxLink" data-pltdoc="x">let</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym">path</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Manipulating_Paths.html#%28def._%28%28quote._~23~25kernel%29._build-path%29%29" class="RktValLink" data-pltdoc="x">build-path</a></span><span class="hspace"> </span><span class="RktSym">here</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="Writing.html#%28def._%28%28quote._~23~25kernel%29._format%29%29" class="RktValLink" data-pltdoc="x">format</a></span><span class="hspace"> </span><span class="RktVal">"~a.rkt"</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="stxops.html#%28def._%28%28quote._~23~25kernel%29._syntax-e%29%29" class="RktValLink" data-pltdoc="x">syntax-e</a></span><span class="hspace"> </span><span class="RktRdr">#'</span><span class="RktSym">sym</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="stxops.html#%28def._%28%28quote._~23~25kernel%29._datum-~3esyntax%29%29" class="RktValLink" data-pltdoc="x">datum->syntax</a></span><span class="hspace"> </span><span class="RktSym">stx</span><span class="hspace"> </span><span class="RktVal">`</span><span class="RktVal">(</span><span class="RktVal">file</span><span class="hspace"> </span><span class="RktRdr">,</span><span class="RktPn">(</span><span class="RktSym"><a href="Manipulating_Paths.html#%28def._%28%28quote._~23~25kernel%29._path-~3estring%29%29" class="RktValLink" data-pltdoc="x">path->string</a></span><span class="hspace"> </span><span class="RktSym">path</span><span class="RktPn">)</span><span class="RktVal">)</span><span class="hspace"> </span><span class="RktSym">stx</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">then <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._path-up%29%29" class="RktStxLink" data-pltdoc="x">path-up</a></span> works for any other module under the project
directory to find <span class="stt">"config.rkt"</span>:
</div><div class="SIntrapara"><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/require</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._path-up%29%29" class="RktStxLink" data-pltdoc="x">path-up</a></span><span class="hspace"> </span><span class="RktVal">"config.rkt"</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">utils-in</span><span class="hspace"> </span><span class="RktSym">foo</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Note that the order of requires in the example is important, as each of
the first two bind the identifier used in the following.</div></p><p><div class="SIntrapara">An alternative in this scenario is to use <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._path-up%29%29" class="RktStxLink" data-pltdoc="x">path-up</a></span> directly to
find the utility module:
</div><div class="SIntrapara"><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/require</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._path-up%29%29" class="RktStxLink" data-pltdoc="x">path-up</a></span><span class="hspace"> </span><span class="RktVal">"utils/foo.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">but then sub-directories that are called
<span class="stt">"utils"</span> override the one in the project’s root.
In other words, the previous method requires only a single unique name.</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"><span class="RktPn">(</span><a name="(form._((lib._racket/require..rkt)._multi-in))"></a><span title="Provided from: racket/require | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">multi-in</a></span></span><span class="hspace"> </span><span class="RktVar">subs</span><span class="hspace"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=syntax&rel=stxparse-patterns.html%23%2528form._%2528%2528lib._syntax%252Fparse..rkt%2529._......%252B%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...+</a></span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="specgrammar"><tr><td align="right" valign="baseline"><span class="RktVar">subs</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">sub-path</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">(</span><span class="RktVar">sub-path</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td></tr><tr><td align="right" valign="baseline"><span class="RktVar">sub-path</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">rel-string</span></td></tr><tr><td align="right" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">|</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktVar">id</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Specifies multiple files to be required from a hierarchy of
directories or collections. The set of required module paths is computed
as the Cartesian product of the <span class="RktVar">subs</span> groups, where each
<span class="RktVar">sub-path</span> is combined with other <span class="RktVar">sub-path</span>s in order
using a <span class="RktInBG"><span class="hspace"></span><span class="RktIn">/</span><span class="hspace"></span></span> separator. A <span class="RktVar">sub-path</span> as a <span class="RktVar">subs</span>
is equivalent to <span class="RktPn">(</span><span class="RktVar">sub-path</span><span class="RktPn">)</span>. All <span class="RktVar">sub-path</span>s in a given
<span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="RktStxLink" data-pltdoc="x">multi-in</a></span> form must be either strings or identifiers.</div></p><p>Examples:</p><p><table cellspacing="0" cellpadding="0"><tr><td><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="RktStxLink" data-pltdoc="x">multi-in</a></span><span class="hspace"> </span><span class="RktSym">racket</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">dict</span><span class="hspace"> </span><span class="RktSym">list</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td valign="baseline"><p><span class="hspace"> </span> is equivalent to<span class="hspace"> </span></p></td><td valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">racket/dict</span><span class="hspace"> </span><span class="RktSym">racket/list</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p> </p></td></tr><tr><td><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="RktStxLink" data-pltdoc="x">multi-in</a></span><span class="hspace"> </span><span class="RktVal">"math"</span><span class="hspace"> </span><span class="RktVal">"matrix"</span><span class="hspace"> </span><span class="RktVal">"utils.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td valign="baseline"><p><span class="hspace"> </span> is equivalent to<span class="hspace"> </span></p></td><td valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">"math/matrix/utils.rkt"</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p> </p></td></tr><tr><td><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="RktStxLink" data-pltdoc="x">multi-in</a></span><span class="hspace"> </span><span class="RktVal">"utils"</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVal">"math.rkt"</span><span class="hspace"> </span><span class="RktVal">"matrix.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td valign="baseline"><p><span class="hspace"> </span> is equivalent to<span class="hspace"> </span></p></td><td valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">"utils/math.rkt"</span><span class="hspace"> </span><span class="RktVal">"utils/matrix.rkt"</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p> </p></td></tr><tr><td><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="RktStxLink" data-pltdoc="x">multi-in</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVal">"math"</span><span class="hspace"> </span><span class="RktVal">"matrix"</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">"utils.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td valign="baseline"><p><span class="hspace"> </span> is equivalent to<span class="hspace"> </span></p></td><td valign="baseline"><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">"math/utils.rkt"</span><span class="hspace"> </span><span class="RktVal">"matrix/utils.rkt"</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p> </p></td></tr><tr><td><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._multi-in%29%29" class="RktStxLink" data-pltdoc="x">multi-in</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVal">"math"</span><span class="hspace"> </span><span class="RktVal">"matrix"</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVal">"utils.rkt"</span><span class="hspace"> </span><span class="RktVal">"helpers.rkt"</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td valign="baseline"><p><span class="hspace"> </span> is equivalent to<span class="hspace"> </span></p></td><td valign="baseline"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktVal">"math/utils.rkt"</span><span class="hspace"> </span><span class="RktVal">"math/helpers.rkt"</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVal">"matrix/utils.rkt"</span><span class="hspace"> </span><span class="RktVal">"matrix/helpers.rkt"</span><span class="RktPn">)</span></td></tr></table></td></tr></table></td></tr></table></p><h5 x-source-module="(lib "scribblings/reference/reference.scrbl")" x-part-tag=""Additional_provide_Forms"">3.2.2<tt> </tt><a name="(part._.Additional_provide_.Forms)"></a><a name="(mod-path._racket/provide)"></a>Additional <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span> Forms</h5><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._racket%2Fprovide%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/provide</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller"> package:</span> <span class="stt">base</span></span></td></tr></table></div><div class="SIntrapara">The bindings documented in this section are provided by the <a href="#%28mod-path._racket%2Fprovide%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/provide</span></a> library, not <a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket/base</span></a> or <a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">racket</span></a>.</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"><span class="RktPn">(</span><a name="(form._((lib._racket/provide..rkt)._matching-identifiers-out))"></a><span title="Provided from: racket/provide | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprovide..rkt%29._matching-identifiers-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">matching-identifiers-out</a></span></span><span class="hspace"> </span><span class="RktVar">regexp</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Like
<span class="RktVar">provide-spec</span>, but including only exports of bindings with
an external name that matches <span class="RktVar">regexp</span>. The <span class="RktVar">regexp</span>
must be a literal regular expression (see <a href="regexp.html" data-pltdoc="x">Regular Expressions</a>).</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"><span class="RktPn">(</span><a name="(form._((lib._racket/provide..rkt)._filtered-out))"></a><span title="Provided from: racket/provide | Package: base"><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprovide..rkt%29._filtered-out%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">filtered-out</a></span></span><span class="hspace"> </span><span class="RktVar">proc-expr</span><span class="hspace"> </span><span class="RktVar">provide-spec</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Analogous to <span class="RktSym"><a href="#%28form._%28%28lib._racket%2Frequire..rkt%29._filtered-in%29%29" class="RktStxLink" data-pltdoc="x">filtered-in</a></span>, but for filtering and renaming
exports.</div></p><p><div class="SIntrapara">For example,
</div><div class="SIntrapara"><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x">provide</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprovide..rkt%29._filtered-out%29%29" class="RktStxLink" data-pltdoc="x">filtered-out</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="lambda.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._lambda%29%29" class="RktStxLink" data-pltdoc="x">lambda</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">name</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="if.html#%28form._%28%28lib._racket%2Fprivate%2Fletstx-scheme..rkt%29._and%29%29" class="RktStxLink" data-pltdoc="x">and</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._regexp-match~3f%29%29" class="RktValLink" data-pltdoc="x">regexp-match?</a></span><span class="hspace"> </span><span class="RktVal">#rx"^[a-z-]+$"</span><span class="hspace"> </span><span class="RktSym">name</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._regexp-replace%29%29" class="RktValLink" data-pltdoc="x">regexp-replace</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVal">#rx"-"</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="strings.html#%28def._%28%28quote._~23~25kernel%29._string-titlecase%29%29" class="RktValLink" data-pltdoc="x">string-titlecase</a></span><span class="hspace"> </span><span class="RktSym">name</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">""</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._all-defined-out%29%29" class="RktStxLink" data-pltdoc="x">all-defined-out</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">exports only bindings that match the
pattern <span class="RktVal">#rx"^[a-z-]+$"</span>, and it converts the names to “camel case.”</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, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <a href="module.html" title="backward to "3.1 Modules: module, module*, ..."" data-pltdoc="x">← prev</a> <a href="syntax.html" title="up to "3 Syntactic Forms"" data-pltdoc="x">up</a> <a href="quote.html" title="forward to "3.3 Literals: quote and #%datum"" data-pltdoc="x">next →</a></span> </div></div></div><div id="contextindicator"> </div></body></html>
|