Question 1: Variable number of arguments (&rest) [4]

The function below accepts three list parameters, and returns a list that is the result of appending all three together (or 0 if any of the parameters are not lists).

   (defun appendAll (L1 L2 L3)
      (cond
          ((not (listp L1)) 0)
          ((not (listp L2)) 0)
          ((not (listp L3)) 0)
          (t (append L1 (append L2 L3)))))

Using the &rest feature of lisp, you are to rewrite the function so it can accept any number of lists as parameters, and returns the result of appending them all together (or 0 if any of the parameters are not lists).