Обновление списка элементов в списке? [дублировать
Вопрос
Возможный дубликат:
Обновите список списка элементов в одном списке?
У меня есть список значений, как показано ниже:
[ ["Off","Off","Off"],
["Off","Off","Off"],
["Off","Off","Off"] ]
и хотел бы вернуть следующее:
[ ["Off","Off","Off"],
["Off",*"On"*,"Off"],
["Off","Off","Off"] ]
У меня есть следующая функция, которая сам по себе работает только для отдельного списка:
replaceAll 0 newValue (x:xs) = newValue:xs
replaceAll b newValue (x:xs) = x:replaceAll (b-1) newValue xs
Тем не менее, у меня, кажется, возникают проблемы с работе с этими несколькими списками в списке. Как бы я разработал функцию, чтобы справиться с этими двумя списками (т.е. список в другом списке)?
Все еще пытаюсь разобраться с головой всей (x: xs).
Решение
Списки - не лучшая структура для такого рода вещей. Но давайте все равно будем работать со списками.
Мы настраиваем ваш replaceAll
Таким образом, вместо того, чтобы предоставлять замену значение, вы предоставляете функцию, которая указывает, как заменить старую на новую.
replaceAll 0 f (x:xs) = f x:xs -- Here's where we transform x using f
replaceAll b f (x:xs) = x:replaceAll (b-1) f xs
Теперь мы можем использовать replaceAll
На сами по себе замена, которую мы хотим в определенном ряду матрицы:
test = replaceAll 1 (replaceAll 1 (const "On")) yourList
А const "On"
Функция используется, потому что, когда мы добираемся до нашего конкретного элемента, мы больше не хотим ее преобразовать, мы просто хотим заменить его на "On"
. Анкет Немного для каждого отдельного ряда, мы делать хочу изменить это.