プログラミングGaucheの課題deep-copy-list

deep-copy-listを考える。

copy-listは、
・空リストでなければ、carと、cdrをcopy-listに渡した結果をconsする
・空リストならそのまま返す

(define (copy-list l)
(if (null? l)
l
(cons (car l) (copy-list (cdr l)))))

deep-copy-listは、
・空リストでなければ、carと、cdrをdeep-copy-listに渡した結果をconsするが、carがリストなら、
deep-list-copyに、carを渡す
・空リストならそのまま返す

で、実装してみたのが以下

(define (deep-copy-list l)
(if (null? l)
l
(if (pair? (car l))
(cons (deep-copy-list (car l)) (deep-copy-list (cdr l)))
(cons (car l) (deep-copy-list (cdr l))))))

gosh> (deep-copy-list '(a b c (1 2 3)))
(a b c (1 2 3))

あってると思うんだけど、結果が、copy-listと見え方が同じな場合どうしたら確認できるのだろう?

コメント

人気の投稿