title: Why there is no an "Exist" keyword in Haskell for Existential Quantification?
body: <p>According to the GHC documentation, given the following declaration:</p>
  
  <pre><code>data Foo = forall a. MkFoo a (a -&gt; Bool)
             | Nil
  </code></pre>
  
  <p>then </p>
  
  <pre><code>MkFoo :: forall a. a -&gt; (a -&gt; Bool) -&gt; Foo
  </code></pre>
  
  <p>Is (nearly) isomorphic to the following pseudo-Haskell declaration </p>
  
  <pre><code>MkFoo :: (exists a . (a, a -&gt; Bool)) -&gt; Foo
  </code></pre>
  
  <p>Therefore, there is not need for a separated "Exist" keyword. Because:</p>
  
  <blockquote>
    <p>Haskell programmers can safely think of the ordinary universally
    quantified type given above.</p>
  </blockquote>
  
  <p>But I'm not sure what that means. Can someone please explain me why can we use the universal quantifier to express Existential quantification?</p>