
Am Montag, 31. Dezember 2007 17:43 schrieb Achim Schneider:
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?
I think it's the other way round. False && _|_ would be bottom in a right-to-left evaluation strategy, but is defined since False && _ = False. And, IIRC, excepting cases where the order of pattern matches intervenes, any expression which can be evaluated in any strategy (without hitting bottom, that is) can also be evaluated lazily and lazy evaluation yields the same value. Cheers, Daniel