On 25 Jan 2009, at 23:36, Daniel Fischer wrote:

Why is this obvious - I would argue that it's "obvious" that bottom
*is* () - the data type definition says there's only one value in the
type.  Any value that I haven't defined yet must be in the set, and
it's a single element set, so it *must* be ().

It's obvious because () is a defined value, while bottom is not - per
definitionem.
The matter is that besides the elements declared in the datatype definition,
every Haskell type also contains bottom.
-----

I thought that under discussion were the actual Haskell semantics - I'm not so
sure about that anymore. If Thomas Davie (Bob) was here discussing an
alternative theory in which () is unlifted, the sorry, I completely
misunderstood.

My "argument" is that in Haskell as it is, as far as I know, _|_ *is* defined to denote a nonterminating computation, while on the other hand () is an expression in normal form, hence denotes a terminating computation, therefore
it is obvious that the two are not the same, as stated by Jake.
Of course I may be wrong in my premise, then, if one really cared about
obviousness, one would have to put forward a different argument.

If you go look through the message history some more, you'll see a couple of emails which convinced me that that indeed was the semantics in haskell, and a follow up saying "okay, lets discuss a hypothetical now, because this looks fun and interesting."

Bob

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to