Re: Fixing MSVC's inability to detect elog(ERROR) does not return
От | Tom Lane |
---|---|
Тема | Re: Fixing MSVC's inability to detect elog(ERROR) does not return |
Дата | |
Msg-id | 1438905.1758081776@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Fixing MSVC's inability to detect elog(ERROR) does not return (David Rowley <dgrowleyml@gmail.com>) |
Ответы |
Re: Fixing MSVC's inability to detect elog(ERROR) does not return
|
Список | pgsql-hackers |
David Rowley <dgrowleyml@gmail.com> writes: > On Wed, 3 Sept 2025 at 23:32, Peter Eisentraut <peter@eisentraut.org> wrote: >> Btw., I think we should stick to the *_p() naming (for "predicate", I >> think) for compiler-intrinsic-affiliated functions/macros that report >> boolean results. > I didn't know what the _p suffix was meant to indicate. Do you have a > link which states that it's for "predicate"? It absolutely stands for "predicate". That's an ancient Lisp-ism. Here's the first link I found with some quick googling: https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node69.html A predicate is a function that tests for some condition involving its arguments and returns nil if the condition is false, or some non-nil value if the condition is true. One may think of a predicate as producing a Boolean value, where nil stands for false and anything else stands for true. Conditional control structures such as cond, if, when, and unless test such Boolean values. We say that a predicate is true when it returns a non-nil value, and is false when it returns nil; that is, it is true or false according to whether the condition being tested is true or false. By convention, the names of predicates usually end in the letter p (which stands for ``predicate''). Common Lisp uses a uniform convention in hyphenating names of predicates. If the name of the predicate is formed by adding a p to an existing name, such as the name of a data type, a hyphen is placed before the final p if and only if there is a hyphen in the existing name. For example, number begets numberp but standard-char begets standard-char-p. On the other hand, if the name of a predicate is formed by adding a prefixing qualifier to the front of an existing predicate name, the two names are joined with a hyphen and the presence or absence of a hyphen before the final p is not changed. For example, the predicate string-lessp has no hyphen before the p because it is the string version of lessp (a MacLisp function that has been renamed < in Common Lisp). The name string-less-p would incorrectly imply that it is a predicate that tests for a kind of object called a string-less, and the name stringlessp would connote a predicate that tests whether something has no strings (is ``stringless'')! Okay, that last part is pretty far down in the weeds. But a "p" suffix meaning "predicate" has decades of history behind it. regards, tom lane
В списке pgsql-hackers по дате отправления: