[Haskell-cafe] restricted existential datatypes