Я не уверен, недооцениваю ли я мощность MArray или нет, но для многих алгоритмов, которые я реализую, меня волнует только то, что у меня есть некоторая структура данных для хранения ключа / пары значений. Очевидно, что выбор структуры данных повлияет на производительность, но было бы неплохо сначала написать алгоритм и по мере необходимости работать над оптимизацией структуры данных.
Что мне действительно нравится, так это класс типов:
class Monad m => MStore m k v where
putAt :: k -> v -> m ()
getAt :: k -> m v
-- and possibly
pairs :: m [(k,v)]
Таким образом, мой алгоритм может манипулировать вещами типа k
, не беспокоясь о том, является ли он Text
, и мне нужно использовать хеш-таблицу, или излишне обобщать и упускать из-за возможности оптимизации массива Int
ключей.