
Jonathan Cast
On 31 Dec 2007, at 10:43 AM, Achim Schneider wrote:
Achim Schneider
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.
I guess I just have to change unevaluable to not denotationally reducable. Except to _|_, of course. Which makes it completely logical, but also completely meaningless if you don't look at the algebra. It seems like I have to translate the formulae to plain English after all. Not today, though, I'm planning to be drunk in one hour and a half. -- (c) this sig last receiving data processing entity. Inspect headers for past copyright information. All rights reserved. Unauthorised copying, hiring, renting, public performance and/or broadcasting of this signature prohibited.