This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.
Source for ticket #111
cc
changetime
2011-01-24 07:06:44
component
WG1 - Core
description
Shall we require `equal?` to return `#t` if `eqv?` does? This would make it possible to compare potentially circular lists or trees for equality provided they are the same in the sense of `eqv?`.
This is a common implementation hack in many Lisps, but has never been standardized.
id
111
keywords
milestone
owner
alexshinn
priority
major
reporter
cowan
resolution
wontfix
severity
status
closed
summary
Require EQUAL? to return #t if EQV? does
time
2010-12-07 00:05:14
type
defect
Changes
Change at time 2011-01-24 07:06:44
author
cowan
field
comment
newvalue
Correction: WG1 voted to accept this, but it is redundant with its vote on #51.
oldvalue
8
raw-time
1295824004000000
ticket
111
time
2011-01-24 07:06:44
Change at time 2011-01-24 06:55:28
author
cowan
field
comment
newvalue
WG1 voted to take no action.
oldvalue
7
raw-time
1295823328000000
ticket
111
time
2011-01-24 06:55:28
Change at time 2011-01-24 06:55:28
author
cowan
field
resolution
newvalue
wontfix
oldvalue
raw-time
1295823328000000
ticket
111
time
2011-01-24 06:55:28
Change at time 2011-01-24 06:55:28
author
cowan
field
status
newvalue
closed
oldvalue
new
raw-time
1295823328000000
ticket
111
time
2011-01-24 06:55:28
Change at time 2010-12-17 16:00:57
author
cowan
field
comment
newvalue
Per #51, we keep the R5RS definition of `equal?`, in which it "may fail to terminate if its arguments are circular data structures". You seem to be thinking of the R6RS definition, which did not pass WG1.
oldvalue
6
raw-time
1292572857000000
ticket
111
time
2010-12-17 16:00:57
Change at time 2010-12-17 15:55:06
author
arcfide
field
comment
newvalue
Since when is it non-terminating? Wait, I just saw the ticket, I feel like something is seriously wrong here.
oldvalue
5
raw-time
1292572506000000
ticket
111
time
2010-12-17 15:55:06
Change at time 2010-12-17 15:50:12
author
cowan
field
comment
newvalue
The result is ''not'' the same. Possible non-termination is not the same as being guaranteed to return `#t`.
oldvalue
4
raw-time
1292572212000000
ticket
111
time
2010-12-17 15:50:12
Change at time 2010-12-17 15:40:57
author
arcfide
field
comment
newvalue
The result is the same however. They will return `#t` in either case. It cannot return `#f`.
oldvalue
3
raw-time
1292571657000000
ticket
111
time
2010-12-17 15:40:57
Change at time 2010-12-17 15:33:50
author
cowan
field
comment
newvalue
Yes, it will. Given two circular lists as arguments, `equal?` will loop on them unless they are `eqv?`, in which case it will return `#t` under this proposal. In R5RS it may do either.
oldvalue
2
raw-time
1292571230000000
ticket
111
time
2010-12-17 15:33:50
Change at time 2010-12-17 15:25:56
author
arcfide
field
comment
newvalue
It already is defined to use `eqv?` in most cases excepting pairs and vectors, so I do not really see a need to require this. There is no difference whether we require this or not as it won’t change any results.
oldvalue
1
raw-time
1292570756000000
ticket
111
time
2010-12-17 15:25:56