Gabriel Dos Reis <[EMAIL PROTECTED]> writes: | Consider the following function from src/interp/clam.boot: | | numberOfEmptySlots cache== | count:= (CAAR cache ='$failed => 1; 0) | for x in tails rest cache while NE(x,cache) repeat | if CAAR x='$failed then count:= count+1 | count | | | The SBCL type checker does not like it because: | | * it is able to infer that cache is a list, | * '=' (coming from NE, which mean not =) can be applied only | to numbers. | | Consequently, we have conflicting assumptions for the same value. So, we | have a bug. Now, looking back at the code, the expression | | NE(x,cache) | | cannot be right. Was it indended to be | | x /= cache | | instead?
Looking more into it, I suspect it was supposed to be NEQ(x,cache) where NEW is the macro (from vmlisp.lisp) (defmacro neq (a b) `(not (eq ,a ,b))) -- Gaby _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer