I agree with Stuart, I can't imagine this is how anyone new to Clojure
would expect this to work:

user=> (contains? [2 3 4] 1)
(contains? [2 3 4] 1)
true
user=> (contains? [2 3 4] 4)
(contains? [2 3 4] 4)
false
user=> (contains? (seq [2 3 4]) 1)
(contains? (seq [2 3 4]) 1)
false
user=> (contains? (seq [2 3 4]) 4)
(contains? (seq [2 3 4]) 4)
false

The fact that contains? is semantically different than
java.util.Collection#contains is confusing.  If contains? was called
contains-key?, that would be more intuitive and map to how it works in
Java.

On Sep 30, 5:29 pm, Stuart Halloway <[EMAIL PROTECTED]> wrote:
> For your specific case you should probably be using contains?, which  
> works for both.
>
> But I agree it seems odd.
>
>
>
> > The following looks weird to me:
>
> > Clojure
> > user=> (.contains [1 2 3] 2)
> > true
> > user=> (true? (.contains [1 2 3] 2))
> > false
>
> > AFAICS true? is implemented using identical? which tests by reference
> > equality. Now since Java boolean values are boxed into Booleans we  
> > have
> > not only Boolean.TRUE. Maybe true? (and false?) should be  
> > implemented in
> > terms of equals?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to