
If all tuples in Haskell were unlifted then () would not be such a special case.
But I would argue against unlifted tuples, because that would make
tuples (or single constructor data types) different from other data
types; adding a constructor to a type could totally wreck laziness of
a program with unlifted tuples.
Also, unlifted tuples forces parallel evaluation for seq.
On Sun, Jan 25, 2009 at 5:17 PM, Jonathan Cast
On Sun, 2009-01-25 at 09:04 -0800, Conal Elliott wrote:
On Sun, Jan 25, 2009 at 7:11 AM, Jonathan Cast
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
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe