[#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:12398] Re: Q re looping structures

From: "Christoph Rippel" <crippel@...>
Date: 2001-03-10 22:21:31 UTC
List: ruby-talk #12398
> From: Benjamin J. Tilly [mailto:ben_tilly@operamail.com]
[...]
> >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.

Okay you can cook up the notion of absolute equality for 
those things (as some sort graph with ordered content
and ordered edges - you need this for deep perfect 
copying, basically what tar does) but this equality
does not generalize the notion of equality for
recursive Array's.
Take the standard example
x = [1]; y = [x,x]; z =[[1],[1]] 
in the graph interpretation  there is
huge difference between y and z but none
as arrays. 

The question is how to generalize ordinary array
equality to all graphs and this not obvious otherwise
we would not have this discussion ... the two possible
answers - id caching and ``untangle!'' (the algorithm does
not simply cut some edges it is a bit more complicated) 
do this by describing an equivalence relation on the path
space associated to the graph - 
so a full fledged tangle package should contain a path
space and loop space generator (whose elements are 
themselves generators are) and you are more then welcome
to provide them)  

> 
> 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.
Me neither, but it probably took me less then a minute to
crash the interpreter when I stumbled on ``recursive''
in matju's flattening code - ruby needs a facilities to 
protected against milieus input - the taint/freeze mechanism
is not enough and in general is just disconcerting that 
standard ruby has non facilities to handle recursive array's
and that you can crash the interpreter so easily.

As for programming errors it would be nice to have a package
which gives you better control over the value type of an 
Array/Hash that would include path-depth and or (sub)type 
tainted ness etc. which throws an exception with detailed error
information if you screwed up on your parameters... once you got
your program debugged you can return to  your happily 
un-parameterized standard container classes.
Parameterized container classes easily catch logical programming
errors which are hard to track down otherwise ... (but lets not
get into a discussion about generic types again I am not about
to fight windmills)

[...] 
> 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.
irb(main):001:0> a=[1,[2,[3,[4]]]]
[1, [2, [3, [4]]]]
irb(main):002:0> a[1][1][1] << a
[4, [1, [2, [3, [...]]]]]
irb(main):003:0> a[1][1][1].reverse!
[[1, [2, [3, [...]]]], 4]
irb(main):004:0> a[1][1].reverse!
[[[1, [2, [...]]], 4], 3]
irb(main):005:0> a[1].reverse!
[[[[1, [...]], 4], 3], 2]
irb(main):006:0>  a.reverse!
[[[[[...], 4], 3], 2], 1]

[...]
> >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 ==?

Okay this a news group but you that I know this ...
> 
> 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!

But enumerable is basically an abstraction of a list
you would expect #find to be linear - enumerable is not  
an abstraction of an ordered hash - You already pointed
out that the worst case of id-caching is probably O(n^3) 
and on the average O(n^2) on anything of type array of 
array ... it would be really stupid to make this the 
default behavior.

Christoph

[...] 

In This Thread

Prev Next