title: No more state monad version of hash maps / sets in Haskell?
body: <p>Is the monadic interface to hash sets and maps gone in Haskell? What kind of performance model should I have in mind when using the modern versions? (Data.Map, Data.HashMap, Data.HashSet). They do not appear to have any IO code in the version I have (ghc 7.0.2),</p>
  
  <pre><code>&gt; :browse Data.HashSet
  type HashSet a = Set a
  newtype Set a
    = Data.HashSet.Set (Data.IntMap.IntMap (Data.HashSet.Some a))
  (\\) :: Ord a =&gt; Set a -&gt; Set a -&gt; Set a
  delete :: (Data.Hashable.Hashable a, Ord a) =&gt; a -&gt; Set a -&gt; Set a
  difference :: Ord a =&gt; Set a -&gt; Set a -&gt; Set a
  elems :: Set a -&gt; [a]
  empty :: Set a
  Data.HashSet.filter :: Ord a =&gt; (a -&gt; Bool) -&gt; Set a -&gt; Set a
  fold :: (a -&gt; b -&gt; b) -&gt; b -&gt; Set a -&gt; b
  fromList :: (Data.Hashable.Hashable a, Ord a) =&gt; [a] -&gt; Set a
  insert :: (Data.Hashable.Hashable a, Ord a) =&gt; a -&gt; Set a -&gt; Set a
  intersection :: Ord a =&gt; Set a -&gt; Set a -&gt; Set a
  isProperSubsetOf :: Ord a =&gt; Set a -&gt; Set a -&gt; Bool
  isSubsetOf :: Ord a =&gt; Set a -&gt; Set a -&gt; Bool
  Data.HashSet.map ::
    (Data.Hashable.Hashable b, Ord b) =&gt; (a -&gt; b) -&gt; Set a -&gt; Set b
  member :: (Data.Hashable.Hashable a, Ord a) =&gt; a -&gt; Set a -&gt; Bool
  notMember ::
    (Data.Hashable.Hashable a, Ord a) =&gt; a -&gt; Set a -&gt; Bool
  Data.HashSet.null :: Set a -&gt; Bool
  partition :: Ord a =&gt; (a -&gt; Bool) -&gt; Set a -&gt; (Set a, Set a)
  singleton :: Data.Hashable.Hashable a =&gt; a -&gt; Set a
  size :: Set a -&gt; Int
  toList :: Set a -&gt; [a]
  union :: Ord a =&gt; Set a -&gt; Set a -&gt; Set a
  unions :: Ord a =&gt; [Set a] -&gt; Set a
  </code></pre>