[#380721] Can you search in REXML by attributes? — "Kyle X." <haebooty@...>

Hello and thank you to all the wonderful and helpful people at this

19 messages 2011/04/01
[#380737] Re: Can you search in REXML by attributes? — Robert Klemme <shortcutter@...> 2011/04/01

On Fri, Apr 1, 2011 at 2:53 AM, Kyle X. <haebooty@yahoo.com> wrote:

[#380755] Re: Can you search in REXML by attributes? — "Kyle X." <haebooty@...> 2011/04/01

Robert K. wrote in post #990336:

[#380762] Searching a CSV file - beginner seeking help — Simon Harrison <simon@...>

Hi all. I've written a little script to search a csv file for films. It

10 messages 2011/04/01

[#380843] Using grep on subarrays - help! — Simon Harrison <simon@...>

Can anyone help with this? I thought grep would find any element that

12 messages 2011/04/03

[#380849] Splitting each_cons? — Simon Harrison <simon@...>

I'm not sure if each_cons can do what I'm trying to achieve:

13 messages 2011/04/03

[#380883] pipe question — wolf volpi <wolf_volpi@...>

What does the pipe in this example do?

15 messages 2011/04/04

[#380949] functional languages -- any recommendations? — 7stud -- <bbxx789_05ss@...>

Haskell, Scala, or Erlang? Which one is the best?

18 messages 2011/04/05

[#380977] Separate new lines from an output — "Leo M." <leo.mmcm@...>

Hello!

12 messages 2011/04/05

[#381015] Match a pattern multiple times, returning matches, captures and offset? — Markus Fischer <markus@...>

Hi,

10 messages 2011/04/05

[#381035] capture the output of a grandchild — Chandan Bansal <chandan89@...>

hi

12 messages 2011/04/06

[#381075] Hello — Moises Montenegro <moemonty@...>

Hello,

43 messages 2011/04/06
[#381086] Re: Hello — James Nathan <badlands_2004@...> 2011/04/07

hello I am trying to get it stated myself, but I am not sure if I am setting Ruby up right.

[#381155] Re: Hello — James Nathan <badlands_2004@...> 2011/04/08

I am having a hard time to get it up and running. that is Ruby and Ruby on Rails. it seems that no one is willing to help so that we can enjoy this porgram. If their anyway that I can get it downloaded to me, some help to make sure that have the right porgrams.

[#381263] Re: Hello — James Nathan <badlands_2004@...> 2011/04/10

does the Free Ride program for Ruby the command program that I need to run and write my program?

[#381308] Re: Hello — James Nathan <badlands_2004@...> 2011/04/11

is there a disk that we can seen off and use. so that we can all the parts of ruby and ruby on rails. I would like this disk.

[#381313] Re: Hello — jake kaiden <jakekaiden@...> 2011/04/11

James Nathan wrote in post #992175:

[#381314] Re: Hello — Vincent Manis <vmanis@...> 2011/04/11

On 2011-04-11, at 16:50, jake kaiden wrote:

[#381322] Re: Hello — James Nathan <badlands_2004@...> 2011/04/12

I will just give up on Ruby and Ruby on Rails for now=20

[#381347] Re: Hello — James Nathan <badlands_2004@...> 2011/04/12

No, I will try another program to learn to write a program. Ruby is just to=

[#381351] Re: Hello — Phillip Gawlowski <cmdjackryan@...> 2011/04/12

On Tue, Apr 12, 2011 at 3:27 PM, James Nathan <badlands_2004@yahoo.com> wrote:

[#381358] Re: Hello — Martin DeMello <martindemello@...> 2011/04/12

On Tue, Apr 12, 2011 at 7:59 PM, Phillip Gawlowski

[#381087] Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...>

Folk,

44 messages 2011/04/07
[#381099] Re: Hash Surprises with Fixnum, #hash, and #eql? — Robert Klemme <shortcutter@...> 2011/04/07

On Thu, Apr 7, 2011 at 6:05 AM, Clifford Heath <no@spam.please.net> wrote:

[#381107] Re: Hash Surprises with Fixnum, #hash, and #eql? — Phillip Gawlowski <cmdjackryan@...> 2011/04/07

On Thu, Apr 7, 2011 at 11:19 AM, Robert Klemme

[#381109] Re: Hash Surprises with Fixnum, #hash, and #eql? — Robert Klemme <shortcutter@...> 2011/04/07

On Thu, Apr 7, 2011 at 1:20 PM, Phillip Gawlowski

[#381115] Re: Hash Surprises with Fixnum, #hash, and #eql? — Phillip Gawlowski <cmdjackryan@...> 2011/04/07

On Thu, Apr 7, 2011 at 1:53 PM, Robert Klemme

[#381182] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/08

On 04/07/11 19:19, Robert Klemme wrote:

[#381187] Re: Hash Surprises with Fixnum, #hash, and #eql? — Robert Klemme <shortcutter@...> 2011/04/08

On Fri, Apr 8, 2011 at 9:30 AM, Clifford Heath <no@spam.please.net> wrote:

[#381233] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/09

On 04/08/11 20:12, Robert Klemme wrote:

[#381269] Re: Hash Surprises with Fixnum, #hash, and #eql? — Charles Oliver Nutter <headius@...> 2011/04/11

Top-replying with a general observation: you can't please everyone all the =

[#381274] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/11

On 04/11/11 10:02, Charles Oliver Nutter wrote:

[#381337] Re: Hash Surprises with Fixnum, #hash, and #eql? — Robert Klemme <shortcutter@...> 2011/04/12

On Mon, Apr 11, 2011 at 5:20 AM, Clifford Heath <no@spam.please.net> wrote:

[#381393] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/13

On 04/12/11 19:09, Robert Klemme wrote:

[#381399] Re: Hash Surprises with Fixnum, #hash, and #eql? — Charles Oliver Nutter <headius@...> 2011/04/13

On Tue, Apr 12, 2011 at 9:05 PM, Clifford Heath <no@spam.please.net> wrote:

[#381402] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/13

On 04/13/11 15:51, Charles Oliver Nutter wrote:

[#381416] Re: Hash Surprises with Fixnum, #hash, and #eql? — Charles Oliver Nutter <headius@...> 2011/04/13

On Wed, Apr 13, 2011 at 1:35 AM, Clifford Heath <no@spam.please.net> wrote:

[#381469] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/13

On 04/13/11 22:23, Charles Oliver Nutter wrote:

[#381506] Re: Hash Surprises with Fixnum, #hash, and #eql? — Charles Oliver Nutter <headius@...> 2011/04/14

On Wed, Apr 13, 2011 at 4:40 PM, Clifford Heath <no@spam.please.net> wrote:

[#381510] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/14

On 04/14/11 15:36, Charles Oliver Nutter wrote:

[#381876] Re: Hash Surprises with Fixnum, #hash, and #eql? — Charles Oliver Nutter <headius@...> 2011/04/19

On Thu, Apr 14, 2011 at 12:55 AM, Clifford Heath <no@spam.please.net> wrote=

[#381970] Re: Hash Surprises with Fixnum, #hash, and #eql? — Clifford Heath <no@...> 2011/04/21

Charles,

[#381090] can we use direct ruby instaed of javascript ? — Sniper Abandon <sathish.salem.1984@...>

Hi Ninjas,

29 messages 2011/04/07
[#381113] Re: can we use direct ruby instaed of javascript ? — Peter Zotov <whitequark@...> 2011/04/07

On Thu, 7 Apr 2011 15:44:50 +0900, Sniper Abandon wrote:

[#381136] Re: can we use direct ruby instaed of javascript ? — Chad Perrin <code@...> 2011/04/07

On Thu, Apr 07, 2011 at 09:50:14PM +0900, Peter Zotov wrote:

[#381147] Re: can we use direct ruby instaed of javascript ? — Peter Zotov <whitequark@...> 2011/04/07

On Fri, 8 Apr 2011 01:48:58 +0900, Chad Perrin wrote:

[#381160] Re: can we use direct ruby instaed of javascript ? — Chad Perrin <code@...> 2011/04/08

On Fri, Apr 08, 2011 at 05:37:49AM +0900, Peter Zotov wrote:

[#381167] Re: can we use direct ruby instaed of javascript ? — Julian Leviston <julian@...> 2011/04/08

I think it might be actually quite interesting for the original poster =

[#381195] Re: can we use direct ruby instaed of javascript ? — Josh Cheek <josh.cheek@...> 2011/04/08

On Thu, Apr 7, 2011 at 11:46 PM, Julian Leviston <julian@coretech.net.au>wrote:

[#381125] String.gsub with regex and block — Alexey Petrushin <axyd80@...>

Probably a stupid question, but is there a way to use :gsub replacement

12 messages 2011/04/07

[#381210] Calling to_enum on a MatchData object — Vahagn Hayrapetyan <vahagnh@...>

Hi, I have the following snippet of code:

15 messages 2011/04/08

[#381281] Copying parameters to singleton class — Lars Olsson <lasso@...>

Hi list!

23 messages 2011/04/11

[#381306] Creating a full application with Ruby — Fily Salas <fs_tigre@...>

Hi,

22 messages 2011/04/11

[#381355] Ruby for beginners (was: Re: Hello) — Phillip Gawlowski <cmdjackryan@...>

On Tue, Apr 12, 2011 at 5:08 PM, Vincent Manis <vmanis@telus.net> wrote:

37 messages 2011/04/12
[#381365] Re: Ruby for beginners (was: Re: Hello) — andrew mcelroy <sophrinix@...> 2011/04/12

On Tue, Apr 12, 2011 at 10:30 AM, Phillip Gawlowski <

[#381373] Re: Ruby for beginners (was: Re: Hello) — Phillip Gawlowski <cmdjackryan@...> 2011/04/12

On Tue, Apr 12, 2011 at 7:48 PM, andrew mcelroy <sophrinix@gmail.com> wrote:

[#381388] Re: Ruby for beginners (was: Re: Hello) — Vincent Manis <vmanis@...> 2011/04/13

OK, so here's another kick at the can.=20

[#381420] Re: Ruby for beginners (was: Re: Hello) — Josh Cheek <josh.cheek@...> 2011/04/13

On Tue, Apr 12, 2011 at 8:30 PM, Vincent Manis <vmanis@telus.net> wrote:

[#381430] Re: Ruby for beginners (was: Re: Hello) — Vincent Manis <vmanis@...> 2011/04/13

On 2011-04-13, at 05:59, Josh Cheek wrote:

[#381434] Re: Ruby for beginners (was: Re: Hello) — Phillip Gawlowski <cmdjackryan@...> 2011/04/13

On Wed, Apr 13, 2011 at 4:48 PM, Vincent Manis <vmanis@telus.net> wrote:

[#381487] Re: Ruby for beginners (was: Re: Hello) — Vincent Manis <vmanis@...> 2011/04/14

On 2011-04-13, at 08:03, Phillip Gawlowski wrote:

[#381495] Re: Ruby for beginners (was: Re: Hello) — Chad Perrin <code@...> 2011/04/14

On Thu, Apr 14, 2011 at 10:35:42AM +0900, Vincent Manis wrote:

[#381530] Re: Ruby for beginners (was: Re: Hello) — Phillip Gawlowski <cmdjackryan@...> 2011/04/14

On Thu, Apr 14, 2011 at 5:03 AM, Chad Perrin <code@apotheon.net> wrote:

[#381423] so, who's writing a dedicated ruby ide? — Martin DeMello <martindemello@...>

The recent thread on newbie-friendliness and a "ruby in a box" IDE

11 messages 2011/04/13

[#381444] Tk : non blocking Tk.mainloop — Juju SL <jujusl@...>

Hi all,

21 messages 2011/04/13

[#381547] Running Ruby script in emacs — duke <sidney.reilley.ii@...>

Hey ...

14 messages 2011/04/14

[#381548] To Yield or Not to Yield: An Inferable Question — Michael Edgar <adgar@...>

Hi Rubyists,

14 messages 2011/04/14

[#381562] What do you do when you need to attach data to an object instance? — "Aaron D. Gifford" <astounding@...>

What do you do when you see a need to be able to attach some data to

17 messages 2011/04/14
[#381566] Re: What do you do when you need to attach data to an object instance? — Kevin Mahler <kevin.mahler@...> 2011/04/14

Aaron D. Gifford wrote in post #992841:

[#381573] Re: What do you do when you need to attach data to an object instance? — "Aaron D. Gifford" <astounding@...> 2011/04/14

On Thu, Apr 14, 2011 at 3:11 PM, Kevin Mahler <kevin.mahler@yahoo.com> wrot=

[#381582] Re: What do you do when you need to attach data to an object instance? — "Aaron D. Gifford" <astounding@...> 2011/04/14

> On Thu, Apr 14, 2011 at 3:11 PM, Kevin Mahler <kevin.mahler@yahoo.com> wrote:

[#381596] Re: What do you do when you need to attach data to an object instance? — Kevin Mahler <kevin.mahler@...> 2011/04/15

Aaron D. Gifford wrote in post #992887:

[#381567] Re: Chad Perrin — Everett L Williams II <rett@...>

*Hasn't anybody in the management of this forum the guts to either quiet

16 messages 2011/04/14

[#381605] looking for an "inversion" pattern — Fearless Fool <r@...>

I'm sure there's a clean way to do this in Ruby, but I haven't figured

13 messages 2011/04/15

[#381622] Get the real object in a Hash key — Iñaki Baz Castillo <ibc@...>

Hi, let's suppose this simple code in which I add internal attributes

14 messages 2011/04/15
[#381623] Re: Get the real object in a Hash key — Robert Klemme <shortcutter@...> 2011/04/15

On Fri, Apr 15, 2011 at 2:50 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote=

[#381626] Re: Get the real object in a Hash key — Iñaki Baz Castillo <ibc@...> 2011/04/15

2011/4/15 Robert Klemme <shortcutter@googlemail.com>:

[#381644] Extract a range i.e. svr[100..130] ? — Richard Sandoval <skolopen@...>

What best method could extract the range of a given list of servers?

13 messages 2011/04/15

[#381742] Telnet "More?" — "Eric T." <erictetz@...>

I'm trying to use the telnet library. I don't know Ruby AT ALL

15 messages 2011/04/17

[#381768] Tail Call Optimization (Tail Recursion) — Terry Michaels <cmhoward@...>

I did some googling to find out if Ruby supports tail call optimization,

18 messages 2011/04/18

[#381781] Need for speed -> a C extension? — Martin Hansen <mail@...>

Hello all,

28 messages 2011/04/18
[#381788] Re: Need for speed -> a C extension? — "WJ" <w_a_x_man@...> 2011/04/18

Martin Hansen wrote:

[#381792] Re: Need for speed -> a C extension? — Martin Hansen <mail@...> 2011/04/18

WJ wrote in post #993576:

[#381794] Re: Need for speed -> a C extension? — Ryan Davis <ryand-ruby@...> 2011/04/18

[#381836] Re: Need for speed -> a C extension? — Martin Hansen <mail@...> 2011/04/19

>> def match?(char1, char2)

[#381849] Re: Need for speed -> a C extension? — brabuhr@... 2011/04/19

On Tue, Apr 19, 2011 at 6:30 AM, Martin Hansen <mail@maasha.dk> wrote:

[#381853] Re: Need for speed -> a C extension? — Martin Hansen <mail@...> 2011/04/19

unknown wrote in post #993757:

[#381822] anonymous closures with Proc,new, lambda and -> — Stu <stu@...>

I am new to the study of functional paradigm. If this question is academic

32 messages 2011/04/19
[#381829] Re: anonymous closures with Proc,new, lambda and -> — Brian Candler <b.candler@...> 2011/04/19

Stu wrote in post #993687:

[#381830] Re: anonymous closures with Proc,new, lambda and -> — Brian Candler <b.candler@...> 2011/04/19

Brian Candler wrote in post #993704:

[#381875] Re: anonymous closures with Proc,new, lambda and -> — Stu <stu@...> 2011/04/19

how would i break it down to two functions?

[#381884] Re: anonymous closures with Proc,new, lambda and -> — 7stud -- <bbxx789_05ss@...> 2011/04/20

Stu wrote in post #993854:

[#381890] Re: anonymous closures with Proc,new, lambda and -> — Stu <stu@...> 2011/04/20

Lots of helpful information in this thread. Thank you all for helping me.

[#381942] Re: anonymous closures with Proc,new, lambda and -> — 7stud -- <bbxx789_05ss@...> 2011/04/20

Stu wrote in post #993922:

[#381946] Re: anonymous closures with Proc,new, lambda and -> — Steve Klabnik <steve@...> 2011/04/20

Naw, monads are actually really, really easy. They're just poorly

[#381952] Re: anonymous closures with Proc,new, lambda and -> — Brian Candler <b.candler@...> 2011/04/20

Steve Klabnik wrote in post #994098:

[#381958] On the Capitalization of Project Files — Intransition <transfire@...>

I have noticed a trend with regards to the case of project files. In

10 messages 2011/04/20

[#382043] Reversing a string without using array, classes and reverse function — Rubist Rohit <passionate_programmer@...>

I am trying this:

20 messages 2011/04/22

[#382092] How to split dot “.” only before equal “=” — Sira PS <ploy.sukachai@...>

I need to split dot only before equal to assign to hash

10 messages 2011/04/23

[#382156] Replace any multiple whitespaces with single white space — Michelle Pace <michelle@...>

Hello, I need to make the first string below into the second string.

10 messages 2011/04/25

[#382264] File position and buffers — Cee Joe <cyril_jose@...>

Hi all,

22 messages 2011/04/27

[#382292] Is everything object ? — "amir e." <aef1370@...>

Hi

35 messages 2011/04/28
[#382296] Re: Is everything object ? — Josh Cheek <josh.cheek@...> 2011/04/28

On Thu, Apr 28, 2011 at 4:48 AM, amir e. <aef1370@gmail.com> wrote:

[#382306] Re: Is everything object ? — Chad Perrin <code@...> 2011/04/28

On Thu, Apr 28, 2011 at 08:52:35PM +0900, Josh Cheek wrote:

[#382318] Re: Is everything object ? — Josh Cheek <josh.cheek@...> 2011/04/28

On Thu, Apr 28, 2011 at 10:12 AM, Chad Perrin <code@apotheon.net> wrote:

[#382334] Re: Is everything object ? — Chad Perrin <code@...> 2011/04/28

On Fri, Apr 29, 2011 at 02:23:32AM +0900, Josh Cheek wrote:

[#382347] Re: Is everything object ? — Josh Cheek <josh.cheek@...> 2011/04/28

On Thu, Apr 28, 2011 at 3:22 PM, Chad Perrin <code@apotheon.net> wrote:

[#382356] Re: Is everything object ? — Chad Perrin <code@...> 2011/04/29

On Fri, Apr 29, 2011 at 08:39:14AM +0900, Josh Cheek wrote:

[#382361] Re: Is everything object ? — Josh Cheek <josh.cheek@...> 2011/04/29

On Thu, Apr 28, 2011 at 10:40 PM, Chad Perrin <code@apotheon.net> wrote:

[#382395] Re: Is everything object ? — Chad Perrin <code@...> 2011/04/29

On Fri, Apr 29, 2011 at 01:09:25PM +0900, Josh Cheek wrote:

[#382416] Re: Is everything object ? — Josh Cheek <josh.cheek@...> 2011/04/29

On Fri, Apr 29, 2011 at 2:37 PM, Chad Perrin <code@apotheon.net> wrote:

[#382429] Re: Is everything object ? — Chad Perrin <code@...> 2011/04/30

On Sat, Apr 30, 2011 at 08:01:48AM +0900, Josh Cheek wrote:

[#382310] Initialize Struct from Hash — Brian Candler <b.candler@...>

I just want to check I've not missed something here. Is there a built-in

10 messages 2011/04/28

[#382312] calling methods, beginner help — Ronnie Aa <liquid98@...>

Hello Guys,

13 messages 2011/04/28

[#382350] Ruby Beginner Need Help.. — Didin Ibnu Sarnan <didinna@...>

Hi,

18 messages 2011/04/29
[#382352] Re: Ruby Beginner Need Help.. — 7stud -- <bbxx789_05ss@...> 2011/04/29

Didin Ibnu Sarnan wrote in post #995669:

[#382354] Re: Ruby Beginner Need Help.. — Didin Ibnu Sarnan <didinna@...> 2011/04/29

Hi,

[#382401] How do I read HTTP POST XML sent to CGI? — Ting Chang <aumart@...>

Hello Ruby Masters,

14 messages 2011/04/29

[#382452] Why defining a constant in a method is not allowed but using self.class.const_set is allowed? — Iñaki Baz Castillo <ibc@...>

Hi, assinging a value to a constant within a method is not allowed

14 messages 2011/04/30
[#382454] Re: Why defining a constant in a method is not allowed but using self.class.const_set is allowed? — Robert Klemme <shortcutter@...> 2011/04/30

On 30.04.2011 21:25, I=F1aki Baz Castillo wrote:

[#382456] Re: Why defining a constant in a method is not allowed but using self.class.const_set is allowed? — Iñaki Baz Castillo <ibc@...> 2011/04/30

2011/4/30 Robert Klemme <shortcutter@googlemail.com>:

[#382465] Re: Why defining a constant in a method is not allowed but using self.class.const_set is allowed? — Christopher Dicely <cmdicely@...> 2011/04/30

On Sat, Apr 30, 2011 at 12:58 PM, I=C3=B1aki Baz Castillo <ibc@aliax.net> w=

[#382466] Re: Why defining a constant in a method is not allowed but using self.class.const_set is allowed? — Iñaki Baz Castillo <ibc@...> 2011/04/30

2011/5/1 Christopher Dicely <cmdicely@gmail.com>:

Re: Hash Surprises with Fixnum, #hash, and #eql?

From: Robert Klemme <shortcutter@...>
Date: 2011-04-08 10:12:16 UTC
List: ruby-talk #381187
On Fri, Apr 8, 2011 at 9:30 AM, Clifford Heath <no@spam.please.net> wrote:
> On 04/07/11 19:19, Robert Klemme wrote:
>>
>> On Thu, Apr 7, 2011 at 6:05 AM, Clifford Heath<no@spam.please.net> =A0wr=
ote:

>> I also doubt whether it is a good idea to allow for subclassing of an
>> integer like class. =A0What use case do you have in mind which would
>> make this necessary?
>
> What's wrong with the case you use in that blog post?

You mean, make HexNum a subclass of Integer?  Yes, actually that's
what I had attempted at the time but failed for technical reasons
(explained in the blog).  As it turns out it's generally not necessary
to inherit Integer in Ruby to create a class which behaves like an
integer (most of the time).

> But as it turns out,
> I'm implementing a fact-based modeling DSL, where it's sensible to have
> classes like "AgeInYears" being a subclass of an integer like class.
> The formalism for this comes directly from sorted first-order logic,
> which makes a good deal more sense than the broken O-O paradigm discussed
> elsewhere in this thread.
>
> I suspect that you "doubt it is a good idea" only because Ruby's object
> model for numbers is inconsistent, and you're defensive about that.

Where exactly do you see the inconsistency?  I can see that a few
things in that area do not match common expectations.  But I don't
think it's really inconsistent.

Your problem is not so much with numeric classes IMHO but rather with
implementations of class Hash in different versions of Ruby.  Namely
do they have issues treating instances from different class as
equivalent.

> Note that I'm not actually subclassing any core integer class. I'm just
> defining a new base class "Int" which contains an integer, and so far
> as is possible, acts like one, including being found in a Hash using a
> Fixnum/Bignum key.
>
> If Fixnum and Bignum can act like Integer subclasses, why can't my class?

Fixnum and Bignum do not share common values so you never have
instances of different classes representing the same numeric integer
value:

irb(main):003:0> (1<<100).class
=3D> Bignum
irb(main):004:0> (1<<100)>>99
=3D> 2
irb(main):005:0> ((1<<100)>>99).class
=3D> Fixnum

So that situation is a bit different.

>>> In particular, the Hash implementations work (and break!) differently i=
n
>>> MRI, Rubinius and JRuby. It's documented to use only #hash and #eql?,
>>> but that's not always true (sometimes these have hard-wired
>>> optimsations).
>>
>> When you violate contracts you cannot expect code to work properly.
>
> I have not violated that (unstated!) contract. Read again; I redefine
> Fixnum#eql? as self.orig_eql?(i.to_i) - the to_i makes it symmetrical.
> (Debate the wisdom if you wish, it's just for demonstration purposes.)

Yes, you're right.  I probably mixed in a discussion about equals() in
Java needing to test for the same class (and not instanceof) to
achieve real equivalence.  At least we had a nice discussion about OO
and inheritance because of that. :-)

> However the Ruby interpreters do not honor that. In short, *all three*
> mentioned Ruby interpreters violate the Hash contract, which states that
> hash and eql? are used for Hash lookups. Not just sometimes, but all the
> time, including for integers.

Apparently there are optimizations done under the hood (similarly to
duping an unfrozen String as key) which is probably OK from a
pragmatic point of view (what you attempt seems rather seldom done).

> The Ruby interpreters should behave the way the Hash documentation says t=
hey
> do.

Well, they do - most of the time. :-)

> The Ruby documentation should explicitly state that eql? must be defined
> symmetrically, or should require that the Hash implementation uses it onl=
y
> in a known direction or both.

Right, there is certainly room for improvement.

>>> The Hash documentation does not say whether #eql? will be called only o=
n
>>> items in the hash, or only on keys being used to probe the hash. It
>>> should
>>> be one or the other, since a.eql?(b) might not always mean b.eql?(a).
>>
>> But that is the contract as far as I can see.
>
> That's not documented anywhere I can see. Certainly not in TRPL, see
> sections
> 3.4.2 on page 68, and section 3.8.5.3 page 77. It makes sense, but it's n=
ot
> stated.

Right again.  Maybe the requirement can be inferred from other
properties but it would certainly make sense to stress it.

>> =A0Having different
>> results for both violates the equivalence relation which means all
>> bets are off.
>
> No. I can fix the asymmetry. I can't make the interpreters honor that fix=
.

But since you already embarked in monkey patching core classes you can
easily extend that a bit to Hash#[] and Hash#fetch.  That should work
on all platforms.  Another possible remedy would be to wrap Hash
instances in something else which adds logic to [] and fetch() to
convert types if necessary.

>>> You'll see that the behaviour is very unpredictable.
>>
>> Yes, because of your violation of the contract.
>
> No. Because the Ruby interpreters don't honor the Hash contract.

As said, they do it most of the time.  You introduced a corner case
here by fiddling with a core class which is known to lead into deep
water.  Treating instances from different classes equivalent does work
for other classes:

12:07:22 Temp$ allruby ha.rb
CYGWIN_NT-5.1 padrklemme2 1.7.9(0.237/5/3) 2011-03-29 10:10 i686 Cygwin
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
[[#<B:0x7ff9faa4 @v=3D1>, 3, 1],
 [#<A:0x7ff9fa90 @v=3D2>, 5, 2],
 [1, 3, nil],
 [2, 5, nil]]
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ruby 1.9.2p180 (2011-02-18 revision 30909) [i386-cygwin]
[[#<B:0x1003a290 @v=3D1>, 129497438, 1],
 [#<A:0x1003a27c @v=3D2>, 602294680, 2],
 [1, 129497438, nil],
 [2, 602294680, nil]]
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
jruby 1.6.0 (ruby 1.8.7 patchlevel 330) (2011-03-15 f3b6154) (Java
HotSpot(TM) Client VM 1.6.0_24) [Windows XP-x86-java]
[[#<B:0xfa8 @v=3D1>, 1, 1], [#<A:0xfb0 @v=3D2>, 2, 2], [1, 1, nil], [2, 2, =
nil]]
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
jruby 1.6.0 (ruby 1.9.2 patchlevel 136) (2011-03-15 f3b6154) (Java
HotSpot(TM) Client VM 1.6.0_24) [Windows XP-x86-java]
[[#<B:0x000000 @v=3D1>, 1, 1],
 [#<A:0x000000 @v=3D2>, 2, 2],
 [1, 1, nil],
 [2, 2, nil]]
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
12:07:36 Temp$ cat -n ha.rb
     1
     2  require 'pp'
     3
     4  A, B =3D 2.times.map do
     5    Class.new do
     6      def initialize(x)
     7        @v =3D x.to_i
     8      end
     9
    10      def to_i
    11        @v
    12      end
    13
    14      def hash
    15        @v.hash
    16      end
    17
    18      def eql? o
    19        case o
    20        when A, B
    21          @v =3D=3D o.to_i
    22        end
    23      end
    24
    25      alias =3D=3D eql?
    26    end
    27  end
    28
    29  h =3D {A.new(1) =3D> 1, B.new(2) =3D> 2}
    30
    31  keys =3D [B.new(1), A.new(2), 1, 2]
    32
    33  pp keys.map {|k| [k, k.hash, h[k]]}
    34
    35
12:07:40 Temp$


> Please try to read more carefully.

Will do.

Cheers

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread