>> let x=[1..] in x==x 
>> would not terminate in the first case but succeed in the second. 
> 
> But, much worse
> 
>       let x = (a,b) in x `req` x      = True
> but
>       (a,b) `req` (a,b)                       = False
> 
> So referential transparency is lost.  This is a high price to pay.
> You are right that *something* is needed; but I don't yet know what.

I do not think that this is "worse". 
Such a funtion would have to be used wise. 
"True" means "Sure both terms are equal, we can save further actions"
"False" means "Do not know,"
It is a primitive which has to be used as in the list comparison. 
Then, "referential transparency" is recreated, but the termination problem 
remains. 

> Meanwhile Jeff Lewis has a BDD library accessible from Haskell, I believe.
>       [EMAIL PROTECTED]
I will ask him. 
I made a BDD-lib already, but it uses an array to store the nodes, and 
garbage collection is explicitely programmed on this array 
requiring reallocation, contents copying and so forth,  very ugly. 

Andreas

---------------------------------------------------------------
                        Andreas C. Doering
                        Medizinische Universitaet zu Luebeck
                        Institut fuer Technische Informatik
                        Ratzeburger Allee 160
                        D-23538 Luebeck Germany

                        Tel.: +49 451 500-3741, Fax: -3687
                        Email: [EMAIL PROTECTED]
                        Home: http://www.iti.mu-luebeck.de/~doering 
                             quiz, papers, VHDL, music

"The fear of the LORD is the beginning of ... science" (Proverbs 1.7)
----------------------------------------------------------------


Reply via email to