我正忙于计算机程序的结构和解释练习 2.18。在这里,我们必须定义一个过程 reverse 来反转一个列表。它应该执行以下操作:
(reverse (list 1 4 9 16 25))
;; => (25 16 9 4 1)
我提出了以下定义:
(define (reverse list)
(if (null? list)
list
(cons (reverse (cdr list)) (car list))))
;; => (mcons (mcons (mcons (mcons (mcons '() 25) 16) 9) 4) 1).
然后在一个解决方案中发现类似如下:
(define (reverse items)
(if (null? (cdr items))
items
(append (reverse (cdr items))
(cons (car items) nil))))
;; => (mcons 25 (mcons 16 (mcons 9 (mcons 4 (mcons 1 '()))))).
append
和这里有区别cons
,我不能指手画脚。
我的问题:有什么区别,为什么结果不显示为(25 16 9 4 1)
?