
On Thu, Aug 20, 2009 at 01:45:08PM +0100, Simon Marlow wrote:
On 08/08/2009 10:24, Ross Paterson wrote:
On Sat, Aug 08, 2009 at 10:09:38AM +0100, Iavor Diatchki wrote:
I thought that the intended semantics was supposed to be that the only element is bottom (hence the proposal to add a related empty case construct)?
If that were the case, a compiler could legitimately discard any value of such a type, because it could be easily reconstructed. I don't think that is what is intended.
Just in case this question is still open: an empty data declaration declares a type that has exactly zero constructors, not an abstract type. What would it mean to define an abstract types? Haskell only allows one definition of any given type.
Yes, I take it back. Such types are typically used as phantom type arguments, e.g. the argument of Ptr, so the question I raised doesn't arise.