[r6rs-discuss] [Formal] Make unspecified return values of eq? / eqv? unspecified

From: Michael Sperber <sperber>
Date: Thu Jan 25 15:49:15 2007

---
This message is a formal comment which was submitted to formal-comment_at_r6rs.org, following the requirements described at: http://www.r6rs.org/process.html
---
Submitter's name: Mike Sperber
Submitter's email address: sperber at deinprogramm dot de
Type of issue: Enhancement
Priority: Minor
R6RS component: Base language
Version of the report: 5.92
One-sentence summary of the issue: The specification of eq? and eqv?
  should allow portability-checking implementations
Full description of the issue:
In the current draft, the return value of `eq?' and `eqv?' isn't
specified for all combinations of arguments.  Yet, the return value is
constrained to be #t or #f.
This makes it easy to write unportable programs, for example by using
`eq?' to compare characters under the assumption that it's faster than
`char=?', or by using it to a number to assumed to be a fixnum with an
immediate representation that `eq?' handles.  As an implementation
must return #t or #f even when applied to arguments where the return is
unspecified, the draft does not permit an implementation that would
detect (some) unspecified cases and notify the programmer and/or user
in that case.
Suggestion:
Allow implementations to return other values than #t or #f for the
unspecified cases, and also allow them to abort the program or raise
an exception for those cases.
Received on Thu Jan 25 2007 - 04:20:29 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC