All dynamic/c does is apply three contracts in a particular order where one is dynamic.<div><br></div><div>coerce/c strongly implies that the function is coercion, but its implementation is similar to how the contract system must already use projection functions (ie it cannot confirm that are actually projections; it just applies them and uses the result)</div>
<div><br></div><div>The default value of current-response/c is a projection (any/c)</div><div><br></div><div>The compatibility library does not provide anything with the /c suffix that is a coercion --- it gives normalize-response and automatically sets current-response/c, but doesn&#39;t give anything that implies it is a &quot;contract&quot;</div>
<div><br></div><div>Thus, the only thing that IMHO should irk you is xexpr-response/c that has the /c suffix and uses coerce/c with an actual coercion. Is that the case? What do you want me to call it?</div><div><br></div>
<div>Jay<br><br><div class="gmail_quote">On Sun, Dec 5, 2010 at 6:46 AM, Robby Findler <span dir="ltr">&lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
You&#39;ve made a contract that isn&#39;t a projection, but does a coercion?<br>
<br>
I&#39;d be happier if you instead made your own separate wrappers and<br>
didn&#39;t use &quot;/c&quot; and didn&#39;t call this a contract.<br>
<font color="#888888"><br>
Robby<br>
</font><div><div></div><div class="h5"><br>
On Sun, Dec 5, 2010 at 12:29 AM, Jay McCarthy &lt;<a href="mailto:jay.mccarthy@gmail.com">jay.mccarthy@gmail.com</a>&gt; wrote:<br>
&gt; Giving special consideration to Eli and YC&#39;s perspectives, I&#39;ve come up with<br>
&gt; the following way out of this problem.<br>
&gt; I found a way to provide a global hook that is tasteful to me. I&#39;ve created<br>
&gt; &quot;dynamic/c&quot;. Here&#39;s a little example:<br>
&gt; Examples:<br>
&gt;   (define p (make-parameter any/c))<br>
&gt;   (define c (dynamic/c string? p number?))<br>
&gt;   &gt; (contract c &quot;123&quot; &#39;pos &#39;neg)<br>
&gt;   pos broke the contract<br>
&gt;     (dynamic<br>
&gt;      string?<br>
&gt;      #&lt;procedure:parameter-procedure&gt;<br>
&gt;      number?)<br>
&gt;    on eval:5:0; expected &lt;number?&gt;, given: &quot;123&quot;<br>
&gt;   &gt; (p (coerce/c string-&gt;number))<br>
&gt;   &gt; (contract c &quot;123&quot; &#39;pos &#39;neg)<br>
&gt;   123<br>
&gt;   &gt; (contract c &quot;123a&quot; &#39;pos &#39;neg)<br>
&gt;   pos broke the contract<br>
&gt;     (dynamic<br>
&gt;      string?<br>
&gt;      #&lt;procedure:parameter-procedure&gt;<br>
&gt;      number?)<br>
&gt;    on eval:8:0; Coercion failed<br>
&gt; The Web Server will define response/c as (dynamic/c any/c current-response/c<br>
&gt; response?) and provide the current-response/c parameter for customization.<br>
&gt; The default will be no coercion, but Xexpr conversion will be easily<br>
&gt; accessible. A compatibility library will automatically set<br>
&gt; current-response/c appropriately.<br>
&gt; Attached is the new compatibility README.<br>
&gt; I hope this will satisfy all.<br>
&gt; Jay<br>
&gt;<br>
&gt; --<br>
&gt; Jay McCarthy &lt;<a href="mailto:jay@cs.byu.edu">jay@cs.byu.edu</a>&gt;<br>
&gt; Assistant Professor / Brigham Young University<br>
&gt; <a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
&gt;<br>
&gt; &quot;The glory of God is Intelligence&quot; - D&amp;C 93<br>
&gt;<br>
</div></div><div><div></div><div class="h5">&gt; _________________________________________________<br>
&gt;  For list-related administrative tasks:<br>
&gt;  <a href="http://lists.racket-lang.org/listinfo/dev" target="_blank">http://lists.racket-lang.org/listinfo/dev</a><br>
&gt;<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Jay McCarthy &lt;<a href="mailto:jay@cs.byu.edu" target="_blank">jay@cs.byu.edu</a>&gt;<br>Assistant Professor / Brigham Young University<br><a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
<br>&quot;The glory of God is Intelligence&quot; - D&amp;C 93<br>
</div>