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と見え方が同じな場合どうしたら確認できるのだろう?
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と見え方が同じな場合どうしたら確認できるのだろう?
コメント