[R6RS] inconsistent naming of arithmetic predicates

Anton van Straaten anton at appsolutions.com
Thu Jun 29 15:54:57 EDT 2006


Will wrote:
> I would like to rename the SRFI 77 predicates
> by adopting one of these two rules:
> 
>  1. No question mark is added for predicates
>     corresponding to =, <, or >.

Is that intended to include >= and <= ?  If not, I think it should.

>  2. If the predicate contains any letters at
>     all, then it ends with a question mark.
> 
> These two rules would give us these options:
> 
>  1. =
>     fixnum=
>     fx=
>     fl=
>     exact=
>     inexact=
> 
> or
> 
>  2. =
>     fixnum=?
>     fx=?
>     fl=?
>     exact=?
>     inexact=?
> 
> I prefer the first.  The second would be more
> consistent with the rule that gave us char=?,
> string=?, char-ci=?, and string-ci=?.

I vote for rule 1.  My order of preference is 1, 1, 1.  I have four 
reasons for this:

1. The predicate seems implicit in =, <. >, <=. and >=.  The question 
mark isn't necessary.

2. The convention in rule 1 is already used by the generic arithmetic 
comparison operator names.  A question mark would be inconsistent with 
that convention, at least for predicates which apply to numeric types.

3. For identifiers which already end in punctuation, adding a question 
mark adds noise, visually, without adding information.

4. For identifiers which already end in punctuation, the question mark 
makes them slightly more difficult to type (on a QWERTY keyboard, at least).

As a counterpoint to point 2 above, the rule 1 convention is 
inconsistent with the string and char predicates, and a few others. 
However, that inconsistency already exists with the generic arithmetic 
operators.

We could eliminate the inconsistency entirely by removing the question 
mark from all such predicates: 20 R5RS string and char predicates, plus 
the three new predicates free-identifier=?, bound-identifier=?, and 
bytes=?.  The old R5RS names could be moved into the compatibility library.

Otherwise, the choice is between being consistent across names which 
apply to numeric values, or being consistent across names which contain 
alphabetic characters.  Consistency based on the semantics of the 
operation seems more important than consistency based on a superficial 
property of their names.

Finally, there's a possible benefit in having a strict rule that all 
predicate names end in a question mark.  It makes them slightly easier 
to type in the "x x -> boolean" sense.  But all Rule 1 does is add to 
the number of suffixes which can signify a predicate.  This a minor issue.

OK, I painted the shed.  Did I miss any spots?

Anton




More information about the R6RS mailing list