<div class="gmail_quote">On Wed, Mar 28, 2012 at 1:24 PM, Jay McCarthy <span dir="ltr">&lt;<a href="mailto:jay.mccarthy@gmail.com">jay.mccarthy@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div id=":2gs">I see a solution to the string-&gt;url to be that the function should<br>
just throw a contract violation exn internally without specifying the<br>
contract outside. You could document it as having some<br>
valid-url-string? that called string-&gt;url, but the actual contract<br>
applied to string-&gt;url would just be string?</div></blockquote></div><br><div>I don&#39;t want to focus too much on string-&gt;url and I think this discussion has moved past my level of knowledge, but I would like to describe my thesis a little bit to give people a sense of where I&#39;m coming from.</div>

<div><br></div><div>Right now the purpose of my thesis is to automatically load modules, grab contracts, generate values associated with those contracts, and try to break those functions with generated and stored values. This is based off of Casey Klein&#39;s OOPSLA paper. If the contract for string-&gt;url contains a regex in the domain one could easily see writing a random generator for regular expressions and thus automatically testing a wide variety of regex-filtered contracts.</div>

<div><br></div><div>If the contract is simply string? that doesn&#39;t mean I can&#39;t test string-&gt;url, but it does mean that I can&#39;t do it automatically and would need to create a specialized generator for all such cases. I&#39;m not sure if this affects the decision of what&#39;s best for Racket as a whole, but it may be food for thought.</div>

<div><br></div><div>Andy</div>