It looks like a fine implementation of the behavior of the Scheme function, LIST?. I don't know why you'd use (and t (isList (cdr list))) when that means the same thing as (isList (cdr list)) .
However, Common Lisp (I'll assume that's the variant you're using, since you didn't specify) has a different meaning for listp.listp object
listp is true if its argument is a cons or the empty list (), and otherwise is false. It does not check for whether the list is a ``true list'' (one terminated by nil) or a ``dotted list'' (one terminated by a non-null atom).
Rashakil Fol
Super Senior Demiposter
2,658 posts since Jun 2005
Reputation Points: 1,135
Solved Threads: 176