<div dir="ltr">Ah, yes.  The set? predicate no longer distinguishes a representation.  There are several predicates for the original set type, now called &quot;hash sets&quot;: set-eq?, set-eqv?, set-equal?, set-mutable?, set-immtuable?, and set-weak?.  I didn&#39;t add the basic &quot;hash-set?&quot;, but perhaps I should.  It&#39;s a weird name, since &quot;hash-set&quot; and &quot;hash-set!&quot; are already existing, unrelated functions.<br>

</div><div class="gmail_extra"><br clear="all"><div>Carl Eastlund</div>
<br><br><div class="gmail_quote">On Wed, Aug 21, 2013 at 7:08 PM, J. Ian Johnson <span dir="ltr">&lt;<a href="mailto:ianj@ccs.neu.edu" target="_blank">ianj@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">

Okay, I can abide. However, that doesn&#39;t really get at my frustration. I&#39;m using the set constructor, that appears to now be an immutable-custom-set with make-immutable-hash as its make-table. So what I&#39;m looking for is not set?, but set-immutable?, as it&#39;s a distinct (family of) struct types that won&#39;t clash with the primitive data that I&#39;m otherwise using.<br>


<span class="HOEnZb"><font color="#888888">-Ian<br>
</font></span><div class="HOEnZb"><div class="h5">----- Original Message -----<br>
From: &quot;Carl Eastlund&quot; &lt;<a href="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</a>&gt;<br>
To: &quot;J. Ian Johnson&quot; &lt;<a href="mailto:ianj@ccs.neu.edu">ianj@ccs.neu.edu</a>&gt;<br>
Cc: &quot;dev&quot; &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;<br>
Sent: Wednesday, August 21, 2013 6:58:56 PM GMT -05:00 US/Canada Eastern<br>
Subject: Re: [racket-dev] Lists aren&#39;t sets, but have set-like operations<br>
<br>
<br>
Ian, sets are now a generic datatype, like dictionaries. Association lists are dictionaries, and lists are now sets. They&#39;re also streams and sequences. They&#39;re not just &quot;set-like&quot;.<br>
<br>
<br>
<br>
Carl Eastlund<br>
<br>
<br>
On Wed, Aug 21, 2013 at 6:56 PM, J. Ian Johnson &lt; <a href="mailto:ianj@ccs.neu.edu">ianj@ccs.neu.edu</a> &gt; wrote:<br>
<br>
<br>
I just wasted about 2 hours tracking down a bug that ended up being due to (set? &#39;()) now evaluating to #t. I have no problems with set-union, intersection, etc. being defined for lists, but to treat lists as sets always is perverse to me. The contracts for set operations should use set-like? for (or/c set? list?) and keep the two constructions separate.<br>


<br>
This conflation is almost as bad as treating empty list as false.<br>
<br>
-Ian<br>
_________________________<br>
Racket Developers list:<br>
<a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
<br>
<br>
<br>
</div></div></blockquote></div><br></div>