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