Hi Alex, thanks for the update. Let me try to explain the issue from my point of view, with the hope of changing your mind.
Predicates in Clojure never throw exceptions on the false case as this would break any of the higher order functions that use them.
The predicates that can throw in clojure.core are the ones that are specific to the type of the operand, like realized? (
CLJ-1751), pos?, zero?, neg?, etc, rather than the type-check predicates which don't throw, like integer?. To take a single example, when the user is going to call pos-long? in a situation where the value that they want to test could be nil, they need to understand if it behaves like pos?, which can throw, or long? which will always return true or false. From the docstring as authored, it is not clear how pos-long? behaves when passed nil.
Also these docstrings match the style of all the other older preds.
The docstrings do match the style of the existing predicate docstrings, so this might be a good opportunity to update the docstrings to full document the behaviour. As it stands (constantly true) would be a valid implementation of pos-long? according to the docstring, since the docstring does not indicate under what conditions the function returns false.
The reason that I'm labouring the point is that I personally have found it difficult to learn the core Clojure library by relying solely on the docstrings. I often find myself having to reply on the examples on clojuredocs.org and answers on Stack Overflow to learn how many of the function in core operate.