Max Penet <[email protected]> writes:

> user> ((every-pred (fn [_])))
> true
> user> ((some-fn (fn [_])))
> nil
>
> Shouldn't the first example return false? since the first function
> always returns nil?

No.  ((every-pred a b c) o1 o2 ...) returns true if all predicates a, b,
and c return true for all given args o1, o2, and so one.  You don't pass
any args, so this is basically (and), which also returns true.  `and` is
true if all arguments are logically true, which is trivially given when
none are provided.

> I was also wondering if it would make sense to add a 0 argument
> version of these, it would make their usage with apply more
> convenient, and comp which has a smiliar signature behaves like that:
>
> user> ((comp) true)
> true
>
> user> ((some-fn) true)
> ; Evaluation aborted.
>
> user> ((every-pred) true)
> ; Evaluation aborted.

(comp) is `identity` which makes sense.  What would the semantics be for
every-pred and some-fn?  IMO, it should be

user> ((some-fn) <no-matter-what>)
false
user> ((every-pred) <no-matter-what>)
true

e.g. (some-cn) was equivalent to (constantly false) and (every-pred) was
equivalent to (constantly true).

Bye,
Tassilo

-- 
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

Reply via email to