Spec-Zone.ru › Haskell 7

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API