リストの要素をSchemeの別の要素に置き換える必要がありますが、問題は、置き換える必要があるリストがネストできることです。
たとえば、リストが'(1 (2 3 4 5) (6 7))
あり、5 を 9 に置き換える必要がある場合、出力は'(1 (2 3 4 9) (6 7))
.
この問題について教えてください。
ここに関数があります:
(define (replace L new old)
(cond ;;((null? L) L)
((list? L)
(map
(lambda (lst) (replace lst new old))
L))
(else
(if (equal? L old)
new
L))))
使用例:
> (replace '(1 (1 2 3 4 (5 6 3) 3 4)) 7 3)
'(1 (1 2 7 4 (5 6 7) 7 4))
> (replace '() 7 3)
'()
> (replace '(1 (1 2 3 4) 3 4) 7 3)
'(1 (1 2 7 4) 7 4)
また:
(define (replace L new old)
(if (list? L)
(map
(lambda (lst) (replace lst new old))
L)
(if (equal? L old)
new
L)))
例:
(置換 '(1 (1 2 3 4 (5 6 3) 3 4)) 7 3) -> '(1 (1 2 7 4 (5 6 7) 7 4))