unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
From: Aubrey Jaffer <agj@alum.mit.edu>
Cc: bug-guile@gnu.org, user42@zip.com.au
Subject: Re: bug in eqv?
Date: Thu, 23 Mar 2006 19:17:53 -0500 (EST)	[thread overview]
Message-ID: <20060324001753.623721B77C9@home.voluntocracy.org> (raw)
In-Reply-To: <87acbjs6d3.fsf@minimini.mvo.home> (message from Marius Vollmer on 22 Mar 2006 01:52:40 +0200)

 | From: Marius Vollmer <mvo@zagadka.de>
 | Date: 22 Mar 2006 01:52:40 +0200
 | 
 | Kevin Ryde <user42@zip.com.au> writes:
 | 
 | > Aubrey Jaffer <agj@alum.mit.edu> writes:
 | > >
 | > > Because (= 0.0 -0.0) is #t, (eqv? 0.0 -0.0) must be #t.
 | > 
 | > Ah dear, thanks.  Bit too much creativity with the nans and infs.
 | 
 | Hmm.  I think SRFI 77 (Preliminary Proposal for R6RS Arithmetic) would
 | require (eqv? 0.0 -0.0) => #f, since it says
 | 
 |     The eqv? procedure returns #f if obj1 and obj2 yield different
 |     results (in the sense of eqv?) when passed as arguments to any
 |     other procedure that can be defined as a finite composition of
 |     Scheme's standard arithmetic procedures.
 | 
 | and, for example, (eqv? (flatan2 -1.0 -0.0) (flatan2 1.0 -0.0)) => #f.
 | See also "Lucier's Proposal" in the SRFI 77 document.

SRFI-77 is the most preliminary of proposals, and guaranteed to be
withdrawn.  If you are determined that Guile chase SRFI phantoms, then
be sure to note this variance from R4RS and R5RS in the documentation.

 | I originally copied the behavior of PLT Scheme

http://swiss.csail.mit.edu/~jaffer/III/RAWI shows that there are many
differences in implementations' numerical behavior.  One could justify
nearly any choice if the act of copying were, in itself, a
justification.

 | and I'd say it is OK to follow SRFI 77 for the behavior of negative
 | zero, infinities and NaNs now that it exists.

bash-2.05b$ mzscheme
Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.
> (eqv? -0.0 0.0)
#t

bash-2.05b$ mzscheme-301
Welcome to MzScheme version 301, Copyright (c) 2004-2005 PLT Scheme Inc.
> (eqv? -0.0 0.0)
#f
> (equal? -0.0 0.0)
#f

bash-2.05b$ guile
guile> (eqv? -0.0 0.0)
#f
guile> (equal? -0.0 0.0)
#t

SRFI-77 does not mention equal?, so R5RS would still be in effect:

 -- library procedure: equal? obj1 obj2
     `Equal?' recursively compares the contents of pairs, vectors, and
     strings, applying `eqv?' on other objects such as numbers and
     symbols.  A rule of thumb is that objects are generally `equal?'
     if they print the same.  `Equal?' may fail to terminate if its
     arguments are circular data structures.

If -0.0 and 0.0 print differently, then there is no support for 
(equal? -0.0 0.0) ==> #t.

 | (We get (integer? +inf.0) => #f wrong, then, and probably other
 | things.)

Mzscheme also does (integer? +inf.0) ==> #t.  Does that make it right?


_______________________________________________
Bug-guile mailing list
Bug-guile@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-guile


  reply	other threads:[~2006-03-24  0:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-18  3:42 bug in eqv? Aubrey Jaffer
2006-03-21  0:58 ` Kevin Ryde
2006-03-21 23:52   ` Marius Vollmer
2006-03-24  0:17     ` Aubrey Jaffer [this message]
2006-03-24 21:56       ` Kevin Ryde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060324001753.623721B77C9@home.voluntocracy.org \
    --to=agj@alum.mit.edu \
    --cc=bug-guile@gnu.org \
    --cc=user42@zip.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).