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

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

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

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

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

Объявленная стоимость каждой операции либо наихудшая, либо амортизированная, но остается действительной, даже если структуры являются общими.

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

Ключ и значение аргументов оцениваются в WHNF; Ключи и значения оцениваются в WHNF перед их сохранением на карте.

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

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

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