title: Unifying record type
body: <p>As a learning exercise, I'm trying to define a newtype to serve as a holder of functions that can convert <code>Show</code>-able values to <code>Eff</code>ects, i.e.:</p>
  
  <pre><code>newtype ShEff a = ShEff (forall eff. Show a =&gt; a -&gt; Eff eff Unit)
  </code></pre>
  
  <p>However, this:</p>
  
  <pre><code>f :: forall a. ShEff a
  f = ShEff logShow
  </code></pre>
  
  <p>fails to compile with this error:</p>
  
  <pre><code>  Could not match type
  
      ( console :: CONSOLE
      | t2
      )
  
    with type
  
      eff1
  
  
  while trying to match type Eff
                               ( console :: CONSOLE
                               | t2
                               )
    with type Eff eff1
  while checking that expression logShow
    has type t0 -&gt; Eff eff1 Unit
  in value declaration f
  </code></pre>
  
  <p>Can you point me in the right direction?</p>