The extension 'p' stands for 'predicate'. A predicate is a test which returns a Boolean result of true or false. The idea of a predicate applies to most if not all languages.
An example is 'zero predicate' of a parameter, x, which returns true if x is zero, or false if it is not zero.
The style varies from language to language, and also it depends on the predicate name. Clojure's style is to add a question mark. Common Lisp's style is to add a 'p' to the name, usually. Common Lisp has an exception for predicate names containing a hyphen, when '-p' is added. The first example seems to want to do both styles, '?' and 'p', depending on what style the user is used to.
Coding of a predicate involves making a test and returning the result instead of acting on it.
Python:
def zerop (x):
return x == 0
# zerop (0) => True
# zerop (1) => False
Common Lisp:
(defun my-zero-p (x)
(= x 0))
; (my-zero-p 0) => t
; (my-zero-p 1) => nil