Using existential types

Graham Klyne GK at
Fri Oct 10 10:40:00 EDT 2003

At 22:48 09/10/03 -0400, Derek Elkins wrote:
>As always, the wiki has some remarks about this,

Thanks for the reminder :-)

Interestingly, when I read this:
However this won't work since the elements of the list can be of SEVERAL 
different types (like a sphere and a polygon and a mesh etc. etc.) but 
lists need to have elements of the same type.

I was reminded of very similar issues I encountered in my own development, 
which for the most part I resolved without using existential types.

Originally, I had contemplated using type classes, so that (w.r.t. the 
above example) spheres and polygons would be different types that are 
instances of a common class.  That's how we do it with OOP, right?  But it 
falls foul of exactly the point made here -- you can't mix the types in 
(say) a list.

It never occurred to me that existential types might be the appropriate 
appoach here.

Instead, I replace the class instances by a single algebraic data type, 
whose members are functions corresponding to OO-style class methods.


Graham Klyne
GK at

More information about the Haskell-Cafe mailing list