Похоже, что для Haskell есть несколько готовых реализаций очереди с приоритетом. Например, там:
, оба из которых выглядят как структуры данных очереди с чистым приоритетом. Первый основан на деревьях пальцев, структуре данных, с которой я не знаком; последний - оболочка вокруг Data.Map. Также существует
, который определяет чисто функциональные структуры данных кучи, из которых можно тривиально создавать очереди приоритетов. . Также есть
, которые реализуют чисто функциональные объединяемые кучи с использованием структуры данных Бродала / Окасаки, которая, как я полагаю, аналогична биномиальной структуре данных кучи в нечистом функциональном мире.
(О, и есть также
, функция которого мне непонятна, но который, похоже, связан с построением очередей приоритетов, прикрепленных к монаде , и который, похоже, так или иначе построен поверх Data.Map. В этом вопросе меня интересуют чисто функциональные очереди приоритетов, поэтому я считаю, что пакет priority-queue-0.2.2 не имеет значения. Но поправьте меня, если я ' m неверно!)
Мне нужна чисто функциональная структура данных очереди приоритетов для проекта, который я создаю. Мне было интересно, может ли кто-нибудь дать какие-то мудрые слова, когда я выбираю между позором богатства , полученным путем взлома. В частности: