<div dir="ltr">FWIW, I think we&#39;ve known about this issue for a long time and I&#39;ve spent many hour mulling over eq? and what is the right way to think about it.<div><br></div><div>In this case, I violated my own rule (&quot;if eq? returns #f, you learned nothing -- the same thing you&#39;d learn as if you didn&#39;t call eq?&quot;).</div>
<div><br></div><div style>Robby</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Jan 26, 2013 at 11:06 AM, Matthias Felleisen <span dir="ltr">&lt;<a href="mailto:matthias@ccs.neu.edu" target="_blank">matthias@ccs.neu.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Sam, this seems to be a subtle change in semantics concerning interoperability that we understood but didn&#39;t think important. For the sake of making it all &quot;real&quot;, I think you should collect such examples. [I guess Robby and I understood this in the context of contracts and it could all have happened if we had slapped contracts on these borders.]<br>

<div><div class="h5"><br>
<br>
<br>
<br>
<br>
<br>
<br>
On Jan 26, 2013, at 11:48 AM, <a href="mailto:robby@racket-lang.org">robby@racket-lang.org</a> wrote:<br>
<br>
&gt; robby has updated `master&#39; from aaf4a2e16d to 2d2b3bee2f.<br>
&gt;  <a href="http://git.racket-lang.org/plt/aaf4a2e16d..2d2b3bee2f" target="_blank">http://git.racket-lang.org/plt/aaf4a2e16d..2d2b3bee2f</a><br>
&gt;<br>
&gt; =====[ One Commit ]=====================================================<br>
&gt; Directory summary:<br>
&gt; 100.0% collects/drracket/private/<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; 2d2b3be Robby Findler &lt;<a href="mailto:robby@racket-lang.org">robby@racket-lang.org</a>&gt; 2013-01-26 10:45<br>
&gt; :<br>
&gt; | fix a bug in executable creation<br>
&gt; |<br>
&gt; | The code used eq? to check to see if a given language was in<br>
&gt; | an list of allowed-to-create-executables languages. But the<br>
&gt; | language object was passing thru TR and so eq? didn&#39;t hold and<br>
&gt; | thus the check was buggy.<br>
&gt; :<br>
&gt;  M collects/drracket/private/language-configuration.rkt | 8 +++++---<br>
&gt;<br>
&gt; =====[ Overall Diff ]===================================================<br>
&gt;<br>
&gt; collects/drracket/private/language-configuration.rkt<br>
&gt; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
&gt; --- OLD/collects/drracket/private/language-configuration.rkt<br>
&gt; +++ NEW/collects/drracket/private/language-configuration.rkt<br>
&gt; @@ -85,9 +85,11 @@<br>
&gt;     (define languages null)<br>
&gt;<br>
&gt;     (define languages-allowing-executable-creation &#39;())<br>
&gt; -    (define (language-allows-executable-creation? lang)<br>
&gt; -      (and (memq lang languages-allowing-executable-creation)<br>
&gt; -           #t))<br>
&gt; +    (define (language-allows-executable-creation? candidate-lang)<br>
&gt; +      (define candidates-positions (send candidate-lang get-language-position))<br>
&gt; +      (for/or ([allowed-lang (in-list languages-allowing-executable-creation)])<br>
&gt; +        (equal? (send allowed-lang get-language-position)<br>
&gt; +                candidates-positions)))<br>
&gt;<br>
&gt;     ;; add-language : (instanceof language%) -&gt; void<br>
&gt;     ;; only allows addition on phase2<br>
<br>
<br>
</div></div>_________________________<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><br></div>