Hi,

(comp first filter) and some are not equivalent.

Consider this less simple case:

user=> (defn negate-or-nil [x] (when (even? x) (- x)))
#'user/negate-or-nil
user=> (first (filter negate-or-nil [1 2 3]))
2
user=> (some negate-or-nil [1 2 3])
-2
user=>

some returns the result of the predicate, filter returns the seq item
for which predicate matches.


Concerning the result of some, it seems better to return a more
meaningful value, because it still can be used as logical true, e.g.
in an if or when construct ...


2009/5/26 Sean Devlin <francoisdev...@gmail.com>:
>
> To add to my own post:
>
> There is also a discrepancy in what is returned from the two
>
> (some identity [1 2 3]) -> 1
> (every? identity [1 2 3]) -> true
>
> I would expect the following to occur
>
> (some identity [1 2 3]) -> true
>
> Granted, it's all the same to an if statement.  However, current
> behavior of some has the added use:
>
> (first (filter identity [1 2 3])) -> 1
> (some identity [1 2 3]) -> 1
>
> Is the equivalence a fluke, or is this by design?  Is there any
> promise that some will continue to behave this way in the future?  If
> so, it seems like a bad alias for (first (filter...))
>
> Just more to discuss
>
> On May 26, 9:02 am, Sean Devlin <francoisdev...@gmail.com> wrote:
>> I just noticed a quirk in the core API.  The some and every? functions
>> have different naming conventions.  Is there a reason for this?  If
>> not I think renaming/creating an alias some? would be very helpful.
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to