述語に関するひとくさり

 前期の講義でこんな話があったなー、というのを思い出したので書いてみる。Common Lispの仕様書より抜粋。適当に日本語に訳した。

 命名規則として、述語の名前はpで終わるべきであるとする。(pはpredicateに由来する。)Common Lispは述語の名前のハイフネーションに関し、単一の命名規則を用いる。述語の名前が既にある名前にpをつけるだけで作られる場合(データ型に対する述語のような場合)は、既に名前の中にハイフンがある場合に限り、ハイフンは最後のpの前に置かれる。例えば、数値(number)に対する述語はnumberpである。標準的な文字(standard-char)に対する述語はstandard-char-pである。
 一方、述語の名前が既に存在する述語の前に量化子(prefixing qualifier、訳に自信なし)を置くことで作られる場合、2つの名前はハイフンでつながれ、最後のpの前にハイフンがあるのかどうかは変わらない。例えば、string-lesspはlesspの文字列版なので、最後のpの前にハイフンは置かない。string-less-pという名前はstring-lessというデータ型に対する述語であるという勘違いを引き起こす可能性があるし、stringlesspという名前は文字列がない(stringless)というテストに対する述語であるという印象を与える。

 ハイフンひとつでこんなにだらだら書いてるからCommon Lispの仕様書は長いんだよ!とその先生が講義でおっしゃったかどうかは、定かではありません。