[#13775] Problems with racc rule definitions — Michael Neumann <neumann@...>

15 messages 2001/04/17
[#13795] Re: Problems with racc rule definitions — Minero Aoki <aamine@...> 2001/04/18

Hi,

[#13940] From Guido, with love... — Dave Thomas <Dave@...>

52 messages 2001/04/20

[#13953] regexp — James Ponder <james@...>

Hi, I'm new to ruby and am coming from a perl background - therefore I

19 messages 2001/04/21

[#14033] Distributed Ruby and heterogeneous networks — harryo@... (Harry Ohlsen)

I wrote my first small distributed application yesterday and it worked

15 messages 2001/04/22

[#14040] RCR: getClassFromString method — ptkwt@...1.aracnet.com (Phil Tomson)

It would be nice to have a function that returns a class type given a

20 messages 2001/04/22

[#14130] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Guy N. Hurst wrote:

21 messages 2001/04/24
[#14148] Re: Ruby mascot proposal — Stephen White <spwhite@...> 2001/04/24

On Tue, 24 Apr 2001, Conrad Schneiker wrote:

[#14188] Re: Ruby mascot proposal — matz@... (Yukihiro Matsumoto) 2001/04/25

Hi,

[#14193] Re: Ruby mascot proposal — "W. Kent Starr" <elderburn@...> 2001/04/25

On Tuesday 24 April 2001 23:02, Yukihiro Matsumoto wrote:

[#14138] Re: python on the smalltalk VM — Conrad Schneiker <schneik@...>

FYI: Thought this might be of interest to the JRuby and Ruby/GUI folks.

27 messages 2001/04/24
[#14153] Re: python on the smalltalk VM — Andrew Kuchling <akuchlin@...> 2001/04/24

Conrad Schneiker <schneik@austin.ibm.com> writes:

[#14154] array#flatten! question — Jim Freeze <jim@...> 2001/04/24

Hello.

[#14159] Can I insert into an array — Jim Freeze <jim@...> 2001/04/24

Ok, this may be a dumb question, but, is it possible to insert into an

[#14162] Re: Can I insert into an array — Dave Thomas <Dave@...> 2001/04/24

Jim Freeze <jim@freeze.org> writes:

[#14289] RCR: Array#insert — Shugo Maeda <shugo@...> 2001/04/27

At Wed, 25 Apr 2001 01:28:36 +0900,

[#14221] An or in an if. — Tim Pettman <tjp@...>

Hi there,

18 messages 2001/04/25

[#14267] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Danny van Bruggen,

16 messages 2001/04/26

[#14452] How to do it the Ruby-way 3 — Stefan Matthias Aust <sma@3plus4.de>

First a question: Why is

21 messages 2001/04/30

[ruby-talk:14385] Re: Immutable Arrays?

From: Johann Hibschman <johannh@...>
Date: 2001-04-28 18:40:18 UTC
List: ruby-talk #14385
In article <LPBBKBFBHONLOPOMDKNKEEDJCDAA.dennisdecker@mail.tele.dk>,
Dennis Decker Jensen <dennisdecker@mail.tele.dk> wrote:

> I think it would be better if Hash#[aKeyObject] always duplicated and froze
> aKeyObject no matter what the type of aKeyObject should be. That way you
> wouldn't have to worry of side-effects.
> 
> Should this become a RCR?

Good lord, no.  That would make hashes useless for large objects where
you don't want the overhead of copying the object.  Another problem is
that a "copy" of an object is not well defined in general, since it may
contain references to other objects, references to itself, and
references to the entire system.

For strings, this hack works all right.  But it's a hack and a blight
on the purity of the language.  Luckily, I happily admit that you need
the occasional impure hack to make a tool usable by actual people,
so I'm fine with this.  I just don't think it's a good idea to make
the hack the rule.

On further thought, even freeze doesn't work.

rb(main):001:0> a = [1, [2, 3], 4]
[1, [2, 3], 4]
irb(main):003:0> a.freeze
[1, [2, 3], 4]
irb(main):004:0> a.hash
23
irb(main):012:0> a[1][0] = 5
5
irb(main):013:0> a.hash
47

So, in general, you can't trust freeze to keep the hash value constant.

Hm.  That's troubling.  Is the only answer "don't do that"?  I suppose
this is a hard problem.  The only "safe" way would be to use

a = [1, [2, 3].freeze, 4].freeze

which I find a little ugly.  Hm.  Well, luckily, this doesn't come up
all that often.  Perhaps hashing on object identity for mutable objects
would be a more useful behavior?


--Johann

In This Thread

Prev Next