[Haskell-cafe] Re: Laws and partial values

Jonathan Cast jonathanccast at fastmail.fm
Sun Jan 25 12:56:47 EST 2009

On Sun, 2009-01-25 at 10:46 -0700, Luke Palmer wrote:
> On Sun, Jan 25, 2009 at 10:17 AM, Jonathan Cast
> <jonathanccast at 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.

Have fun.  I'll just ignore you and go work on actually *doing* FP,


More information about the Haskell-Cafe mailing list