Data.IntMap
| Авторские права | (с) Даан Лейен 2002 (с) Андрий Паламарчук 2008 |
|---|---|
| Лицензия | BSD-стиль |
| Поддерживающий | libraries@haskell.org |
| Стабильность | предварительная |
| Переносимость | переносимая |
| Safe Haskell | Безопасный |
| Язык | Haskell98 |
Описание
Эффективная реализация отображений от целых ключей к значениям (словари).
Этот модуль повторно экспортирует ленивый API Data.IntMap.Lazy, а также несколько устаревших функций со строгой оценкой. Обратите внимание, что эти функции имеют разные свойства строгости, чем в Data.IntMap.Strict: они оценивают только результат функции комбинирования. Например, значение по умолчанию для insertWith' оценивается только тогда, когда вызывается функция комбинирования и используется это значение.
Эти модули предназначены для импорта с квалификацией, чтобы избежать конфликтов имен с функциями Prelude, например:
import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap
Реализация основана на патрициевых деревьях с большим порядком следования. Эта структура данных особенно хорошо работает с бинарными операциями, такими как union и intersection. Однако мои тесты показывают, что она также (намного) быстрее при вставках и удалениях по сравнению с реализацией с балансировкой размера (см. Data.Map).
- Крис Окасаки и Энди Гиль, «Быстрые интегрируемые целые отображения», Рабочая встреча по ML, сентябрь 1998 г., страницы 77-86, http://citeseer.ist.psu.edu/okasaki98fast.html
- Д.Р. Моррисон, «/PATRICIA — Практический алгоритм для извлечения информации, закодированной в алфавитно-цифровом формате/», Журнал ACM, 15(4), октябрь 1968 г., страницы 514-534.
Комментарии к операциям содержат сложность операции в обозначении Big-O http://en.wikipedia.org/wiki/Big_O_notation. Многие операции имеют сложность в худшем случае O(min(n,W)). Это означает, что операция может стать линейной по количеству элементов с максимальным значением W — числом битов в Int (32 или 64).
модуль Data.IntMap.Lazy
insertWith' :: (a -> a -> a) -> Ключ -> a -> IntMap a -> IntMap a Исходный код
Устаревшее. Начиная с версии 0.5, заменено на insertWith.
O(log n). То же, что и insertWith, но результат функции комбинирования вычисляется до WHNF перед вставкой в карту.
insertWithKey' :: (Ключ -> a -> a -> a) -> Ключ -> a -> IntMap a -> IntMap a Исходный код
Устаревшее. Начиная с версии 0.5, заменено на insertWithKey.
O(log n). То же, что и insertWithKey, но результат функции комбинирования вычисляется до WHNF перед вставкой в карту.
fold :: (a -> b -> b) -> b -> IntMap a -> b Исходный код
Устаревшее. Начиная с версии 0.5, заменено на foldr.
O(n). Сворачивание значений в карте с использованием заданного правоассоциативного бинарного оператора. Эта функция эквивалентна foldr и присутствует только для совместимости.
foldWithKey :: (Ключ -> a -> b -> b) -> b -> IntMap a -> b Исходный код
Устаревшее. Начиная с версии 0.5, заменено на foldrWithKey.
O(n). Сворачивание ключей и значений в карте с использованием заданного правоассоциативного бинарного оператора. Эта функция эквивалентна foldrWithKey и присутствует только для совместимости.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/containers-0.5.6.2/Data-IntMap.html