Spec-Zone.ru › Haskell 7

Data.Map

Авторские права (c) Daan Leijen 2002 (c) Andriy Palamarchuk 2008
Лицензия BSD-стиль
Поддержка libraries@haskell.org
Стабильность предварительная
Переносимость переносимый
Safe Haskell Safe
Язык Haskell98

Описание

Примечание: Используйте Data.Map.Strict вместо этого модуля, если:

  • Вам в конечном итоге потребуются все сохраненные значения.
  • Сохраненные значения не представляют собой большие виртуальные структуры данных, которые должны вычисляться лениво.

Эффективная реализация упорядоченных отображений ключей на значения (словари).

Эти модули предназначены для импорта с квалификацией, чтобы избежать конфликтов имен с функциями Prelude, например:

 import qualified Data.Map as Map

Реализация Map основана на сбалансированных по размеру двоичных деревьях (или деревьях с ограниченным балансом), как описано в:

  • Stephen Adams, "Эффективные множества: балансирование", Журнал функционального программирования 3(4):553-562, октябрь 1993, http://www.swiss.ai.mit.edu/~adams/BB/.
  • J. Nievergelt и E.M. Reingold, "Двоичные деревья поиска с ограниченным балансом", Журнал вычислений SIAM 2(1), март 1973.

Обратите внимание, что реализация смещена влево — элементы первого аргумента всегда отдаются предпочтение перед вторым, например, в union или insert.

Комментарии к операциям содержат сложность времени операции в обозначении Big-O (http://en.wikipedia.org/wiki/Big_O_notation).

модуль Data.Map.Lazy

insertWith' :: Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a Источник

Устарело. Начиная с версии 0.5, заменено на insertWith.

O(log n). Аналогично insertWith, но значение, вставляемое в карту, вычисляется до WHNF предварительно.

Например, для обновления счетчика:

insertWith' (+) k 1 m

insertWithKey' :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a Источник

Устарело. Начиная с версии 0.5, заменено на insertWithKey.

O(log n). Аналогично insertWithKey, но значение, вставляемое в карту, вычисляется до WHNF предварительно.

insertLookupWithKey' :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a) Источник

Устарело. Начиная с версии 0.5, заменено на insertLookupWithKey.

O(log n). Аналогично insertLookupWithKey, но значение, вставляемое в карту, вычисляется до WHNF предварительно.

fold :: (a -> b -> b) -> b -> Map k a -> b Источник

Устарело. Начиная с версии 0.5, заменено на foldr.

O(n). Складывает значения в карте, используя заданный справа-ассоциативный бинарный оператор. Эта функция эквивалентна foldr и присутствует только для совместимости.

foldWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b Источник

Устарело. Начиная с версии 0.4, заменено на 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-Map.html

Spec-Zone.ru

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