<p>I read through the Wikipedia article <em><a href="https://en.wikipedia.org/wiki/Type_system#Existential_types" rel="noreferrer">Existential types</a></em>. I gathered that they're called existential types because of the existential operator (∃). I'm not sure what the point of it is, though. What's the difference between </p>

<pre><code>T = ∃X { X a; int f(X); }
</code></pre>

<p>and</p>

<pre><code>T = ∀x { X a; int f(X); }
</code></pre>

<p>?</p>

As I understand it's a math way to describe interfaces/abstract class.
As for T = ∃X { X a; int f(X); }
For C# it would translate to a generic abstract type:
```
```
abstract class MyType<T>{
    private T a;

    public abstract int f(T x);
}
```
```
"Existential" just means that there is some type that obey to the rules defined here.