[#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:13488] Re: Method and Proc equality

From: Robert Feldt <feldt@...>
Date: 2001-04-04 14:45:22 UTC
List: ruby-talk #13488
On Wed, 4 Apr 2001, Robert Feldt wrote:

> On Wed, 4 Apr 2001, Dave Thomas wrote:
> 
> > Would the identity be based on the method name, or the method
> > semantics (given that you can redefine methods). I suspect this would
> > be a tricky thing to implement.
> > 
> On the actual code pointed to, ie. convert NODE * body to Integer say
> called code_hash or something. Then one can redefine Method#== and compare
> the code_hash values. Or?
> 
It works (even though it may not be portable?):

$ diff -u eval.c.old eval.c
--- eval.c.old  Wed Mar 28 10:43:24 2001
+++ eval.c      Wed Apr  4 16:34:02 2001
@@ -6603,6 +6603,15 @@
 }

 static VALUE
+method_code_hash(method)
+     VALUE method;
+{
+    struct METHOD *data;
+    Data_Get_Struct(method, struct METHOD, data);
+    return UINT2NUM((unsigned int)data->body);
+}
+
+static VALUE
 method_arity(method)
     VALUE method;
 {
@@ -6780,6 +6789,7 @@
     rb_define_method(rb_cMethod, "to_s", method_inspect, 0);
     rb_define_method(rb_cMethod, "to_proc", method_proc, 0);
     rb_define_method(rb_cMethod, "unbind", method_unbind, 0);
+    rb_define_method(rb_cMethod, "code_hash", method_code_hash, 0);
     rb_define_method(rb_mKernel, "method", rb_obj_method, 1);

     rb_cUnboundMethod = rb_define_class("UnboundMethod", rb_cMethod);

and chtest.rb:

   class Foo
    def bar; end
   end

   f  = Foo.new
   m1 = f.method :bar
   m2 = f.method :bar
   puts m1.code_hash
   puts m2.code_hash

   class Method
     def ==(other)
      self.code_hash == other.code_hash
     end
   end

   puts m1 == m2

and then

$ ruby -v chtest.rb
ruby 1.7.0 (2001-04-02) [i686-cygwin]
168007192
168007192
true

Not sure its safe though...

Regards,

Robert

In This Thread