some years ago, its been a long discussion on squeak mailing list about that.. imo association should compare keys. not values. But self-referencing data structures is and will be a problem. And there is no easy solution: a := Array new: 1. a at:1 put: a. a = a On 9 December 2012 17:20, Sven Van Caekenberghe <sven@stfx.eu> wrote:
I am not pro, see my comments in the issue tracker.
For example,
| a | a := Association key: #foo. (a value: (Array with: a)) = (a value: (Array with: a)).
would still loop.
Loops like that cannot be prevented locally.
See my other mail about prevent stack overflow.
On 09 Dec 2012, at 16:32, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
Hi guys
what is the impact on method =? Any ideas?
Stef On Dec 8, 2012, at 5:57 PM, Ciprian Teodorov wrote:
It seems that this issue can be fixed by modifying the = method in Association.
Association>>= anAssociation ^ super = anAssociation and: [ value == anAssociation value ifTrue: [ true ] ifFalse: [ value = anAssociation value ] ]
Cheers...
On Sat, Dec 8, 2012 at 5:35 PM, Benoit St-Jean <bstjean@yahoo.com> wrote: Same behavior in Squeak 4.2 btw
----------------- Benoit St-Jean Yahoo! Messenger: bstjean A standpoint is an intellectual horizon of radius zero. (Albert Einstein) From: Ciprian Teodorov <ciprian.teodorov@gmail.com> To: Pharo-project@lists.gforge.inria.fr Sent: Saturday, December 8, 2012 11:11:44 AM Subject: Re: [Pharo-project] strange == behavior
by the way, we have the same thing in 1.0, 1.1, 1.3.
On Sat, Dec 8, 2012 at 5:10 PM, Ciprian Teodorov <ciprian.teodorov@gmail.com> wrote: Hi guys,
Playing with some recursive data-structure I have found some strange piece of behavior in Pharo.
If in an workspace we try to evaluate:
a := Association new. a key: 3. a value: a. a == a value.
the first time we get "true", the second we get an infinite loop...
A simple workaround is to declare "a":
|a| a := Association new. a key: 3. a value: a. a == a value.
My question now is: Is this a bug or a feature ? By the way the same thing happens in 1.4 and 2.0 equally.
By the way, in Pharo 2.0 doing cmd + . erases the lines selected in the workspace replacing them by "."
Cheers, -- Dr. Ciprian TEODOROV Ingénieur Développement CAO
tél : 06 08 54 73 48 mail : ciprian.teodorov@gmail.com www.teodorov.ro
-- Dr. Ciprian TEODOROV Ingénieur Développement CAO
tél : 06 08 54 73 48 mail : ciprian.teodorov@gmail.com www.teodorov.ro
-- Dr. Ciprian TEODOROV Ingénieur Développement CAO
tél : 06 08 54 73 48 mail : ciprian.teodorov@gmail.com www.teodorov.ro
-- Best regards, Igor Stasenko.