title: Existential vs. Universally quantified types in Haskell
body: <p>What exactly is the difference between these? I think I understand how existential types work, they are like having a base class in OO without a way to down cast. How are universal types different? </p>