Функция в схеме для замены всех вхождений элемента в списке другим элементом - PullRequest
2 голосов
/ 18 декабря 2009

Я могу удалить элемент из списка, но я не знаю, как написать функцию в схеме, чтобы заменить все вхождения элемента в списке другим элементом. Любая помощь будет оценена.

1 Ответ

3 голосов
/ 18 декабря 2009

Простая версия может быть сконструирована так:

(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, чтобы сделать это гораздо более кратко.

...