[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] Feedback on ANSI bugfixes
From: |
Camm Maguire |
Subject: |
Re: [Gcl-devel] Feedback on ANSI bugfixes |
Date: |
01 Oct 2002 17:35:39 -0400 |
Hello again! I saved this old message to remind me of these issues
which have been outstanding for some time. I think these are fixed
now. If you find otherwise, please let me know.
Take care,
"Paul F. Dietz" <address@hidden> writes:
> Camm Maguire wrote:
>
> > > (TAILP 10203040506070 (LIST* 'CL-TEST::A 'CL-TEST::B
> > > (1- 10203040506071)))
> > > ==> NIL
> > > when it should be true (the arithmetic in this test prevents
> > > an aggressive [reader] from making the two numbers EQ.)
> > >
> >
> > I don't quite get this 'aggressive reader' bit. Clearly the two items
> > aren't eq? If not, what makes them so, and where does one draw the
> > line? I.e. one could nest arbitrarily deeply, no?
>
> Sorry, I should have said an aggressive compiler, not an aggressive reader.
> The compiler is allowed to coalesce the shared structure of literal
> constants; the CMU CL compiler does this, for instance. I want to be
> able to compile these tests (at various optimization settings) before
> running them, to detect compiler bugs.
>
> The test still has a problem, since a conforming lisp implementation
> can also dynamically make EQL bignums be EQ. So the test should have
> included a check that the two numbers were not EQ.
>
>
> > > This is the test case for the set-exclusive-or problem.
> > > I've had arguments with other Lisp implementors as to
> > > whether the standard really calls for this behavior.
> > > IIRC, CMUCL does not enforce this ordering constraint.
> > >
> > > (let ((list1 '(a b c d))
> > > (list2 '(e f g h)))
> > > (block fail
> > > (set-exclusive-or
> > > list1 list2
> > > :test #'(lambda (s1 s2)
> > > (when (or (member s1 list2)
> > > (member s2 list1))
> > > (return-from fail 'failed))))))
> > > ==> failed
> > > when it should return some permutation of (a b c d e f g h).
> > >
> >
> > OK, I'll try to investigate this. Is this part of the standard tests?
> > If not, why do you need this?
>
>
> It comes from this paragraph in the SET-EXCLUSIVE-OR entry of the CLHS,
> in particular the second sentence:
>
> If :key is supplied, it is used to extract the part to be tested
> from the list-1 or list-2 element. The first argument to the :test
> or :test-not function is the part of an element of list-1 extracted
> by the :key function (if supplied); the second argument is the part
> of an element of list-2 extracted by the :key function (if supplied).
> If :key is not supplied or nil, the list-1 or list-2 element is used.
>
> You *might* interpret this to mean that if :key is not supplied then
> the order can be changed, but I consider that to be misreading an
> ambiguity.
>
> Paul
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Gcl-devel] Feedback on ANSI bugfixes,
Camm Maguire <=