[#10209] Market for XML Web stuff — Matt Sergeant <matt@...>

I'm trying to get a handle on what the size of the market for AxKit would be

15 messages 2001/02/01

[#10238] RFC: RubyVM (long) — Robert Feldt <feldt@...>

Hi,

20 messages 2001/02/01
[#10364] Re: RFC: RubyVM (long) — Mathieu Bouchard <matju@...> 2001/02/05

[#10708] Suggestion for threading model — Stephen White <spwhite@...>

I've been playing around with multi-threading. I notice that there are

11 messages 2001/02/11

[#10853] Re: RubyChangeRequest #U002: new proper name for Hash#indexes, Array#indexes — "Mike Wilson" <wmwilson01@...>

10 messages 2001/02/14

[#11037] to_s and << — "Brent Rowland" <tarod@...>

list = [1, 2.3, 'four', false]

15 messages 2001/02/18

[#11094] Re: Summary: RCR #U002 - proper new name fo r indexes — Aleksi Niemel<aleksi.niemela@...>

> On Mon, 19 Feb 2001, Yukihiro Matsumoto wrote:

12 messages 2001/02/19

[#11131] Re: Summary: RCR #U002 - proper new name fo r indexes — "Conrad Schneiker" <schneik@...>

Robert Feldt wrote:

10 messages 2001/02/19

[#11251] Programming Ruby is now online — Dave Thomas <Dave@...>

36 messages 2001/02/21

[#11469] XML-RPC and KDE — schuerig@... (Michael Schuerig)

23 messages 2001/02/24
[#11490] Re: XML-RPC and KDE — schuerig@... (Michael Schuerig) 2001/02/24

Michael Neumann <neumann@s-direktnet.de> wrote:

[#11491] Negative Reviews for Ruby and Programming Ruby — Jim Freeze <jim@...> 2001/02/24

Hi all:

[#11633] RCR: shortcut for instance variable initialization — Dave Thomas <Dave@...>

13 messages 2001/02/26

[#11652] RE: RCR: shortcut for instance variable initialization — Michael Davis <mdavis@...>

I like it!

14 messages 2001/02/27

[#11700] Starting Once Again — Ron Jeffries <ronjeffries@...>

OK, I'm starting again with Ruby. I'm just assuming that I've

31 messages 2001/02/27
[#11712] RE: Starting Once Again — "Aaron Hinni" <aaron@...> 2001/02/27

> 2. So far I think running under TextPad will be better than running

[#11726] Re: Starting Once Again — Aleksi Niemel<zak@...> 2001/02/28

On Wed, 28 Feb 2001, Aaron Hinni wrote:

[ruby-talk:11447] Re: Array bugs?

From: ts <decoux@...>
Date: 2001-02-24 12:54:39 UTC
List: ruby-talk #11447
>>>>> "C" == Christoph Rippel <crippel@primenet.com> writes:
>> From: ts [mailto:decoux@moulon.inra.fr]
>> >>>>> "M" == Mathieu Bouchard <matju@sympatico.ca> writes:

 I'll try to explain what do ruby actually

M> def f(x); [x,x]; end
M> def g(x); f f f f f f f f x; end
M> (g g g 1) == (g g g 1) #=> true

 In this case it do something like this :
   
   class Array
      def ==(other)
         each_index do |i|
            return false if not self[i] == other[i]
         end
         true
      end
   end


 This explain why it has problem with recursive array.

>> 
>> def f(x); [x,x]; end
>> def g(x); f f f f f f f f x; end
>> p (g g g 1)

 In this case inspect is protected, and ruby do (this is *very* simplified) 

   class Array
      def inspect
         return '[]' if empty?
         return '[...]' if @inspect.include? id
         begin
            @inspect.push id
            str = '['
            each do |i|
               str << i.inspect
            end
	    str << ']'
         ensure
            @inspect.pop
         end
         str
      end
   end

 where @inspect is in reality a thread local variable.

 This is why it take a very long time to find 'p (g g g 1)' because all
recursive calls are replaced with a 'begin ... ensure'

C> ##########################
C> p ([1,3,3,[3,4],"a"] == [1,3,3,[3,4],"a"]) 
C> p ([1,3,3,[3,4],"a"] == [1,3,3,[3,4],"b"])

C> ##########################
C> a =[1,2,3]; a << a; b =[1,2]; b << b;  a  << a; b << a; 
C> p a - b; p a; p b

 In this case it give the good result

pigeon% cat b.rb
#!./ruby
p ([1,3,3,[3,4],"a"] == [1,3,3,[3,4],"a"]) 
p ([1,3,3,[3,4],"a"] == [1,3,3,[3,4],"b"])
 
a =[1,2,3]; a << a; b =[1,2]; b << b;  a  << a; b << a; 
p a - b; p a; p b
pigeon% 

pigeon% b.rb
true
false
[3]
[1, 2, 3, [...], [...]]
[1, 2, [...], [1, 2, 3, [...], [...]]]
pigeon% 


C> ##########################
C> def f(x); [x,x]; end
C> def g(x); f f f f f f f f x; end
C> def h(x); g g g g g g g g x; end
C> def i(x);  h h h h h h h h x; end
C> def j(x); i i i i  i i i   x;end

C> p (j(1) == j(1))

 Here it take too long time to compute it.


Guy Decoux

In This Thread

Prev Next