Before 1.9.0 is officially released, I would like to propose a revisit to the semantic mismatch introduced by the *clojure.core/any? *function.
Many, many people are dissatisfied by the choice of *clojure.core/any?* to be defined as *(constantly true)*, which is completely in conflict with *clojure.core/not-any?* . After all, any logical person would automatically assume that: (= (not-any? args...) (not (any? args...)) for any set of legal arguments. This follows the well-established tradition in Clojure of having negated pairs such as* if* vs *if-not*, *when *vs *when-not*, *every? *vs* not-every?*, etc. However, I can see that it is convenient to say something like this: (s/fdef clojure.core/declare :args (s/cat :names (s/* simple-symbol?)) :ret any?) It seems a simple solution to the problem would be to just define some keyword specs in place of the globally visible *any? *function. The following example shows that we could define *:clojure.spec/pass-all *and *:clojure.spec/pass-none* which would could serve as an exact replacement for *any? *(& its negative). (:require [clojure.spec.alpha :as s] ...) (deftest demo (s/def ::s/pass-all (constantly true)) (s/def ::s/pass-none (constantly false)) (is (s/valid? ::s/pass-all 5 )) (is (s/valid? ::s/pass-all "joe" )) (is (s/valid? ::s/pass-all { :blah 42 :blue 66 :hut! 'hut! })) (is (not (s/valid? ::s/pass-none 5 )))) Since 1.9.0 is not out yet, is not too late to avoid a permanent pollution of the language with a gigantic mistake such as *any?*. At the very least, the function could be moved to *clojure.spec/any?* from *clojure.core*. If we insist on adding this blatant contradiction to *clojure.core*, we won't even have the excuse of a committee to blame it on. Alan Thompson On Sun, Nov 13, 2016 at 4:15 PM, Nathan Smutz <nsm...@gmail.com <https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=nsm...@gmail.com>> wrote: > Is there a Tricky Names for Nubies page? > We might save some stack-overflow searches. > > In the spirit of Honest Trailers: if we named functions for what they do: > or -> first-truthy > some -> first-satisfying > some? -> not-nil? > any? -> return-true > > Are there others? > > -- > 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 > <https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=clojure@googlegroups.com> > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > <https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=clojure%2bunsubscr...@googlegroups.com> > 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 clojure+unsubscr...@googlegroups.com > <https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=clojure%2bunsubscr...@googlegroups.com> > . > For more options, visit https://groups.google.com/d/optout. > -- 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 Note that posts from new members are moderated - please be patient with your first post. 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 --- 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 clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.