Yes, hbc had existential types around 1993. I've used an encoding of existentials in O'Caml (well F#), and it works, but I find it painful. And when a very smart but non-CS person saw it his mind boggled, whereas he understood the existential version just fine.
On Thu, Oct 16, 2008 at 8:26 AM, <[EMAIL PROTECTED]> wrote: > > Lennart Augustsson wrote: >> We don't need them [existentials] from a theoretical perspective, >> but in practice I'd rather use existentials than encodinging them >> in some tricky way. > > If the claim that we don't need existentials theoretically is obvious, > I don't have the argument. Still, existentials are the recurrent topic > on the OCaml list; quite a few people perceive them as a needed > feature and their perceived absence as a drawback of OCaml. > > The principle of encoding existentials is straightforward: represent > the existential datatype by a set of its possible > observations. Existentials demonstrate once again what I sloppily call > initial-final dichotomy: initial encodings are easier to think of > upfront, yet require fancier type systems (second-order types, > dependent types, GADTs). Final encodings are elementary, yet take > (far) longer to imagine. That difficulty may be just the matter of > habit. > > BTW, wasn't hbc the first Haskell compiler to introduce existentials? > > > The performance grounds for existentials are justified, for example, > by the following paper > > Yasuhiko Minamide, J. Gregory Morrisett and Robert Harper > Typed Closure Conversion, POPL 1996, pp. 271--283. > http://www.cs.cmu.edu/~rwh/papers/closures/popl96.ps > > Many object encodings may be considered instances of the type closure > conversion. On the other hand, existential elimination may be seen as > an inverse process. > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe