title: Why does Foldable inherit from Functor in Frege?
body: <p>In Haskell, the class <code>Foldable</code> is standalone i.e.</p>
  
  <pre><code>class Foldable t where ...
  </code></pre>
  
  <p>However, in Frege:</p>
  
  <pre><code>class Functor t =&gt; Foldable t where ...
  </code></pre>
  
  <p>Why was this constraint introduced? What ill-formed programs/ideas can it rule out?</p>
  
  <p>It prevented me from defining an <code>instance Foldable HashSet</code>, where <code>HashSet</code> is a custom data type which wraps <code>Data.HashMap</code> to provide a set-based interface. (It can be worked around by applying <code>toList</code> first, so it's not a serious issue.)</p>