私は、演習 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)
ですか?