title: Why is `[1, "a"] :: [forall a. Show a => a]` not allowed?
body: <p>In my (might incorrect) understanding, following two lists should be equivalent:</p>
  
  <pre><code>[1, "a"] :: [forall a. Show a =&gt; a]
  
  data V = forall a. Show a =&gt; V a
  [V 1, V "a"] :: [V]
  </code></pre>
  
  <p>However, the first one is not accepted but the second one works fine (with <code>ExistentialQuantification</code>).</p>
  
  <p>If the first list doesn't exist, what would be the type in the blank of <code>map V :: ??? -&gt; [V]</code>? What type mechanism enforces the existence of the wrapper? </p>