Gabriel Dos Reis wrote: > On Sat, 15 Sep 2007, Waldek Hebisch wrote: > | The problem is due to incomplete conversion form old Boot to Shoe. > | Originally clam.boot was translated by old Boot and NE was passed > | unmolested to Lisp output. In vmlisp.lisp we have: > | > | (defmacro ne (a b) `(not (equal ,a ,b))) > | > | so original meaning was (not (equal x cache)). Shoe changes > | NE to /= leading to error... > > I still believe the code is incorrect if `not equal' is intented. > The condition in the loop is testing whether x does not contain > itself. If equal is used, then I suspect that will end up with > an infinite loop. Rather, I suspect it should have been `not eq'. >
I tend to agree: the argument is a circular list so a test is neccessary and eq is sufficient. To be more precise: I think that original code form Ansi point of view has undefined behaviour, but works in practical implementations. However using `not eq' looks cleaner. BTW: the only way to call numberOfEmptySlots seem to be via clamStats and clamStats is unused so one have to call it via )lisp command. However when clamStats is called form command line is seems that numberOfEmptySlots is still unused, because normally $clamList contains only hashtables (AFAICS list are used only during compilation). -- Waldek Hebisch [EMAIL PROTECTED] _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer