这段 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)))))
特别是为什么我们使用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)))))