<p>Certainly the dependent contract approach will work, but the &#39;Real -&gt; Real&#39; contract is also safe, so I&#39;ll see about generating that.</p>
<p>Sam</p>
<div class="gmail_quote">On Jun 26, 2012 8:37 PM, &quot;Robby Findler&quot; &lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
In this case, the contract could turn into a dependent one with the<br>
same semantics. Does it make sense for TR to allow a user to declare<br>
the equivalent contract?<br>
<br>
Robby<br>
<br>
On Tue, Jun 26, 2012 at 7:17 PM, Neil Toronto &lt;<a href="mailto:neil.toronto@gmail.com">neil.toronto@gmail.com</a>&gt; wrote:<br>
&gt; Ten minutes in, I&#39;ve hit a snag. I&#39;d like the stuff in math/functions to<br>
&gt; have precise types. For example, log1p could have the type<br>
&gt;<br>
&gt;  (case-&gt; (Zero -&gt; Zero)<br>
&gt;          (Float -&gt; Float)<br>
&gt;          (Real -&gt; Real))<br>
&gt;<br>
&gt; It was easy to get the implementation to typecheck, but when I tried to plot<br>
&gt; it in untyped Racket, I got this:<br>
&gt;<br>
&gt;  Type Checker: The type of log1p cannot be converted to a contract in: log1p<br>
&gt;<br>
&gt; I really don&#39;t want to have two versions of the library. Could TR use the<br>
&gt; most general type (Real -&gt; Real) as the contract? Or would that be unsound?<br>
&gt;<br>
&gt; Neil ⊥<br>
&gt; _________________________<br>
&gt;  Racket Developers list:<br>
&gt;  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
<br>
_________________________<br>
  Racket Developers list:<br>
  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
</blockquote></div>