У меня есть карта (Map (Int,Int) Int)
(назовите ее Mapp
). Я хочу создать функцию mod :: Mapp -> [(Int,Int,Int)] -> Mapp
, которая для каждой тройки (a, b, c) заданных наборов списков Mapp[(a,b)] = c
. Как это сделать?Редактируемый элемент Data.Map haskell
3
A
ответ
0
import qualified Data.Map as M
mod :: (Ord k0, Ord k1) => M.Map (k0, k1) a -> [(k0, k1, a)] -> M.Map (k0, k1) a
mod m l = M.fromList (map (\(a,b,c) -> ((a,b),c)) l) `M.union` m
Разъяснение: возьмите свой список l
троек (a,b,c)
и изменить те, в ((a,b),c)
.
map (\(a,b,c) -> ((a,b),c)) l
С новым списком создайте новую карту.
M.fromList (map (\(a,b,c) -> ((a,b),c)) l)
Затем используйте M.union
сращения новая карта выше и старый m
:
M.fromList (map (\(a,b,c) -> ((a,b),c)) l) `M.union` m
Поскольку M.union
остается смещенным, ассоциации в левой карте имеют более высокий приоритет над теми, в правую карту, эффективно заменяя старые значения новыми.
1
mod = foldr (\(a, b, c) -> Map.insert (a, b) c)
Идея очень проста: мы можем вставить элементы из списка по одному с помощью функции fold
.
Смежные вопросы
- 1. Создание Data.Map функтор в Haskell
- 2. Пример использования Data.Map в Haskell
- 3. Data.Map с функциями как значения в Haskell
- 4. Haskell Data.Map Поиск не ищет все значения
- 5. Уберите необходимость в Data.Map в Haskell
- 6. проблемы с haskell с Data.Map update
- 7. Динамическое программирование с помощью Data.Map в Haskell?
- 8. Сложность списков в haskell в Data.map
- 9. Редактируемый элемент «Выбрать»
- 10. Редактируемый элемент массива
- 11. Haskell O (n) (или ближайший) способ «изменить» значения в Data.Map
- 12. Когда следует использовать Data.Map Haskell в пользу списка кортежей?
- 13. Почему у Haskell отсутствует литальный синтаксис конструктора Data.Map?
- 14. Создать редактируемый элемент дерева wpf
- 15. Невозможно «сфокусировать» редактируемый элемент `div`
- 16. редактируемый элемент заполнитель не гладкая
- 17. Data.Map декларации типа
- 18. data.map не является функцией
- 19. Ошибка в реализации Data.Map?
- 20. Заменить ключи в Data.Map
- 21. Как обновить DataGrid, когда элемент редактируемый
- 22. Vaadin - Сделать добавленный элемент доступным (и редактируемый)
- 23. Редактируемый JComboBox
- 24. Первый элемент фильтра Haskell
- 25. Haskell - Последний элемент фильтра
- 26. Haskell третий элемент Tupel
- 27. Не удалось найти модуль `Data.Map»
- 28. Неоднородные типы как значения Data.Map
- 29. Как вернуть Data.Map из функции
- 30. Data.Map vs Data.Map.Strict и Data.Map.Lazy