On Mon, Dec 12, 2011 at 1:56 PM, Carlo <snoob...@yahoo.ie> wrote:

> Hi
>
> Wouldn't the fact that you use hash cause potential loops now? e.g.
> collection refers to another object that refers to first collection. -->
> aCollection>>hash references an item which causes this current collection's
> hash to be called again?
>
>
Hi Carlo. I am still newbie with Collections but I think I am having
exactly that problem. During my tests, it loops in Collection >> #hash
when sending #hash to its elements.
Sorry, but I couldn't undertand what is the cause of the problem?  why it
doesn't work while it does using #identityHash?  could you elaborate?

thanks


> identityHash is deterministic in this case.
>
> Does this help?
> Cheers
> Carlo
>
> On 12 Dec 2011, at 10:58 AM, Mariano Martinez Peck wrote:
>
> Hi guys. I hope this is not a very stupid question. Background: in Fuel we
> have a IdentityDictionary where we put each of the objects we find while
> traversing the graph. We need to use IdentitySet because we cannot have
> repetitions (and to avoid loops) so we NEED to use #==. In such dictionary
> we put ALL objects of the graph, so it can be very big. Since IdentitySet
> uses #identityHash, it means it will be using those ONLY 12 bits in the
> object header. It means that we have 2^12 = 4096  different values.
>
> Question:  having explained the previous, I wanted to be able to use #hash
> rather than #identityHash since several classes implement #hash and hence I
> thought that using #hash I could have less colisions and hence a better
> performance. I tried to make a subclass of IdentitySet that uses #hash
> rather than #identityHash but my image freezes. I also tried something like:
>
> set := PluggableSet new.
>     set hashBlock: [ :elem | elem hash ].
>     set equalBlock: [ :a :b | a == b ].
>
> But it doesn't work either. I works with simple tests in a workspace but
> when I run the full tests of Fuel, it enters in a loop in the method #hash
> of Collection..
>
> Anyway, my question is, should that work? if not, what is the exact reason?
>
> Thanks in advance,
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
>
>


-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to