Коллекции Haskell с гарантированными наихудшими оценками для каждой отдельной операции?

Такие структуры необходимы для приложений реального времени - например, пользовательских интерфейсов. (Пользователям все равно, если нажатие кнопки занимает 0,1 с или 0,2 с, но им все равно, если сотый щелчок вызовет выдающиеся ленивые вычисления и потребуется 10 с, чтобы продолжить.)

Я читал тезис ОкасакиЧисто функциональные структуры данных и он описывает интересный общий метод для преобразования ленивых структур данных с амортизированными границами в структуры с тем жеworst-case bounds for every operation, Идея состоит в том, чтобы распределять вычисления таким образом, чтобы при каждом обновлении использовалась некоторая часть неоцененных блоков.

Интересно, есть ли такая реализация стандартных коллекций (Map, Setи т.д.) в Хаскеле?

контейнеры пакет говорит

The declared cost of each operation is either worst-case or amortized, but remains valid even if structures are shared.

поэтому нет гарантии для наихудших оценок для одной операции. Есть строгие варианты, такие какData.Map.Strict, но они строги в своих ключах и ценностях:

Key and value arguments are evaluated to WHNF; Keys and values are evaluated to WHNF before they are stored in the map.

нет ничего о (возможной) строгости его структуры.

Ответы на вопрос(1)

Ваш ответ на вопрос