Я могу удалить элемент из списка, но я понятия не имею, как написать функцию на схеме для замены всех вхождений элемента в списке другим элементом. Любая помощь будет оценена.
Функция в Scheme для замены всех вхождений элемента в списке другим элементом.
comment
Связано: « title = «как заменить элемент другим в списке в drscheme, когда заданы параметры»> stackoverflow.com/questions/4761285/
- person Flux   schedule 24.03.2019
Ответы (1)
Простая версия может быть разработана следующим образом:
(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, чтобы сделать это намного короче.
person
mqp
schedule
18.12.2009
Синтаксис здесь плохой, должно быть
(define (replace old new list) ...). Что касается фактической реализации - не делайте этого, используйте map.
- person Eli Barzilay; 18.12.2009
Я предположил, что он работает с руководством или учебником, который еще далеко не
map.
- person mqp; 18.12.2009
Любая подобная книга могла бы предоставить такое же руководство, так что она либо не нужна, потому что о ней рассказывается в книге, либо потому, что
map доступна.
- person Eli Barzilay; 18.12.2009
Справедливо, наверное, это правда.
- person mqp; 18.12.2009