On 31 Dec 2007, at 10:43 AM, Achim Schneider wrote:

Achim Schneider <[EMAIL PROTECTED]> wrote:

That's not specified though, the runtime could choose to let + force
the two chunks the different way round.

And that is probably also the reason why [1..] == [1..] is _|_.

Is "Something that can be, in any evaluation strategy, be bottom, is
bottom" quite right, i.e. the formalism defined such, that no
possibly unevaluable thing is defined?

No. Again, the semantics of Haskell are defined denotationally, not operationally. In fact, Haskell implementations are required to use an evaluation strategy that finds a value whenever one (denotationally) exists, so it's the exact opposite of what you said.

Strict languages come much closer to your rule, OTOH.

jcc

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

Reply via email to