<div dir="ltr">Well, I&#39;m not sure that I buy that motivation, since I think decisions about what should be eq? to what should be driven by performance (and eq? should only be used for performance) but lets put that aside.<div>
<br></div><div style>There are some unused bits in Racket&#39;s runtime representation of values, namely when a value&#39;s bit representation ends in 10, we know that it isn&#39;t a fixnum (since it doesn&#39;t end with 1) and that it isn&#39;t a pointer (since pointers have end with 00 (at least)), so I think that means that we could have all of the unicode code points represented in a way that requires no allocation (currently, iiuc, the ASCII characters are just pre-allocated at the runtime startup; they require no allocation because you always just get the same pointer).</div>
<div style><br></div><div style>This is a pretty big change, however, so I&#39;m not sure it would be worth it.</div><div style><br></div><div style>Robby</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Sat, May 4, 2013 at 11:56 AM, Jon Zeppieri <span dir="ltr">&lt;<a href="mailto:zeppieri@gmail.com" target="_blank">zeppieri@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">
Something about my response below has been bothering me, and I think I know what it is: the correspondence between characters and the fixnums that represent their code points seems -- how to put it? -- more complete if it extends to their equality predicates. So, yeah, in addition to performance, there&#39;s an aesthetic motivation, too.<br>

<div class="HOEnZb"><div class="h5"><br>
On May 4, 2013, at 12:03 PM, Jon Zeppieri &lt;<a href="mailto:zeppieri@gmail.com">zeppieri@gmail.com</a>&gt; wrote:<br>
<br>
&gt; Just for performance. No other reason.<br>
&gt;<br>
&gt; -Jon<br>
&gt;<br>
&gt; On Sat, May 4, 2013 at 12:01 PM, Robby Findler<br>
&gt; &lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt; wrote:<br>
&gt;&gt; I&#39;m curious: why do you want all characters to be eq? to each other instead<br>
&gt;&gt; of just equal??<br>
&gt;&gt;<br>
&gt;&gt; Robby<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Sat, May 4, 2013 at 10:57 AM, Jon Zeppieri &lt;<a href="mailto:zeppieri@gmail.com">zeppieri@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Since incompatible future changes seem to be coming up a lot, I<br>
&gt;&gt;&gt; thought I&#39;d add one more. What do the members of this list think of<br>
&gt;&gt;&gt; removing eqv? all of its associated machinery (e.g., memv, hasheqv,<br>
&gt;&gt;&gt; etc.)?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; (Along with this change, it would be nice if characters could all be<br>
&gt;&gt;&gt; immediately represented, so that those with equal code points would be<br>
&gt;&gt;&gt; eq? RIght now, all unicode code points can be encoded in 22 bits, I<br>
&gt;&gt;&gt; think. I&#39;m not so familiar with racket&#39;s current representation of<br>
&gt;&gt;&gt; characters, but I figure that they could easily be fit into a single<br>
&gt;&gt;&gt; machine word on 64-bit builds. I don&#39;t know how difficult it would be<br>
&gt;&gt;&gt; on 32-bit builds. And, of course, there&#39;s no guarantee that the number<br>
&gt;&gt;&gt; of code points won&#39;t increase significantly.)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Alternatively (and following Sam&#39;s line of thought from [1]), eqv?<br>
&gt;&gt;&gt; could be extended to cover all of racket&#39;s immutable data structures.<br>
&gt;&gt;&gt; In this case eqv? should also be made generic so that user-defined<br>
&gt;&gt;&gt; immutable data structures can use it, as well.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [1] <a href="http://lists.racket-lang.org/users/archive/2013-April/057510.html" target="_blank">http://lists.racket-lang.org/users/archive/2013-April/057510.html</a><br>
&gt;&gt;&gt; _________________________<br>
&gt;&gt;&gt;  Racket Developers list:<br>
&gt;&gt;&gt;  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
</div></div></blockquote></div><br></div>