title: Why this doesn't type checks?
body: <p>A mutable hashmap from ByteString to Integer. Should be easy but can understand why it does not type checks. Should I notate some type manualy?</p>
  
  <pre><code>import           Control.Monad.ST               ( ST, runST)
  import qualified Data.HashTable.Class          as HC
  import           Data.HashTable.Class           ( HashTable )
  import           Data.ByteString.Lazy.Char8     ( ByteString )
  
  fourSizedTable :: HashTable h =&gt; ST s (h s ByteString Integer)
  fourSizedTable = HC.newSized 4
  
  asList :: ST s [(ByteString, Integer)]
  asList = fourSizedTable &gt;&gt;= HC.toList 
  </code></pre>
  
  <p>fails with the following message:</p>
  
  <blockquote>
    <p>• No instance for (HashTable h0) <br>
      arising from a use of ‘fourSizedTable’<br>
    • In the first argument of ‘(>>=)’, namely ‘fourSizedTable’<br>
      In the expression: fourSizedTable >>= HC.toList<br>
      In an equation for ‘asList’: asList = fourSizedTable >>= HC.toList<br></p>
  </blockquote>