I believe that lists are generally defined in the "Lisp" standards as a set of cons pairs terminated by nil.
This makes things a lot harder than they need to be--you effectively MUST process lists by recursion as you don't know you have a list until you hit that far right "nil".