Hi Marc.
Let's continue an old thread:
Mon, 25 Sep 2006 17:30:57 -0400, feeley wrote:
On 25-Sep-06, at 3:48 PM, Sven.Hartrumpf wrote:
(step (if left-hyphen (and (not right-hyphen) -1) (and right-hyphen 1))))
left-hyphen and right-hyphen are evaluated to #f for some binding - this is as expected. But step is bound to 1 which seems wrong to me. Minimizing the problem might be hard for me, so I hope that you can see the problem already :-)
Sven, you have just uncovered a nasty bug in the compiler. In beta 18 the transformation for the "and" form is too aggressive in the case where the second argument is a constant. As far as I can tell this bug was introduced just before beta 18 was released. Surprisingly in the 70Kloc in the Gambit runtime system and compiler this case does not occur. I have now fixed the bug and will release beta 19 shortly because this is a serious bug.
The same Scheme code causes incorrect results now for 4.0.0, but this time in a different way :-)
(step (if left-hyphen (and (not right-hyphen) -1) (and right-hyphen 1)))
In: left-hyphen: #t right-hyphen: #f
Out: step: #t Obviously, this should be -1!
Greetings Sven