unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
From: Atticus <atticus0@posteo.org>
To: tomas@tuxteam.de
Cc: 21855@debbugs.gnu.org
Subject: bug#21855: eq?
Date: Sun, 08 Nov 2015 14:30:42 +0100	[thread overview]
Message-ID: <87pozkoby5.fsf@posteo.org> (raw)
In-Reply-To: <20151108102323.GA5299@tuxteam.de>

tomas@tuxteam.de writes:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On Sat, Nov 07, 2015 at 01:58:48PM +0100, Atticus wrote:
>> So I wanted to try out gnu guix and thus make myself more familiar with
>> guile first. While running some tests I encountered a problem/bug with eq?:
>> 
>> $ guile -v
>> guile (GNU Guile) 2.1.1
>> 
>> $ guile
>> scheme@(guile-user)>
>> (define (multirember a lat)
>>   (cond
>>    ((null? lat) '())
>>    ((eq? (car lat) a) (multirember a (cdr lat)))
>>    (else (cons (car lat) (multirember a (cdr lat))))))
>>    
>> scheme@(guile-user)> (multirember '(a b) '(x y (a b) z (a b)))
>> $1 = (x y z)
>> 
>> So why does guile return (x y z)? I expected (x y (a b) z (a b)). I know
>> eq? should only be used with symbols (and thus this example is more
>> theoretical) but nevertheless the return value is not right, since (eq?
>> '(a b) '(a b)) returns #f (Btw same in guile 2.0.11).
>
> Hm. As far as I know (eq? '(a b) '(a b)) is not *guaranteed* to evaluate
> to #f. The implementation might be free to re-use things it "knows" to be
> constant (I might be wrong, though).

Yes you are right that the implementation may treat it as non #f if both
arguments refer to the same object. In r5rs (and also r6rs) (eq? '(a)
'(a)) is unspecified (r5rs, page 19) and thus implementation dependant
but I don't think the behaviour of eq? is consistent in guile. As I said
(eq? '(a b) '(a b)) on its own returns #f and imho there is no reason why eq?
inside a procedure (in this example in 'multirember') should behave
different, since the '(a b) in the second argument does not refer to the
'(a b) of the first argument.

Since it's not clear if this is a "real" bug, perhaps a further
discussion at guile-user@gnu.org would be better. What is the
recommended proceeding in such a case? A reply with the pseudo-header
"X-Debbugs-CC: guile-user@gnu.org"? Or is that not necessary and a
simple mail to guile-user to discuss this topic is sufficient?

Btw sorry for the bad bug report, I shoud have read the documentation
(didn't include the necessary pseudo-headers)





  reply	other threads:[~2015-11-08 13:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-07 12:58 bug#21855: eq? Atticus
2015-11-08 10:23 ` tomas
2015-11-08 13:30   ` Atticus [this message]
2015-11-08 13:38     ` tomas
2015-11-09  7:57       ` Atticus
2016-06-24 15:31   ` Andy Wingo

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=87pozkoby5.fsf@posteo.org \
    --to=atticus0@posteo.org \
    --cc=21855@debbugs.gnu.org \
    --cc=tomas@tuxteam.de \
    /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).