On Sun, Jan 25, 2009 at 10:17 AM, Jonathan Cast <jonathanccast@fastmail.fm> wrote:
> Yes. If you've got a set of terminating computations, and it
> has
> multiple distinct elements, it generally doesn't *have* a
> least element.
> The P in CPO stands for Partial.
>
> jcc
>
> and this concern does not apply to () .
And? () behaves in exactly the same fashion as every other Haskell data
type in existence, and in consequence we're having an extended, not
entirely coherent, discussion of how wonderful it would be if it was a
quite inconsistent special case instead? Why?
I think the discussion is not about adding an inconsistent special case, but about theories in which a bottomless () is consistent.
The denotational meaning of a program is nothing more than a meaning function applied to its syntax. In this discussion, we are simply toying with the meaning functions which remain faithful to our intuition about what a program "should" do, while giving slightly different answers on the edge cases, to see if it is more or less beautiful/consistent/useful.
This discussion is in the same vein as discussions about what Haskell looks like if you remove seq, or if all one-constructor data types are unlifted -- both of those clean up the semantics considerably. What if this does too, and we just don't see how? We're trying to see.
Luke