On Sun, 2009-01-25 at 10:09 -0800, Conal Elliott wrote: > > On Sun, Jan 25, 2009 at 9:17 AM, Jonathan Cast > <jonathancc...@fastmail.fm> wrote: > > On Sun, 2009-01-25 at 09:04 -0800, Conal Elliott wrote: > > > > On Sun, Jan 25, 2009 at 7:11 AM, Jonathan Cast > > <jonathancc...@fastmail.fm> wrote: > > > > On Sun, 2009-01-25 at 10:46 +0100, Thomas Davie > wrote: > > > On 25 Jan 2009, at 10:08, Daniel Fischer wrote: > > > > > > > Am Sonntag, 25. Januar 2009 00:55 schrieb Conal > Elliott: > > > >>> It's obvious because () is a defined value, > while bottom > > is not - > > > >>> per > > > >>> definitionem. > > > >> > > > >> I wonder if this argument is circular. > > > >> > > > >> I'm not aware of "defined" and "not defined" as > more than > > informal > > > >> terms. > > > > > > > > They are informal. I could've written one is a > terminating > > > > computation while > > > > the other is not. > > > > > > Is that a problem when trying to find the least > defined > > element of a > > > set of terminating computations? > > > > > > 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? > > jcc > > Hi Jonathan, > > The discussion so far had mostly been about whether *necessarily* > () /= _|_, i.e., whether a choice of () == _|_ contradicts domain > theory.
We started, I think, with the claim that () as implemented by GHC did in fact satisfy the monoid laws, because () = _|_. This is false --- Haskell as it exists does not satisfy that equation. The claim for this was somewhat over-stated (it's not a law of domain theory that a domain have two elements --- Haskell 98 even has a bottom-only type!) So we got the question of whether it is such a law or not. But we started with the question of whether () in the standard library is a monoid or not --- with the claim that it is made on the basis of the idea that () `should' equal undefined :: (). Apparently on the basis of a belief that that was the way Haskell works. > I think you're now switching to a different question (contributing to > the "not entirely coherent" aspect of the discussion): which semantics > is *preferable* for what reasons (merits). On that question, I'm > inclined to agree with you, because I like consistency. Fun. jcc _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe