Простая версия может быть сконструирована так:
(define (replace old-element new-element list)
; if the list is null, just return null
; else if the car of the list is equal to old-element
; run replace on the rest of the list, and cons new-element onto it
; else
; run replace on the rest of the list, and cons the car onto it)
(Я оставил детали до вас, так как вы должны учиться на практике.)
Помните, что в Scheme самый естественный способ сделать это, как правило, собрать новый список по кусочкам из вашего старого списка, а не пытаться вносить небольшие изменения по одному в ваш старый список. *
Обратите внимание, что вы также можете использовать map
, чтобы сделать это гораздо более кратко.