[#11822] RCR: Input XML support in the base Ruby — Dave Thomas <Dave@...>

15 messages 2001/03/01

[#11960] Not Ruby, for me, for the moment at least — "Michael Kreuzer" <mkreuzer@... (nospam)>

I wrote on this newsgroup last weekend about how I was considering using

11 messages 2001/03/04

[#12023] French RUG ? — "Jerome" <jeromg@...>

Hi fellow rubyers,

16 messages 2001/03/05

[#12103] disassembling and reassembling a hash — raja@... (Raja S.)

Given a hash, h1, will the following always hold?

20 messages 2001/03/06

[#12204] FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1>

Ruby is, indeed, a very well designed language.

64 messages 2001/03/07
[#12250] Re: FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1> 2001/03/07

>>>>> "GK" == GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp> writes:

[#12284] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/08

In message "[ruby-talk:12250] Re: FEATURE REQUEST: 'my' local variables"

[#12289] Re: FEATURE REQUEST: 'my' local variables — matz@... (Yukihiro Matsumoto) 2001/03/08

Hi,

[#12452] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/12

In message "[ruby-talk:12289] Re: FEATURE REQUEST: 'my' local variables"

[#12553] Re: FEATURE REQUEST: 'my' local variables — Dave Thomas <Dave@...> 2001/03/13

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#12329] Math package — Mathieu Bouchard <matju@...>

18 messages 2001/03/09

[#12330] Haskell goodies, RCR and challenge — Robert Feldt <feldt@...>

Hi,

19 messages 2001/03/09
[#12374] Re: Haskell goodies, RCR and challenge — matz@... (Yukihiro Matsumoto) 2001/03/10

Hi,

[#12349] Can Ruby-GTK display Gif Png or Jpeg files? — Phlip <phlip_cpp@...>

Ruby-san:

20 messages 2001/03/09

[#12444] class variables — Max Ischenko <max@...>

14 messages 2001/03/12

[#12606] Order, chaos, and change requests :) — Dave Thomas <Dave@...>

17 messages 2001/03/14

[#12635] email address regexp — "David Fung" <dfung@...>

i would like to locate probable email addresses in a bunch of text files,

12 messages 2001/03/14

[#12646] police warns you -- Perl is dangerous!! — Leo Razoumov <see_signature@127.0.0.1>

I just read this story on Slashdot

14 messages 2001/03/14
[#12651] Re: police warns you -- Perl is dangerous!! — pete@... (Pete Kernan) 2001/03/14

On 14 Mar 2001 11:46:35 -0800, Leo Razoumov <see_signature@127.0.0.1> wrote:

[#12691] Re: police warns you -- Perl is dangerous!! — "W. Kent Starr" <elderburn@...> 2001/03/15

On Wednesday 14 March 2001 15:40, Pete Kernan wrote:

[#12709] [OFFTOPIC] Re: police warns you -- Perl is dangerous!! — Stephen White <spwhite@...> 2001/03/16

On Fri, 16 Mar 2001, W. Kent Starr wrote:

[#12655] Re: FEATURE REQUEST: 'my' local variables — "Benjamin J. Tilly" <ben_tilly@...>

>===== Original Message From Leo Razoumov <see_signature@127.0.0.1> =====

18 messages 2001/03/14

[#12706] Library packaging — "Nathaniel Talbott" <ntalbott@...>

I have a project that I'm working on that needs to live two different lives,

30 messages 2001/03/16

[#12840] Looking for a decent compression scheme — Dave Thomas <Dave@...>

14 messages 2001/03/19

[#12895] differences between range and array — "Doug Edmunds" <dae_alt3@...>

This code comes from the online code examples for

16 messages 2001/03/20
[#12896] Re: differences between range and array — "Hee-Sob Park" <phasis@...> 2001/03/20

[#12899] Re: differences between range and array — Jim Freeze <jim@...> 2001/03/20

On Tue, 20 Mar 2001, Hee-Sob Park wrote:

[#12960] TextBox ListBox — Ron Jeffries <ronjeffries@...>

Attached is a little Spike that Chet and I are doing. It is a

13 messages 2001/03/20

[#12991] [ANN] Lapidary 0.2.0 — "Nathaniel Talbott" <ntalbott@...>

Well, here's my first major contribution to the Ruby world: Lapidary. It's a

16 messages 2001/03/20

[#13028] mkmf question — Luigi Ballabio <luigi.ballabio@...>

15 messages 2001/03/21

[#13185] Reading a file backwards — "Daniel Berger" <djberg96@...>

Hi all,

21 messages 2001/03/25
[#13197] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

> Hi Dan,

[#13203] Re: Reading a file backwards — Mathieu Bouchard <matju@...> 2001/03/25

On Sun, 25 Mar 2001, Daniel Berger wrote:

[#13210] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

"Mathieu Bouchard" <matju@sympatico.ca> wrote in message

[#13374] Passing an array to `exec'? — Lloyd Zusman <ljz@...>

I'd like to do the following:

15 messages 2001/03/31

[#13397] Multidimensional arrays and hashes? — Lloyd Zusman <ljz@...>

Is it possible in ruby to make use of constructs that correspond to

14 messages 2001/03/31

[ruby-talk:12380] Re: Q re looping structures

From: "Benjamin J. Tilly" <ben_tilly@...>
Date: 2001-03-10 14:53:22 UTC
List: ruby-talk #12380
>===== Original Message From "Christoph Rippel" <crippel@primenet.com> =====
>> From: Benjamin J. Tilly [mailto:ben_tilly@operamail.com]
>[..]
>
[...]
>> I already gave the example of a directory structure.
>> Recursive data structures are widely used, and a
>> friend verified for me that it is common to use a
>> caching algorithm like the one I coded.  (Hopefully
>> without that bug.)
>
>You can always write a specialised directory tree
>class for this (you can base this class on array
>and change the equal operator with any equality
>scheme you want and id-caching is not the only
>possibility) there is not need to burden the
>general array class with the heavy cost and
>problems of more complicated equality notions ...
>
Your basic linked list is another example.  It may be
acceptable to decree that Ruby will break on recursive
data structures.  It may even be reasonable to say
that you will do it because of performance.  But you
are not about to convince me that it shouldn't be done
because what you get is conceptually too complicated.

FWIW the main reason that I see as a user for working
with a language with full gc rather than reference
counting is exactly because the languge will handle
recursive data structures better.

[...]
>Simple crashing (the current behavior) - it tells you that
>there is probably something fundamentally wrong with your
>program and/or input - a type exception simply tells what
>went wrong and where ...
>
To the best of my knowledge I have never written a
recursive data structure unintentionally.  But I have
before accidentally written a function that does deep
recursion quite a few times.

In fact I did it yesterday writing answers to the
Hamming sequence.

While I like it when a language catches my mistakes,
I prefer to have real mistakes caught.

>> [...]
>> >> In what you cut out I did construct them I thought.
>> >I know - I was thinking of [[[..],2],1]
>> >
>> Ah, that is a lot harder.  You can do it with streams,
>> but then you don't use the default array comparisons,
>> so we need not worry about it. :-)
>
>You can create this using reverse! ...
>
You can create a data structure that looks like:

 [[[[[...], 4], 3], 2], 1]

in a finite number of steps using arrays?  I would like
to see this.

Or do I misunderstand what you mean?

[...]
>> >require 'Ben'
>> >def cl( a, n)
>> >   base=loop= [a.clone]
>> >   (n-1).times { tmp = [a.clone]; loop << tmp; loop = tmp }
>> >   loop << base
>> >   base
>> >end
>> >
>> >p (cl("a",1) == cl("a",101))  # all id-cachings have this problem
>>
>> Is this a problem?
>
>Yes because you identify a loop of size 100 with loop
>of size one - you might think this is natural I don't
>(certainly not as a default behavior) and do say it
>again the algorithm takes forever to figure out that
>(cl("a",100) == cl("a",101)) are equal because you
>have run through the loop 100*101 times before
>realizing that they are equal .
>
You create an infinite data structure, and then in a
loop you unroll it a finite bit.  Since the initial
data structure was infinite, why is it a surprise that
you can unroll as much as you want and still preserve
== when that was the defined behaviour of ==?

As for the other problem, you have found a worst case
performance case.  It is still only quadratic in the
real size of the intial data structures.  And it is
sufficiently hard to get into that I don't think that
people will do it by accident.

IMHO it would be more reasonable to complain that
Enumerable offers a find method, which will result in
people into using that instead of hashing, thereby
making them more likely to make the mistake of writing
quadratic algorithms than it had to be.

I guarantee you that Enumerable's find method will be
the cause of more quadratic Ruby programs than the
worst case of the id caching algorithm could ever hope
for!

Cheers,
Ben

-------------------------------------------
The Fastest Browser on Earth now for FREE!!
Download Opera 5 for Windows now! Get it at
http://www.opera.com/download/
-------------------------------------------

In This Thread

Prev Next