This file is indexed.

/usr/share/doc/racket/unstable/temp-c.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
<!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>30&nbsp;Temporal Contracts: Explicit Contract Monitors</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_0&quot;);">&#9660;</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x">Unstable:<span class="mywbr"> &nbsp;</span> May Change Without Warning</a></td></tr></table></div><div class="tocviewsublisttop" style="display: block;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="guidelines.html" class="tocviewlink" data-pltdoc="x">Guidelines for Developing <span class="RktSym">unstable</span> Libraries</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="Automata__Compiling_State_Machines.html" class="tocviewlink" data-pltdoc="x">Automata:<span class="mywbr"> &nbsp;</span> Compiling State Machines</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="bytes.html" class="tocviewlink" data-pltdoc="x">Bytes</a></td></tr><tr><td align="right">4&nbsp;</td><td><a href="contract.html" class="tocviewlink" data-pltdoc="x">Contracts</a></td></tr><tr><td align="right">5&nbsp;</td><td><a href="wrapc.html" class="tocviewlink" data-pltdoc="x">Contracts for Macro Subexpressions</a></td></tr><tr><td align="right">6&nbsp;</td><td><a href="Debugging.html" class="tocviewlink" data-pltdoc="x">Debugging</a></td></tr><tr><td align="right">7&nbsp;</td><td><a href="Definitions.html" class="tocviewlink" data-pltdoc="x">Definitions</a></td></tr><tr><td align="right">8&nbsp;</td><td><a href="error.html" class="tocviewlink" data-pltdoc="x">Errors</a></td></tr><tr><td align="right">9&nbsp;</td><td><a href="future.html" class="tocviewlink" data-pltdoc="x">Futures</a></td></tr><tr><td align="right">10&nbsp;</td><td><a href="Functions.html" class="tocviewlink" data-pltdoc="x">Functions</a></td></tr><tr><td align="right">11&nbsp;</td><td><a href="Hash_Tables.html" class="tocviewlink" data-pltdoc="x">Hash Tables</a></td></tr><tr><td align="right">12&nbsp;</td><td><a href="class-iop.html" class="tocviewlink" data-pltdoc="x">Interface-<wbr></wbr>Oriented Programming for Classes</a></td></tr><tr><td align="right">13&nbsp;</td><td><a href="lazy-require.html" class="tocviewlink" data-pltdoc="x">Lazy Require</a></td></tr><tr><td align="right">14&nbsp;</td><td><a href="list.html" class="tocviewlink" data-pltdoc="x">Lists</a></td></tr><tr><td align="right">15&nbsp;</td><td><a href="Logging.html" class="tocviewlink" data-pltdoc="x">Logging</a></td></tr><tr><td align="right">16&nbsp;</td><td><a href="macro-testing.html" class="tocviewlink" data-pltdoc="x">Macro Testing</a></td></tr><tr><td align="right">17&nbsp;</td><td><a href="Mark_Parameters.html" class="tocviewlink" data-pltdoc="x">Mark Parameters</a></td></tr><tr><td align="right">18&nbsp;</td><td><a href="match.html" class="tocviewlink" data-pltdoc="x">Match</a></td></tr><tr><td align="right">19&nbsp;</td><td><a href="open-place.html" class="tocviewlink" data-pltdoc="x">Open <span class="RktSym"><span class="RktStxLink">place</span></span> expressions</a></td></tr><tr><td align="right">20&nbsp;</td><td><a href="options.html" class="tocviewlink" data-pltdoc="x">Option Contracts</a></td></tr><tr><td align="right">21&nbsp;</td><td><a href="Parameter_Groups.html" class="tocviewlink" data-pltdoc="x">Parameter Groups</a></td></tr><tr><td align="right">22&nbsp;</td><td><a href="Pretty-Printing.html" class="tocviewlink" data-pltdoc="x">Pretty-<wbr></wbr>Printing</a></td></tr><tr><td align="right">23&nbsp;</td><td><a href="recontract.html" class="tocviewlink" data-pltdoc="x">Re-<wbr></wbr>Contracting Identifiers</a></td></tr><tr><td align="right">24&nbsp;</td><td><a href="sandbox.html" class="tocviewlink" data-pltdoc="x">Sandbox</a></td></tr><tr><td align="right">25&nbsp;</td><td><a href="sequence.html" class="tocviewlink" data-pltdoc="x">Sequences</a></td></tr><tr><td align="right">26&nbsp;</td><td><a href="string.html" class="tocviewlink" data-pltdoc="x">Strings</a></td></tr><tr><td align="right">27&nbsp;</td><td><a href="struct.html" class="tocviewlink" data-pltdoc="x">Structs</a></td></tr><tr><td align="right">28&nbsp;</td><td><a href="custom-write.html" class="tocviewlink" data-pltdoc="x">Struct Printing</a></td></tr><tr><td align="right">29&nbsp;</td><td><a href="syntax.html" class="tocviewlink" data-pltdoc="x">Syntax</a></td></tr><tr><td align="right">30&nbsp;</td><td><a href="" class="tocviewselflink" data-pltdoc="x">Temporal Contracts:<span class="mywbr"> &nbsp;</span> Explicit Contract Monitors</a></td></tr><tr><td align="right">31&nbsp;</td><td><a href="unix-socket.html" class="tocviewlink" data-pltdoc="x">Unix Domain Sockets</a></td></tr><tr><td align="right">32&nbsp;</td><td><a href="2d.html" class="tocviewlink" data-pltdoc="x">2D Syntax</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_1&quot;);">&#9658;</a></td><td>30&nbsp;</td><td><a href="" class="tocviewselflink" data-pltdoc="x">Temporal Contracts:<span class="mywbr"> &nbsp;</span> Explicit Contract Monitors</a></td></tr></table><div class="tocviewsublistbottom" style="display: none;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">30.1&nbsp;</td><td><a href="#%28part._.Warning__.Experimental_%29" class="tocviewlink" data-pltdoc="x">Warning! Experimental!</a></td></tr><tr><td align="right">30.2&nbsp;</td><td><a href="#%28part._monitor%29" class="tocviewlink" data-pltdoc="x">Monitors</a></td></tr><tr><td align="right">30.3&nbsp;</td><td><a href="#%28part._dsl%29" class="tocviewlink" data-pltdoc="x">Domain Specific Language</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber">30.1<tt>&nbsp;</tt></span><a href="#%28part._.Warning__.Experimental_%29" class="tocsubseclink" data-pltdoc="x">Warning! Experimental!</a></td></tr><tr><td><span class="tocsublinknumber">30.2<tt>&nbsp;</tt></span><a href="#%28part._monitor%29" class="tocsubseclink" data-pltdoc="x">Monitors</a></td></tr><tr><td><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">monitor</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3aproj%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">monitor:<span class="mywbr"> &nbsp;</span>proj</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3acall%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">monitor:<span class="mywbr"> &nbsp;</span>call</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3areturn%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">monitor:<span class="mywbr"> &nbsp;</span>return</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%2Fc%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">monitor/<span class="mywbr"> &nbsp;</span>c</span></span></a></td></tr><tr><td><span class="tocsublinknumber">30.3<tt>&nbsp;</tt></span><a href="#%28part._dsl%29" class="tocsubseclink" data-pltdoc="x">Domain Specific Language</a></td></tr><tr><td><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._call%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">call</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._ret%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">ret</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._with-monitor%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">with-<wbr></wbr>monitor</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._label%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">label</span></span></a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="navsettop"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;6.1&quot;, &quot;../&quot;);" onfocus="this.style.color=&quot;black&quot;; this.style.textAlign=&quot;left&quot;; if (this.value == &quot;...search manuals...&quot;) this.value=&quot;&quot;;" onblur="if (this.value.match(/^ *$/)) { this.style.color=&quot;#888&quot;; this.style.textAlign=&quot;center&quot;; this.value=&quot;...search manuals...&quot;; }"/></form>&nbsp;&nbsp;<a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;6.1&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="syntax.html" title="backward to &quot;29 Syntax&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;Unstable: May Change Without Warning&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="unix-socket.html" title="forward to &quot;31 Unix Domain Sockets&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div><h3 x-source-module="(lib &quot;unstable/scribblings/unstable.scrbl&quot;)" x-part-tag="&quot;temp-c&quot;">30<tt>&nbsp;</tt><a name="(part._temp-c)"></a><a name="(mod-path._unstable/temp-c)"></a>Temporal Contracts: Explicit Contract Monitors</h3><div class="SAuthorListBox"><span class="SAuthorList"><p class="author">Jay McCarthy &lt;<a href="mailto:jay@racket-lang.org">jay@racket-lang.org</a>&gt;</p></span></div><p><div class="SIntrapara"></div><div class="SIntrapara">This library is <span style="font-style: italic">unstable</span>;
compatibility will not be maintained.
See <a href="index.html" data-pltdoc="x">Unstable: May Change Without Warning</a>
for more information.</div></p><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="" class="RktModLink" data-pltdoc="x"><span class="RktSym">unstable/temp-c</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">base</span></span></td></tr></table></p><p>The contract system implies the presence of a "monitoring system" that ensures that contracts are not violated. The <a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=contracts.html&amp;version=6.1" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">racket/contract</span></a> system compiles this monitoring system into checks on values that cross a contracted boundary. This module provides a facility to pass contract boundary crossing information to an explicit monitor for approval. This monitor may, for example, use state to enforce temporal constraints, such as a resource is locked before it is accessed.</p><h4 x-source-module="(lib &quot;unstable/scribblings/unstable.scrbl&quot;)" x-part-tag="&quot;Warning__Experimental_&quot;">30.1<tt>&nbsp;</tt><a name="(part._.Warning__.Experimental_)"></a>Warning! Experimental!</h4><p>This library is truly experimental and the interface is likely to
drastically change as we get more experience making use of temporal
contracts. In particular, the library comes with no advice about
designing temporal contracts, which are much more subtle than standard
contracts. This subtlety is compounded because, while temporal
contract violations have accurate blame information, we cannot yet
connect violations to sub-pieces of the temporal formula.</p><p>For example, applying <span class="RktSym">f</span> to <span class="RktVal">"three"</span> when it is
contracted to only accept numbers will error by blaming the caller and
providing the explanation "expected a &lt;number?&gt;, received: "three"".
In contrast, applying <span class="RktSym">g</span> to <span class="RktVal">"even"</span> and then to
<span class="RktVal">"odd"</span> when <span class="RktSym">g</span> is contracted to accept strings on
every odd invocation, but numbers on every even invocation, will error
by blaming the second (odd) call, but will not provide any explanation
except "the monitor disallowed the call with arguments: "odd"".
Translating non-acceptance of an event trace by an automata into a
palatable user explanation is an open problem.</p><h4 x-source-module="(lib &quot;unstable/scribblings/unstable.scrbl&quot;)" x-part-tag="&quot;monitor&quot;">30.2<tt>&nbsp;</tt><a name="(part._monitor)"></a><a name="(mod-path._unstable/temp-c/monitor)"></a>Monitors</h4><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._unstable%2Ftemp-c%2Fmonitor%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">unstable/temp-c/monitor</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">unstable-lib</span></span></td></tr></table></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><table cellspacing="0" cellpadding="0" class="together"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>struct</p></div></div><table cellspacing="0" cellpadding="0" class="RForeground"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=define-struct.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._struct%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">struct</a></span></td><td><span class="hspace">&nbsp;</span></td><td><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3f))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._struct~3amonitor))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor))"></a><span title="Provided from: unstable/temp-c/monitor | Package: unstable-lib"><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%29%29" class="RktValDef RktValLink" data-pltdoc="x">monitor</a></span></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">label</span><span class="RktPn">)</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:transparent</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="together"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>struct</p></div></div><table cellspacing="0" cellpadding="0" class="RForeground"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=define-struct.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._struct%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">struct</a></span></td><td><span class="hspace">&nbsp;</span></td><td><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3aproj-v))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3aproj-proj-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3aproj-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3aproj~3f))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._struct~3amonitor~3aproj))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3aproj))"></a><span title="Provided from: unstable/temp-c/monitor | Package: unstable-lib"><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3aproj%29%29" class="RktValDef RktValLink" data-pltdoc="x">monitor:proj</a></span></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%29%29" class="RktValLink" data-pltdoc="x">monitor</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">label</span><span class="stt"> </span><span class="RktSym">proj-label</span><span class="stt"> </span><span class="RktSym">v</span><span class="RktPn">)</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:transparent</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">proj-label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">v</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="together"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>struct</p></div></div><table cellspacing="0" cellpadding="0" class="RForeground"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=define-struct.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._struct%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">struct</a></span></td><td><span class="hspace">&nbsp;</span></td><td><span class="nobreak"><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall-args))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall-kw-args))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall-kws))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall-app-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall-f))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall-proj-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall~3f))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._struct~3amonitor~3acall))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3acall))"></a><span title="Provided from: unstable/temp-c/monitor | Package: unstable-lib"><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3acall%29%29" class="RktValDef RktValLink" data-pltdoc="x">monitor:call</a></span></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%29%29" class="RktValLink" data-pltdoc="x">monitor</a></span></span></td><td><span class="hspace">&nbsp;</span><span class="RktPn">(</span></td><td><span class="nobreak"><span class="RktSym">label</span></span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">proj-label</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">f</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">app-label</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">kws</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">kw-args</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">args</span><span class="RktPn">)</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:transparent</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">proj-label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">f</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=procedures.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._procedure%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">procedure?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">app-label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">kws</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._listof%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=keywords.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._keyword%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">keyword?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">kw-args</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">args</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list?</a></span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="together"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>struct</p></div></div><table cellspacing="0" cellpadding="0" class="RForeground"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=define-struct.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._struct%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">struct</a></span></td><td><span class="hspace">&nbsp;</span></td><td><span class="nobreak"><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-rets))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-args))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-kw-args))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-kws))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-app-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-f))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-proj-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn-label))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn~3f))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._struct~3amonitor~3areturn))"></a><a name="(def._((lib._unstable/temp-c/monitor..rkt)._monitor~3areturn))"></a><span title="Provided from: unstable/temp-c/monitor | Package: unstable-lib"><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3areturn%29%29" class="RktValDef RktValLink" data-pltdoc="x">monitor:return</a></span></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%29%29" class="RktValLink" data-pltdoc="x">monitor</a></span></span></td><td><span class="hspace">&nbsp;</span><span class="RktPn">(</span></td><td><span class="nobreak"><span class="RktSym">label</span></span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">proj-label</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">f</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">app-label</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">kws</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">kw-args</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">args</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym">rets</span><span class="RktPn">)</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:transparent</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">proj-label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">f</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=procedures.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._procedure%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">procedure?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">app-label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">kws</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._listof%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=keywords.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._keyword%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">keyword?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">kw-args</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">args</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">rets</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list?</a></span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="together"><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._((lib._unstable/temp-c/monitor..rkt)._monitor/c))"></a><span title="Provided from: unstable/temp-c/monitor | Package: unstable-lib"><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%2Fc%29%29" class="RktValDef RktValLink" data-pltdoc="x">monitor/c</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">monitor-allows?</span><span class="hspace">&nbsp;</span><span class="RktVar">label</span><span class="hspace">&nbsp;</span><span class="RktVar">c</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=contract-utilities.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._contract%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">contract?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">monitor-allows?</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3f%29%29" class="RktValLink" data-pltdoc="x">monitor?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">label</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">c</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=contract-utilities.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._contract%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">contract?</a></span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara"><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%2Fc%29%29" class="RktValLink" data-pltdoc="x">monitor/c</a></span> creates a new contract around <span class="RktVar">c</span> that uses <span class="RktVar">monitor-allows?</span> to approve
contract boundary crossings. (<span class="RktVar">c</span> approves positive crossings first.)</div></p><p>Whenever a value <span class="RktSym">v</span> is projected by the result of <span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%2Fc%29%29" class="RktValLink" data-pltdoc="x">monitor/c</a></span>, <span class="RktVar">monitor-allows?</span>
must approve a <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3aproj%29%29" class="RktValLink" data-pltdoc="x">monitor:proj</a></span><span class="stt"> </span><span class="RktVar">label</span><span class="stt"> </span><span class="RktSym">proj-label</span><span class="stt"> </span><span class="RktSym">v</span><span class="RktPn">)</span> structure, where <span class="RktSym">proj-label</span> is a unique
symbol for this projection.</p><p>If <span class="RktVar">monitor-allows?</span> approves and the value is not a function, then the value is returned.</p><p>If the value is a function, then a projection is returned, whenever it is called, <span class="RktVar">monitor-allows?</span>
must approve a <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3acall%29%29" class="RktValLink" data-pltdoc="x">monitor:call</a></span><span class="stt"> </span><span class="RktVar">label</span><span class="stt"> </span><span class="RktSym">proj-label</span><span class="stt"> </span><span class="RktSym">v</span><span class="stt"> </span><span class="RktSym">app-label</span><span class="stt"> </span><span class="RktSym">kws</span><span class="stt"> </span><span class="RktSym">kw-args</span><span class="stt"> </span><span class="RktSym">args</span><span class="RktPn">)</span> structure,
where <span class="RktSym">app-label</span> is a unique symbol for this application and <span class="RktSym">kws</span>, <span class="RktSym">kw-args</span>, <span class="RktSym">args</span>
are the arguments passed to the function.</p><p>Whenever it returns, <span class="RktVar">monitor-allows?</span>
must approve a <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3areturn%29%29" class="RktValLink" data-pltdoc="x">monitor:return</a></span><span class="stt"> </span><span class="RktVar">label</span><span class="stt"> </span><span class="RktSym">proj-label</span><span class="stt"> </span><span class="RktSym">v</span><span class="stt"> </span><span class="RktSym">app-label</span><span class="stt"> </span><span class="RktSym">kws</span><span class="stt"> </span><span class="RktSym">kw-args</span><span class="stt"> </span><span class="RktSym">args</span><span class="stt"> </span><span class="RktSym">rets</span><span class="RktPn">)</span> structure,
where <span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._ret%29%29" class="RktStxLink" data-pltdoc="x">ret</a></span> are the return values of the application.</p><p>The unique projection label allows explicitly monitored contracts to be useful when used in a first-class way
at different boundaries.</p><p>The unique application label allows explicitly monitored contracts to pair calls and returns when functions
return multiple times or never through the use of continuations.</p><p><div class="SIntrapara">Here is a short example that uses an explicit monitor to ensure that <span class="RktVar">malloc</span> and <span class="RktVar">free</span> are
used correctly.
</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="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._define%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">define</a></span><span class="hspace">&nbsp;</span><span class="RktSym">allocated</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=hashtables.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._make-weak-hasheq%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">make-weak-hasheq</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._define%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">define</a></span><span class="hspace">&nbsp;</span><span class="RktSym">memmon</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=match.html%23%2528form._%2528%2528lib._racket%252Fmatch..rkt%2529._match-lambda%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">match-lambda</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3areturn%29%29" class="RktValLink" data-pltdoc="x">monitor:return</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">malloc</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list</a></span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=hashtables.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._hash-set%2521%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">hash-set!</a></span><span class="hspace">&nbsp;</span><span class="RktSym">allocated</span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="hspace">&nbsp;</span><span class="RktVal">#t</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktVal">#t</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3acall%29%29" class="RktValLink" data-pltdoc="x">monitor:call</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">free</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list</a></span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=hashtables.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmore-scheme..rkt%2529._hash-has-key%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">hash-has-key?</a></span><span class="hspace">&nbsp;</span><span class="RktSym">allocated</span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor~3areturn%29%29" class="RktValLink" data-pltdoc="x">monitor:return</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">free</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">list</a></span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=hashtables.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._hash-remove%2521%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">hash-remove!</a></span><span class="hspace">&nbsp;</span><span class="RktSym">allocated</span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktVal">#t</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktVal">#t</span><span class="RktPn">]</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=attaching-contracts-to-values.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fprovide..rkt%2529._provide%252Fcontract%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">provide/contract</a></span></td></tr><tr><td><span class="hspace">&nbsp;</span><span class="RktPn">[</span><span class="RktSym">malloc</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%2Fc%29%29" class="RktValLink" data-pltdoc="x">monitor/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym">memmon</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">malloc</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._number%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">number?</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;</span><span class="RktPn">[</span><span class="RktSym">free</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%2Fc%29%29" class="RktValLink" data-pltdoc="x">monitor/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym">memmon</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">free</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._number%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">number?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">void</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr></table></blockquote></div></p><h4 x-source-module="(lib &quot;unstable/scribblings/unstable.scrbl&quot;)" x-part-tag="&quot;dsl&quot;">30.3<tt>&nbsp;</tt><a name="(part._dsl)"></a><a name="(mod-path._unstable/temp-c/dsl)"></a>Domain Specific Language</h4><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._unstable%2Ftemp-c%2Fdsl%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">unstable/temp-c/dsl</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">unstable-lib</span></span></td></tr></table></p><p>Constructing explicit monitors using only <span class="RktSym"><a href="#%28def._%28%28lib._unstable%2Ftemp-c%2Fmonitor..rkt%29._monitor%2Fc%29%29" class="RktValLink" data-pltdoc="x">monitor/c</a></span> can be a bit onerous. This module provides some helpful tools for making the definition easier. It provides everything from <a href="#%28mod-path._unstable%2Ftemp-c%2Fmonitor%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">unstable/temp-c/monitor</span></a>, as well as all bindings from <a href="Automata__Compiling_State_Machines.html#%28mod-path._unstable%2Fautomata%2Fre%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">unstable/automata/re</span></a> and <a href="Automata__Compiling_State_Machines.html#%28mod-path._unstable%2Fautomata%2Fre-ext%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">unstable/automata/re-ext</span></a>. The latter provide a DSL for writing "dependent" regular expression machines over arbitrary <a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=match.html&amp;version=6.1" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">racket/match</span></a> patterns.</p><p>First, a few <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=match.html%23%2528form._%2528%2528lib._racket%252Fmatch..rkt%2529._match%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">match</a></span> patterns are available to avoid specify all the details of monitored events (since most of the time the detailed options are unnecessary.)</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._unstable/temp-c/dsl..rkt)._call))"></a><span title="Provided from: unstable/temp-c/dsl | Package: unstable-lib"><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._call%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">call</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">n</span><span class="hspace">&nbsp;</span><span class="RktVar">a</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> A <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=match.html%23%2528form._%2528%2528lib._racket%252Fmatch..rkt%2529._match%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">match</a></span> expander for call events to the labeled function <span class="RktVar">n</span> with arguments <span class="RktVar">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._unstable/temp-c/dsl..rkt)._ret))"></a><span title="Provided from: unstable/temp-c/dsl | Package: unstable-lib"><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._ret%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">ret</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">n</span><span class="hspace">&nbsp;</span><span class="RktVar">a</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> A <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=match.html%23%2528form._%2528%2528lib._racket%252Fmatch..rkt%2529._match%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">match</a></span> expander for return events to the labeled function <span class="RktVar">n</span> with return values <span class="RktVar">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._((lib._unstable/temp-c/dsl..rkt)._with-monitor))"></a><span title="Provided from: unstable/temp-c/dsl | Package: unstable-lib"><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._with-monitor%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">with-monitor</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">contract-expr</span><span class="hspace">&nbsp;</span><span class="RktVar">re-pat</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Defines a monitored contract where the structural portion of the contract is the <span class="RktVar">contract-expr</span> (which may included embedded <span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._label%29%29" class="RktStxLink" data-pltdoc="x">label</a></span> expressions) and where the temporal portion of the contract is the regular expression given by <span class="RktVar">re-pat</span>. (Note: <span class="RktVar">re-pat</span> is not a Racket expression that evaluates to a regular expression. It is a literal regular expression.)  An optional <span class="RktPn">#:concurrent</span> may be added between the contract and the regular expression to ensure that the machine is safe against race-conditions.</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._unstable/temp-c/dsl..rkt)._label))"></a><span title="Provided from: unstable/temp-c/dsl | Package: unstable-lib"><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._label%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">label</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">id</span><span class="hspace">&nbsp;</span><span class="RktVar">contract-expr</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara"> Labels a portion of a structural contract inside of <span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._with-monitor%29%29" class="RktStxLink" data-pltdoc="x">with-monitor</a></span> with the label <span class="RktVar">id</span>. </div></p><p><div class="SIntrapara">Here is a short example for <span class="RktVar">malloc</span> and <span class="RktVar">free</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._unstable%2Ftemp-c%2Fdsl..rkt%29._with-monitor%29%29" class="RktStxLink" data-pltdoc="x">with-monitor</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._cons%252Fc%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">cons/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._label%29%29" class="RktStxLink" data-pltdoc="x">label</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">malloc</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym">addr?</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._label%29%29" class="RktStxLink" data-pltdoc="x">label</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">free</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym">addr?</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="Automata__Compiling_State_Machines.html#%28form._%28%28lib._unstable%2Fautomata%2Fre..rkt%29._complement%29%29" class="RktStxLink" data-pltdoc="x">complement</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="Automata__Compiling_State_Machines.html#%28form._%28%28lib._unstable%2Fautomata%2Fre..rkt%29._seq%29%29" class="RktStxLink" data-pltdoc="x">seq</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="Automata__Compiling_State_Machines.html#%28form._%28%28lib._unstable%2Fautomata%2Fre..rkt%29._star%29%29" class="RktStxLink" data-pltdoc="x">star</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529.__%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">_</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="Automata__Compiling_State_Machines.html#%28form._%28%28lib._unstable%2Fautomata%2Fre..rkt%29._dseq%29%29" class="RktStxLink" data-pltdoc="x">dseq</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._call%29%29" class="RktStxLink" data-pltdoc="x">call</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">free</span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="Automata__Compiling_State_Machines.html#%28form._%28%28lib._unstable%2Fautomata%2Fre..rkt%29._seq%29%29" class="RktStxLink" data-pltdoc="x">seq</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="Automata__Compiling_State_Machines.html#%28form._%28%28lib._unstable%2Fautomata%2Fre..rkt%29._star%29%29" class="RktStxLink" data-pltdoc="x">star</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._not%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">not</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._ret%29%29" class="RktStxLink" data-pltdoc="x">ret</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">malloc</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=match.html%23%2528form._%2528%2528lib._racket%252Fmatch..rkt%2529._%7E3d%7E3d%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">==</a></span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._unstable%2Ftemp-c%2Fdsl..rkt%29._call%29%29" class="RktStxLink" data-pltdoc="x">call</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">free</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=match.html%23%2528form._%2528%2528lib._racket%252Fmatch..rkt%2529._%7E3d%7E3d%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">==</a></span><span class="hspace">&nbsp;</span><span class="RktSym">addr</span><span class="RktPn">)</span><span class="RktPn">)</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></p><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;6.1&quot;, &quot;../&quot;);" onfocus="this.style.color=&quot;black&quot;; this.style.textAlign=&quot;left&quot;; if (this.value == &quot;...search manuals...&quot;) this.value=&quot;&quot;;" onblur="if (this.value.match(/^ *$/)) { this.style.color=&quot;#888&quot;; this.style.textAlign=&quot;center&quot;; this.value=&quot;...search manuals...&quot;; }"/></form>&nbsp;&nbsp;<a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;6.1&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="syntax.html" title="backward to &quot;29 Syntax&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;Unstable: May Change Without Warning&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="unix-socket.html" title="forward to &quot;31 Unix Domain Sockets&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div></div></div><div id="contextindicator">&nbsp;</div></body></html>