[Haskell-cafe] Re: Proof question -- (==) over Bool
Alexander Solla
ajs at 2piix.com
Sun May 23 05:23:16 EDT 2010
On May 23, 2010, at 1:35 AM, Jon Fairbairn wrote:
> It seems to me relevant here, because one of the uses to which
> one might put the symmetry rule is to replace an expression “e1
> == e2” with “e2 == e1”, which can turn a programme that
> terminates into a programme that does not.
I don't see how that can be (but if you have a counter example, please
show us). Even if we extend == to apply to equivalence classes of
bottom values, we would have to evaluate both e1 and e2 to determine
the value of e1 == e2 or e2 == e1.
Prelude> undefined == True
*** Exception: Prelude.undefined
Prelude> True == undefined
*** Exception: Prelude.undefined
Prelude> undefined == undefined
*** Exception: Prelude.undefined
That is, if one case is exceptional, so is the other.
You can't really even quantify over bottoms in Haskell, as a
language. The language runtime is able to do some evaluation and
sometimes figure out that a bottom is undefined. Sometimes. But the
runtime isn't a part of the language. The runtime is an
implementation of the language's interpetation function. Bottoms are
equivalent by conceptual fiat (in other words, vacuously) since not
even the id :: a -> a function applies to them.
More information about the Haskell-Cafe
mailing list