#lang R5RS
(define (mystery x)
(define (loop x y)
(if (null? x)
y
(let ((temp (cdr x)))
(set-cdr! x y)
(loop temp x))))
(loop x '()))
(define v (list 'a 'b 'c 'd))
(define w (mystery v))
(display v)
(newline)
(display w)
运行结果
(a)
(d c b a)
下面是分解和盒子指针图
第一次循环
第二次
第三次
第四次
第五次这里就不画了,其实就是y指针指向了d的位置,然后x为空,直接返回y的