Если вам просто нужна структура, которая не имеет разумного порядка, то почему бы не составить карту с хешем?
type MyBag a = Map (Int,a) Int
insert x mp = Data.Map.insertWith (+) 1 (hash x, x) mp
Выше приведено сбалансированное бинарное дерево с порядком, который зависит от хеша значение, которое вы вставили. Само отображение скучно по линиям data Map k a = Bin (Map k a) a (Map k a) | Nil
.
Это сказало, я думаю, что вы не указали, что вы ищете и что вы хотите узнать. Ваши поиски, вероятно, дали хеш-таблицы и неупорядоченные контейнеры - почему они не достаточно информативны?
Doh.
В saveSettings мне не хватало моей [prefs synchronize];