On Thu, Feb 28, 2013 at 11:23 PM, AtKaaZ <[email protected]> wrote:
> => *(contains? '(1 2 3) 1)*
> IllegalArgumentException contains? not supported on type:
> clojure.lang.PersistentList clojure.lang.RT.contains (RT.java:724)
>
> => **clojure-version**
> {:major 1, :minor 5, :incremental 0, :qualifier "RC17"}
>
>
> => *(contains? "foo" "o")*
> IllegalArgumentException contains? not supported on type:
> java.lang.String clojure.lang.RT.contains (RT.java:724)
>
> => *(contains? [:a :b :c] :a)*
> false
>
> whoops
>
> contains? clojure.core
>
> Argument Lists:
> [coll key]
>
> Documentation:
> Returns true if key is present in the given collection, otherwise
> returns false. Note that for numerically indexed collections like
> vectors and Java arrays, this tests if the numeric key is within the
> range of indexes. 'contains?' operates constant or logarithmic
> time;
> it will not perform a linear search for a value. See also 'some'.
>
> => (contains? '[:a :b :c] 1)
> true
> => (contains? '[:a :b :c] 3)
> false
> => (contains? '[:a :b :c] 2)
> true
>
> well, I would not have expected that
>
> the code for that is this:
clojure.lang.APersistentVector.containsKey(Object)
public boolean containsKey(Object key){
if(!(Util.isInteger(key)))
return false;
int i = ((Number) key).intValue();
return i >= 0 && i < count();
}
if you ask me, it should throw rather than return false, that is, if anyone
cares about not introducing subtle errors easily
>
> On Thu, Feb 28, 2013 at 11:14 PM, Irakli Gozalishvili <[email protected]>wrote:
>
>> Hi,
>>
>> Function
>> contains?<http://clojuredocs.org/clojure_core/clojure.core/contains_q>
>> returns
>> true if key is present in the given collection, although arguably on some
>> data structures
>> one would expect behaviour to be different. In fact it's already
>> different on sets:
>>
>> (contains? #{:a :b :c} :a) ; => true
>>
>> Would that be reasonable to change behaviour for other types too like:
>>
>> (contains? [:a :b :c] :a) ; => false
>> (contains? "foo" "o") ; => false
>> (contains? '(1 2 3) 1) ; => false
>>
>> So they do return `true` instead ?
>>
>> If that will break too much code, maybe some other function can be added
>> instead ?
>>
>> Regards
>> --
>> Irakli Gozalishvili
>> Web: http://www.jeditoolkit.com/
>>
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to [email protected]
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> 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
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
>
> --
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate it.
>
>
--
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate it.
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
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
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.