On Thursday, October 25, 2012 12:49:32 PM UTC+2, Tassilo Horn wrote: > > 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. >
Ok that makes sense. > > > 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). > Yes I understand that, the proposal was just to avoid exceptions when used with apply, but this could end up be bit confusing maybe, and it can be tested beforehand anyway. Max -- 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
