emacs.d/clones/scheme/docs.racket-lang.org/reference/inspectors.html
2022-09-30 11:00:09 +02:00

90 lines
No EOL
51 KiB
HTML

<!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"/><meta name="viewport" content="width=device-width, initial-scale=0.8"/><title>14.9&nbsp;Structure Inspectors</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="extras.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_0&quot;);">&#9658;</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x">The Racket Reference</a></td></tr></table></div><div class="tocviewsublisttop" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="model.html" class="tocviewlink" data-pltdoc="x">Language Model</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="notation.html" class="tocviewlink" data-pltdoc="x">Notation for Documentation</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="syntax.html" class="tocviewlink" data-pltdoc="x">Syntactic Forms</a></td></tr><tr><td align="right">4&nbsp;</td><td><a href="data.html" class="tocviewlink" data-pltdoc="x">Datatypes</a></td></tr><tr><td align="right">5&nbsp;</td><td><a href="structures.html" class="tocviewlink" data-pltdoc="x">Structures</a></td></tr><tr><td align="right">6&nbsp;</td><td><a href="mzlib_class.html" class="tocviewlink" data-pltdoc="x">Classes and Objects</a></td></tr><tr><td align="right">7&nbsp;</td><td><a href="mzlib_unit.html" class="tocviewlink" data-pltdoc="x">Units</a></td></tr><tr><td align="right">8&nbsp;</td><td><a href="contracts.html" class="tocviewlink" data-pltdoc="x">Contracts</a></td></tr><tr><td align="right">9&nbsp;</td><td><a href="match.html" class="tocviewlink" data-pltdoc="x">Pattern Matching</a></td></tr><tr><td align="right">10&nbsp;</td><td><a href="control.html" class="tocviewlink" data-pltdoc="x">Control Flow</a></td></tr><tr><td align="right">11&nbsp;</td><td><a href="concurrency.html" class="tocviewlink" data-pltdoc="x">Concurrency and Parallelism</a></td></tr><tr><td align="right">12&nbsp;</td><td><a href="Macros.html" class="tocviewlink" data-pltdoc="x">Macros</a></td></tr><tr><td align="right">13&nbsp;</td><td><a href="input-and-output.html" class="tocviewlink" data-pltdoc="x">Input and Output</a></td></tr><tr><td align="right">14&nbsp;</td><td><a href="security.html" class="tocviewselflink" data-pltdoc="x">Reflection and Security</a></td></tr><tr><td align="right">15&nbsp;</td><td><a href="os.html" class="tocviewlink" data-pltdoc="x">Operating System</a></td></tr><tr><td align="right">16&nbsp;</td><td><a href="memory.html" class="tocviewlink" data-pltdoc="x">Memory Management</a></td></tr><tr><td align="right">17&nbsp;</td><td><a href="unsafe.html" class="tocviewlink" data-pltdoc="x">Unsafe Operations</a></td></tr><tr><td align="right">18&nbsp;</td><td><a href="running.html" class="tocviewlink" data-pltdoc="x">Running Racket</a></td></tr><tr><td align="right"></td><td><a href="doc-bibliography.html" class="tocviewlink" data-pltdoc="x">Bibliography</a></td></tr><tr><td align="right"></td><td><a href="doc-index.html" class="tocviewlink" data-pltdoc="x">Index</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_1&quot;);">&#9660;</a></td><td>14&nbsp;</td><td><a href="security.html" class="tocviewlink" data-pltdoc="x">Reflection and Security</a></td></tr></table><div class="tocviewsublistbottom" style="display: block;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">14.1&nbsp;</td><td><a href="Namespaces.html" class="tocviewlink" data-pltdoc="x">Namespaces</a></td></tr><tr><td align="right">14.2&nbsp;</td><td><a href="eval.html" class="tocviewlink" data-pltdoc="x">Evaluation and Compilation</a></td></tr><tr><td align="right">14.3&nbsp;</td><td><a href="load-lang.html" class="tocviewlink" data-pltdoc="x">The <span class="RktModLink"><span class="RktSym">racket/<span class="mywbr"> &nbsp;</span>load</span></span> Language</a></td></tr><tr><td align="right">14.4&nbsp;</td><td><a href="Module_Names_and_Loading.html" class="tocviewlink" data-pltdoc="x">Module Names and Loading</a></td></tr><tr><td align="right">14.5&nbsp;</td><td><a href="chaperones.html" class="tocviewlink" data-pltdoc="x">Impersonators and Chaperones</a></td></tr><tr><td align="right">14.6&nbsp;</td><td><a href="securityguards.html" class="tocviewlink" data-pltdoc="x">Security Guards</a></td></tr><tr><td align="right">14.7&nbsp;</td><td><a href="custodians.html" class="tocviewlink" data-pltdoc="x">Custodians</a></td></tr><tr><td align="right">14.8&nbsp;</td><td><a href="threadgroups.html" class="tocviewlink" data-pltdoc="x">Thread Groups</a></td></tr><tr><td align="right">14.9&nbsp;</td><td><a href="inspectors.html" class="tocviewselflink" data-pltdoc="x">Structure Inspectors</a></td></tr><tr><td align="right">14.10&nbsp;</td><td><a href="modprotect.html" class="tocviewlink" data-pltdoc="x">Code Inspectors</a></td></tr><tr><td align="right">14.11&nbsp;</td><td><a href="plumbers.html" class="tocviewlink" data-pltdoc="x">Plumbers</a></td></tr><tr><td align="right">14.12&nbsp;</td><td><a href="Sandboxed_Evaluation.html" class="tocviewlink" data-pltdoc="x">Sandboxed Evaluation</a></td></tr><tr><td align="right">14.13&nbsp;</td><td><a href="repl-module.html" class="tocviewlink" data-pltdoc="x">The <span class="RktModLink"><span class="RktSym">racket/<span class="mywbr"> &nbsp;</span>repl</span></span> Library</a></td></tr><tr><td align="right">14.14&nbsp;</td><td><a href="linklets.html" class="tocviewlink" data-pltdoc="x">Linklets and the Core Compiler</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="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">inspector?</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._make-inspector%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">make-<wbr></wbr>inspector</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._make-sibling-inspector%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">make-<wbr></wbr>sibling-<wbr></wbr>inspector</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector-superior~3f%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">inspector-<wbr></wbr>superior?</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._current-inspector%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">current-<wbr></wbr>inspector</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-info%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">struct-<wbr></wbr>info</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-info%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">struct-<wbr></wbr>type-<wbr></wbr>info</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-sealed~3f%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">struct-<wbr></wbr>type-<wbr></wbr>sealed?</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-authentic~3f%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">struct-<wbr></wbr>type-<wbr></wbr>authentic?</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-make-constructor%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">struct-<wbr></wbr>type-<wbr></wbr>make-<wbr></wbr>constructor</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-make-predicate%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">struct-<wbr></wbr>type-<wbr></wbr>make-<wbr></wbr>predicate</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._object-name%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">object-<wbr></wbr>name</span></span></a></td></tr><tr><td><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._prop~3aobject-name%29%29" class="tocsublink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">prop:<span class="mywbr"> &nbsp;</span>object-<wbr></wbr>name</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" id="searchbox" type="text" tabindex="1" placeholder="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;8.6&quot;, &quot;../&quot;);"/></form>&nbsp;&nbsp;<a href="https://docs.racket-lang.org/index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;8.6&quot;);">top</a><span class="tocsettoggle">&nbsp;&nbsp;<a href="javascript:void(0);" title="show/hide table of contents" onclick="TocsetToggle();">contents</a></span></span><span class="navright">&nbsp;&nbsp;<a href="threadgroups.html" title="backward to &quot;14.8 Thread Groups&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="security.html" title="up to &quot;14 Reflection and Security&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="modprotect.html" title="forward to &quot;14.10 Code Inspectors&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div><h4 x-source-module="(lib &quot;scribblings/reference/reference.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;inspectors&quot;">14.9<tt>&nbsp;</tt><a name="(part._inspectors)"></a>Structure Inspectors</h4><p>An <a name="(tech._inspector)"></a><span style="font-style: italic">inspector</span> provides access to structure fields and
structure type information without the normal field accessors and
mutators. (Inspectors are also used to control access to module
bindings; see <a href="modprotect.html" data-pltdoc="x">Code Inspectors</a>.) Inspectors are primarily
intended for use by debuggers.</p><p>When a structure type is created, an inspector can be supplied. The
given inspector is not the one that will control the new structure
type; instead, the given inspector&rsquo;s parent will control the type. By
using the parent of the given inspector, the structure type remains
opaque to &ldquo;peer&rdquo; code that cannot access the parent inspector.</p><p>The <span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._current-inspector%29%29" class="RktValLink" data-pltdoc="x">current-inspector</a></span> <a href="eval-model.html#%28tech._parameter%29" class="techoutside" data-pltdoc="x"><span class="techinside">parameter</span></a> determines a default
inspector argument for new structure types. An alternate inspector can
be provided though the <span class="RktPn">#:inspector</span> option of the
<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> form (see <a href="define-struct.html" data-pltdoc="x">Defining Structure Types: <span class="RktSym"><span class="RktStxLink">struct</span></span></a>), or
through an optional <span class="RktSym">inspector</span> argument to
<span class="RktSym"><a href="creatingmorestructs.html#%28def._%28%28quote._~23~25kernel%29._make-struct-type%29%29" class="RktValLink" data-pltdoc="x">make-struct-type</a></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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._inspector~3f))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">inspector?</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">v</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="booleans.html#%28def._%28%28quote._~23~25kernel%29._boolean~3f%29%29" class="RktValLink" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">v</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fprivate%2Fmisc..rkt%29._any%2Fc%29%29" class="RktValLink" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Returns <span class="RktVal">#t</span> if
<span class="RktVar">v</span> is an inspector, <span class="RktVal">#f</span> otherwise.</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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._make-inspector))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._make-inspector%29%29" class="RktValDef RktValLink" data-pltdoc="x">make-inspector</a></span></span><span class="hspace">&nbsp;</span><span class="RktOpt">[</span><span class="RktVar">inspector</span><span class="RktOpt">]</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">inspector</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._current-inspector%29%29" class="RktValLink" data-pltdoc="x">current-inspector</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a new inspector that is a subinspector of
<span class="RktVar">inspector</span>. Any structure type controlled by the new inspector
is also controlled by its ancestor inspectors, but no other
inspectors.</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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._make-sibling-inspector))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._make-sibling-inspector%29%29" class="RktValDef RktValLink" data-pltdoc="x">make-sibling-inspector</a></span></span><span class="hspace">&nbsp;</span><span class="RktOpt">[</span><span class="RktVar">inspector</span><span class="RktOpt">]</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">inspector</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._current-inspector%29%29" class="RktValLink" data-pltdoc="x">current-inspector</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a new inspector that is a subinspector of the same inspector
as <span class="RktVar">inspector</span>. That is, <span class="RktVar">inspector</span> and the result
inspector control mutually disjoint sets of structure types.</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>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._inspector-superior~3f))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector-superior~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">inspector-superior?</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">inspector</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">maybe-subinspector</span><span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="booleans.html#%28def._%28%28quote._~23~25kernel%29._boolean~3f%29%29" class="RktValLink" data-pltdoc="x">boolean?</a></span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">inspector</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">maybe-subinspector</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Returns <span class="RktVal">#t</span> if <span class="RktVar">inspector</span> is an ancestor of
<span class="RktVar">maybe-subinspector</span> (and not equal to
<span class="RktVar">maybe-subinspector</span>), <span class="RktVal">#f</span> otherwise.</div></p><p class="SHistory">Added in version 6.5.0.6 of package <span class="stt">base</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>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._current-inspector))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._current-inspector%29%29" class="RktValDef RktValLink" data-pltdoc="x">current-inspector</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._current-inspector%29%29" class="RktValDef RktValLink" data-pltdoc="x">current-inspector</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">insp</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="void.html#%28def._%28%28quote._~23~25kernel%29._void~3f%29%29" class="RktValLink" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">insp</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._inspector~3f%29%29" class="RktValLink" data-pltdoc="x">inspector?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">A <a href="eval-model.html#%28tech._parameter%29" class="techoutside" data-pltdoc="x"><span class="techinside">parameter</span></a> that determines the default inspector for newly created
structure types.</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>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._struct-info))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-info%29%29" class="RktValDef RktValLink" data-pltdoc="x">struct-info</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">v</span><span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fbase..rkt%29._or%2Fc%29%29" class="RktValLink" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-type~3f%29%29" class="RktValLink" data-pltdoc="x">struct-type?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="booleans.html#%28def._%28%28quote._~23~25kernel%29._boolean~3f%29%29" class="RktValLink" data-pltdoc="x">boolean?</a></span></td></tr></table></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">v</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fprivate%2Fmisc..rkt%29._any%2Fc%29%29" class="RktValLink" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Returns two values:</div></p><ul><li><p><span class="RktVar">struct-type</span>: a structure type descriptor or <span class="RktVal">#f</span>;
the result is a structure type descriptor of the most specific type
for which <span class="RktVar">v</span> is an instance, and for which the current
inspector has control, or the result is <span class="RktVal">#f</span> if the current
inspector does not control any structure type for which the
<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> is an instance.</p></li><li><p><span class="RktVar">skipped?</span>: <span class="RktVal">#f</span> if the first result corresponds to
the most specific structure type of <span class="RktVar">v</span>, <span class="RktVal">#t</span> otherwise.</p></li></ul><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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._struct-type-info))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-info%29%29" class="RktValDef RktValLink" data-pltdoc="x">struct-type-info</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">struct-type</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="prototype"><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0"><tr><td><span class="RktSym"><a href="symbols.html#%28def._%28%28quote._~23~25kernel%29._symbol~3f%29%29" class="RktValLink" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="RktSym"><a href="number-types.html#%28def._%28%28quote._~23~25kernel%29._exact-nonnegative-integer~3f%29%29" class="RktValLink" data-pltdoc="x">exact-nonnegative-integer?</a></span></td></tr><tr><td><span class="RktSym"><a href="number-types.html#%28def._%28%28quote._~23~25kernel%29._exact-nonnegative-integer~3f%29%29" class="RktValLink" data-pltdoc="x">exact-nonnegative-integer?</a></span></td></tr><tr><td><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-accessor-procedure~3f%29%29" class="RktValLink" data-pltdoc="x">struct-accessor-procedure?</a></span></td></tr><tr><td><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-mutator-procedure~3f%29%29" class="RktValLink" data-pltdoc="x">struct-mutator-procedure?</a></span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fbase..rkt%29._listof%29%29" class="RktValLink" data-pltdoc="x">listof</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="number-types.html#%28def._%28%28quote._~23~25kernel%29._exact-nonnegative-integer~3f%29%29" class="RktValLink" data-pltdoc="x">exact-nonnegative-integer?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fbase..rkt%29._or%2Fc%29%29" class="RktValLink" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-type~3f%29%29" class="RktValLink" data-pltdoc="x">struct-type?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktSym"><a href="booleans.html#%28def._%28%28quote._~23~25kernel%29._boolean~3f%29%29" class="RktValLink" data-pltdoc="x">boolean?</a></span></td></tr></table></td></tr></table></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">struct-type</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-type~3f%29%29" class="RktValLink" data-pltdoc="x">struct-type?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Returns eight values that provide information about the structure type
descriptor <span class="RktVar">struct-type</span>, assuming that the type is controlled
by the current inspector:</div></p><ul><li><p><span class="RktVar">name</span>: the structure type&rsquo;s name as a symbol;</p></li><li><p><span class="RktVar">init-field-cnt</span>: the number of fields defined by the
structure type provided to the constructor procedure (not counting
fields created by its ancestor types);</p></li><li><p><span class="RktVar">auto-field-cnt</span>: the number of fields defined by the
structure type without a counterpart in the constructor procedure
(not counting fields created by its ancestor types);</p></li><li><p><span class="RktVar">accessor-proc</span>: an accessor procedure for the structure
type, like the one returned by <span class="RktSym"><a href="creatingmorestructs.html#%28def._%28%28quote._~23~25kernel%29._make-struct-type%29%29" class="RktValLink" data-pltdoc="x">make-struct-type</a></span>;</p></li><li><p><span class="RktVar">mutator-proc</span>: a mutator procedure for the structure
type, like the one returned by <span class="RktSym"><a href="creatingmorestructs.html#%28def._%28%28quote._~23~25kernel%29._make-struct-type%29%29" class="RktValLink" data-pltdoc="x">make-struct-type</a></span>;</p></li><li><p><span class="RktVar">immutable-k-list</span>: an immutable list of exact
non-negative integers that correspond to immutable fields for the
structure type;</p></li><li><p><span class="RktVar">super-type</span>: a structure type descriptor for the
most specific ancestor of the type that is controlled by the
current inspector, or <span class="RktVal">#f</span> if no ancestor is controlled by
the current inspector;</p></li><li><p><span class="RktVar">skipped?</span>: <span class="RktVal">#f</span> if the seventh result is the
most specific ancestor type or if the type has no supertype,
<span class="RktVal">#t</span> otherwise.</p></li></ul><p>If the type for <span class="RktVar">struct-type</span> is not controlled by the current inspector,
the <span class="RktSym"><a href="exns.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._exn~3afail~3acontract%29%29" class="RktValLink" data-pltdoc="x">exn:fail:contract</a></span> exception is raised.</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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._struct-type-sealed~3f))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-sealed~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">struct-type-sealed?</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">struct-type</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="booleans.html#%28def._%28%28quote._~23~25kernel%29._boolean~3f%29%29" class="RktValLink" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">struct-type</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-type~3f%29%29" class="RktValLink" data-pltdoc="x">struct-type?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Reports whether <span class="RktVar">struct-type</span> has the <span class="RktSym"><a href="creatingmorestructs.html#%28def._%28%28quote._~23~25kernel%29._prop~3asealed%29%29" class="RktValLink" data-pltdoc="x">prop:sealed</a></span>
structure type property.</div></p><p class="SHistory">Added in version 8.0.0.7 of package <span class="stt">base</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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._struct-type-authentic~3f))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-authentic~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">struct-type-authentic?</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">struct-type</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="booleans.html#%28def._%28%28quote._~23~25kernel%29._boolean~3f%29%29" class="RktValLink" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">struct-type</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-type~3f%29%29" class="RktValLink" data-pltdoc="x">struct-type?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Reports whether <span class="RktVar">struct-type</span> has the <span class="RktSym"><a href="chaperones.html#%28def._%28%28quote._~23~25kernel%29._prop~3aauthentic%29%29" class="RktValLink" data-pltdoc="x">prop:authentic</a></span>
structure type property.</div></p><p class="SHistory">Added in version 8.0.0.7 of package <span class="stt">base</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>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._struct-type-make-constructor))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-make-constructor%29%29" class="RktValDef RktValLink" data-pltdoc="x">struct-type-make-constructor</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">struct-type</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span><span class="RktOpt">[</span></td><td valign="top"><span class="RktVar">constructor-name</span><span class="RktOpt">]</span><span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-constructor-procedure~3f%29%29" class="RktValLink" data-pltdoc="x">struct-constructor-procedure?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">struct-type</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="structutils.html#%28def._%28%28quote._~23~25kernel%29._struct-type~3f%29%29" class="RktValLink" data-pltdoc="x">struct-type?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">constructor-name</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fbase..rkt%29._or%2Fc%29%29" class="RktValLink" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="symbols.html#%28def._%28%28quote._~23~25kernel%29._symbol~3f%29%29" class="RktValLink" data-pltdoc="x">symbol?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a <a href="define-struct.html#%28tech._constructor%29" class="techoutside" data-pltdoc="x"><span class="techinside">constructor</span></a> procedure to create instances of the type
for <span class="RktVar">struct-type</span>. If <span class="RktVar">constructor-name</span> is not <span class="RktVal">#f</span>,
it is used as the name of the generated <a href="define-struct.html#%28tech._constructor%29" class="techoutside" data-pltdoc="x"><span class="techinside">constructor</span></a> procedure.
If the type for <span class="RktVar">struct-type</span> is not
controlled by the current inspector, the
<span class="RktSym"><a href="exns.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._exn~3afail~3acontract%29%29" class="RktValLink" data-pltdoc="x">exn:fail:contract</a></span> exception is raised.</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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._struct-type-make-predicate))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._struct-type-make-predicate%29%29" class="RktValDef RktValLink" data-pltdoc="x">struct-type-make-predicate</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">struct-type</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="data-structure-contracts.html#%28form._%28%28lib._racket%2Fcontract%2Fprivate%2Fmisc..rkt%29._any%29%29" class="RktStxLink" data-pltdoc="x">any</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">struct-type</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fprivate%2Fmisc..rkt%29._any%2Fc%29%29" class="RktValLink" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a <a href="define-struct.html#%28tech._predicate%29" class="techoutside" data-pltdoc="x"><span class="techinside">predicate</span></a> procedure to recognize instances of the
type for <span class="RktVar">struct-type</span>. If the type for <span class="RktVar">struct-type</span>
is not controlled by the current inspector, the
<span class="RktSym"><a href="exns.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._exn~3afail~3acontract%29%29" class="RktValLink" data-pltdoc="x">exn:fail:contract</a></span> exception is raised.</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>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((quote._~23~25kernel)._object-name))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._object-name%29%29" class="RktValDef RktValLink" data-pltdoc="x">object-name</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">v</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="data-structure-contracts.html#%28form._%28%28lib._racket%2Fcontract%2Fprivate%2Fmisc..rkt%29._any%29%29" class="RktStxLink" data-pltdoc="x">any</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">v</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="data-structure-contracts.html#%28def._%28%28lib._racket%2Fcontract%2Fprivate%2Fmisc..rkt%29._any%2Fc%29%29" class="RktValLink" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a value for the name of <span class="RktVar">v</span> if <span class="RktVar">v</span> has a name,
<span class="RktVal">#f</span> otherwise. The argument <span class="RktVar">v</span> can be any value, but
only (some) procedures, <a href="structures.html#%28tech._structure%29" class="techoutside" data-pltdoc="x"><span class="techinside">structures</span></a>, <a href="structures.html#%28tech._structure._type%29" class="techoutside" data-pltdoc="x"><span class="techinside">structure types</span></a>,
<a href="structprops.html#%28tech._structure._type._property%29" class="techoutside" data-pltdoc="x"><span class="techinside">structure type properties</span></a>, <a href="regexp.html#%28tech._regexp._value%29" class="techoutside" data-pltdoc="x"><span class="techinside">regexp values</span></a>,
<a href="ports.html#%28tech._port%29" class="techoutside" data-pltdoc="x"><span class="techinside">ports</span></a>, <a href="logging.html#%28tech._logger%29" class="techoutside" data-pltdoc="x"><span class="techinside">loggers</span></a>, and <a href="eval-model.html#%28tech._prompt._tag%29" class="techoutside" data-pltdoc="x"><span class="techinside">prompt tags</span></a> have names.
See also <a href="syntax-model.html#%28part._infernames%29" data-pltdoc="x">Inferred Value Names</a>.</div></p><p>If a <a href="structures.html#%28tech._structure%29" class="techoutside" data-pltdoc="x"><span class="techinside">structure</span></a>&rsquo;s type implements the <span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._prop~3aobject-name%29%29" class="RktValLink" data-pltdoc="x">prop:object-name</a></span> property,
and the value of the <span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._prop~3aobject-name%29%29" class="RktValLink" data-pltdoc="x">prop:object-name</a></span> property is an integer, then the
corresponding field of the structure is the name of the structure.
Otherwise, the property value must be a procedure, which is called with the
structure as argument, and the result is the name of the structure.
If a <a href="structures.html#%28tech._structure%29" class="techoutside" data-pltdoc="x"><span class="techinside">structure</span></a> is a procedure as implemented by one of its
fields (i.e., the <span class="RktSym"><a href="procedures.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._prop~3aprocedure%29%29" class="RktValLink" data-pltdoc="x">prop:procedure</a></span> property value for the structure&rsquo;s
type is an integer), then its name is the implementing procedure&rsquo;s name.
Otherwise, its name matches the name of the <a href="structures.html#%28tech._structure._type%29" class="techoutside" data-pltdoc="x"><span class="techinside">structure type</span></a> that it
instantiates.</p><p>The name (if any) of a procedure is a symbol, unless the procedure is
also a structure whose type has the <span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._prop~3aobject-name%29%29" class="RktValLink" data-pltdoc="x">prop:object-name</a></span>
property, in which case <span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._prop~3aobject-name%29%29" class="RktValLink" data-pltdoc="x">prop:object-name</a></span> takes precedence.
The <span class="RktSym"><a href="procedures.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._procedure-rename%29%29" class="RktValLink" data-pltdoc="x">procedure-rename</a></span> function creates a procedure with a
specific name.</p><p>The name of a <a href="regexp.html#%28tech._regexp._value%29" class="techoutside" data-pltdoc="x"><span class="techinside">regexp value</span></a> is a string or byte string. Passing
the string or byte string to <span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._regexp%29%29" class="RktValLink" data-pltdoc="x">regexp</a></span>, <span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._byte-regexp%29%29" class="RktValLink" data-pltdoc="x">byte-regexp</a></span>,
<span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._pregexp%29%29" class="RktValLink" data-pltdoc="x">pregexp</a></span>, or <span class="RktSym"><a href="regexp.html#%28def._%28%28quote._~23~25kernel%29._byte-pregexp%29%29" class="RktValLink" data-pltdoc="x">byte-pregexp</a></span> (depending on the kind of
regexp whose name was extracted) produces a value that matches the
same inputs.</p><p>The name of a port can be any value, but many tools use a path or
string name as the port&rsquo;s for (to report source locations, for
example).</p><p>The name of a <a href="logging.html#%28tech._logger%29" class="techoutside" data-pltdoc="x"><span class="techinside">logger</span></a> is either a symbol or <span class="RktVal">#f</span>.</p><p>The name of a <a href="eval-model.html#%28tech._prompt._tag%29" class="techoutside" data-pltdoc="x"><span class="techinside">prompt tag</span></a> is either the optional symbol
given to <span class="RktSym"><a href="cont.html#%28def._%28%28quote._~23~25kernel%29._make-continuation-prompt-tag%29%29" class="RktValLink" data-pltdoc="x">make-continuation-prompt-tag</a></span> or <span class="RktVal">#f</span>.</p><p class="SHistory">Changed in version 7.9.0.13 of package <span class="stt">base</span>: Recognize the name of
continuation prompt tags.</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>value</p></div></div><p class="RForeground"><a name="(def._((quote._~23~25kernel)._prop~3aobject-name))"></a><span title="Provided from: racket/base, racket | Package: base"><span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._prop~3aobject-name%29%29" class="RktValDef RktValLink" data-pltdoc="x">prop:object-name</a></span></span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="structprops.html#%28def._%28%28quote._~23~25kernel%29._struct-type-property~3f%29%29" class="RktValLink" data-pltdoc="x">struct-type-property?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">A <a href="structprops.html#%28tech._structure._type._property%29" class="techoutside" data-pltdoc="x"><span class="techinside">structure type property</span></a> that allows structure types to customize
the result of <span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._object-name%29%29" class="RktValLink" data-pltdoc="x">object-name</a></span> applied to their instances. The property value can
be any of the following:</div></p><ul><li><p>A procedure <span class="RktVar">proc</span> of one argument: In this case,
procedure <span class="RktVar">proc</span> receives the structure as an argument, and the result
of <span class="RktVar">proc</span> is the <span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._object-name%29%29" class="RktValLink" data-pltdoc="x">object-name</a></span> of the structure.</p></li><li><p>An exact, non-negative integer between <span class="RktVal">0</span> (inclusive) and the
number of non-automatic fields in the structure type (exclusive, not counting
supertype fields): The integer identifies a field in the structure, and the
field must be designated as immutable. The value of the field is used as the
<span class="RktSym"><a href="inspectors.html#%28def._%28%28quote._~23~25kernel%29._object-name%29%29" class="RktValLink" data-pltdoc="x">object-name</a></span> of the structure.</p></li></ul><p class="SHistory">Added in version 6.2 of package <span class="stt">base</span>.</p><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" id="searchbox" type="text" tabindex="1" placeholder="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;8.6&quot;, &quot;../&quot;);"/></form>&nbsp;&nbsp;<a href="https://docs.racket-lang.org/index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;8.6&quot;);">top</a><span class="tocsettoggle">&nbsp;&nbsp;<a href="javascript:void(0);" title="show/hide table of contents" onclick="TocsetToggle();">contents</a></span></span><span class="navright">&nbsp;&nbsp;<a href="threadgroups.html" title="backward to &quot;14.8 Thread Groups&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="security.html" title="up to &quot;14 Reflection and Security&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="modprotect.html" title="forward to &quot;14.10 Code Inspectors&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div></div></div><div id="contextindicator">&nbsp;</div></body></html>