On Fri, 11 Jan 2008 09:16:12 +0200, Lennart Augustsson <[EMAIL PROTECTED]> wrote:

Thank you Duncan, you took the words out of my mouth. :)

On Jan 10, 2008 5:42 PM, Duncan Coutts <[EMAIL PROTECTED]> wrote:

>
So let's imagine:

ones = 1 : ones

ones' = repeat 1
 where repeat n = n : repeat n

So you're suggesting that:

ones == ones = True
but
ones' == ones' = _|_


Well if that were the case then  it is distinguishing two equal values
and hence breaking referential transparency. We can fairly trivially
prove that ones and ones' are equal so == is not allowed to distinguish
them. Fortunately it is impossible to write == above, at least using
primitives within the language.

If one can prove ones == ones = True with some method, why that method cannot be made to work on ones' ?

Are you thinking about repeat (f x) by any chance ?



________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Servers.
 part000.txt - is OK
http://www.eset.com
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to