这段 Scheme 代码有什么作用?

What does this Scheme code do?

特别是为什么我们使用tail和head?看不懂。

(define (foo lst)
  (cond
    ((not (list? lst)) lst)
    ((null? lst) lst)
    (else (let* ((tail (cdr lst))
                 (head (car lst))
                 (tailr (foo tail))
                 (headr (foo head)))
            (append tailr (list headr))))))

相当于:

(define (reverse-nested lst)
  (cond ((not (pair? lst)) lst)
        (else (reverse (map reverse-nested lst)))))