>> 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)
----------------------------------------------------------------