Thank you for your assistance.

It looks like you are correct. However, while the compiler may be smart, it's not smart enough to see that there's a secondary guard variable that prevents any access of the list-length result if the argument is nil. The same goes for the when evaluation.

== Steven


On Sep 23, 2008, at 2:12 AM, Madhu wrote:

        [pardon the top post, if you find it inappropriate]

The CLHS entry for LIST-LENGTH says:

,----
| Returns the length of list if list is a proper list. Returns nil if
| list is a circular list.
`----

This means one of the possible return values is NIL.  The compiler
diagnostics seem to indicate that it has inferred that the value
returned by LIST-LENGTH are used only in number contexts.

The compiler is warning you that there will be an error in the event
LIST-LENGTH returns NIL.

I suspect the case with the other diagnostic is similar. It is likely
you are using the return value of a (WHEN clause) where the compiler
always expects a number.

Both of these deal with the specifics of your code , so it is likely
the compiler knows better (as it has access to the code) than us (who
dont:)


Reply via email to