title: What are skolems?
body: <p>Eeek!  GHCi found Skolems in my code!</p>
  
  <pre><code>...
  Couldn't match type `k0' with `b'
    because type variable `b' would escape its scope
  This (rigid, skolem) type variable is bound by
    the type signature for
      groupBy :: Ord b =&gt; (a -&gt; b) -&gt; Set a -&gt; Set (b, [a])
  The following variables have types that mention k0
  ...
  </code></pre>
  
  <p>What are they?  What do they want with my program?
  And why are they trying to escape (the ungrateful little blighters)?</p>