On 10 Jan 2008, at 7:55 AM, Achim Schneider wrote:

"Daniel Yokomizo" <[EMAIL PROTECTED]> wrote:

On Jan 10, 2008 3:36 PM, Achim Schneider <[EMAIL PROTECTED]> wrote:
[EMAIL PROTECTED] wrote:

Niko Korhonen writes:

...
Although it could be argued that laziness is the cause of some
very obscure bugs... <g>
Niko

Example, PLEASE.

[1..] == [1..]

, for assumed operational semantics of ones own axiomatic semantics.
Bugs are only a misunderstanding away.

It has nothing to do with laziness, but with using an algebraic
function (==) with a codata structure (stream). If Haskell kept
laziness but enforced separation of data and codata such code wouldn't
compile. Lazy lists or streams never are a problem, but you can't
(generically) fold codata.

Exactly. Denotationally it hasn't, but axiomatically it has. Because it
looks like mathematical terms one can easily get lost in believing it
reduces like mathematics, too.

What kind of mathematics? I don't know of any mathematics where algebraic simplifications are employed without proof of the underlying equations (in some denotational model).

jcc

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to