[#12073] Re: Ruby is much slower on linux when compiled with --enable-pthread? — "M. Edward (Ed) Borasky" <znmeb@...>

-----BEGIN PGP SIGNED MESSAGE-----

9 messages 2007/09/04

[#12085] New array methods cycle, choice, shuffle (plus bug in cycle) — David Flanagan <david@...>

Four new methods have been added to Array the Ruby 1.9 trunk. I've got

81 messages 2007/09/06
[#18036] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Charles Oliver Nutter <charles.nutter@...> 2008/07/31

Restarting this thread because I missed it the first time around and

[#18037] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Yukihiro Matsumoto <matz@...> 2008/07/31

Hi,

[#18038] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "Gregory Brown" <gregory.t.brown@...> 2008/08/01

On Thu, Jul 31, 2008 at 7:50 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#18046] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Michael Neumann <mneumann@...> 2008/08/01

Gregory Brown wrote:

[#18048] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Charles Oliver Nutter <charles.nutter@...> 2008/08/01

Michael Neumann wrote:

[#18051] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "David A. Black" <dblack@...> 2008/08/01

Hi --

[#18053] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "Wilson Bilkovich" <wilsonb@...> 2008/08/01

On 8/1/08, David A. Black <dblack@rubypal.com> wrote:

[#18074] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — David Flanagan <david@...> 2008/08/01

Wilson Bilkovich wrote:

[#18080] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Yukihiro Matsumoto <matz@...> 2008/08/02

Hi,

[#18097] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "Pit Capitain" <pit.capitain@...> 2008/08/03

2008/8/2 Yukihiro Matsumoto <matz@ruby-lang.org>:

[#18040] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Jim Weirich <jim.weirich@...> 2008/08/01

On Jul 31, 2008, at 7:33 PM, Charles Oliver Nutter wrote:

[#18056] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Thomas Enebo <Thomas.Enebo@...> 2008/08/01

Jim Weirich wrote:

[#18059] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Jim Weirich <jim.weirich@...> 2008/08/01

On Aug 1, 2008, at 1:53 PM, Thomas Enebo wrote:

[#12096] Next 1.8.6 on Sept. 22 — Urabe Shyouhei <shyouhei@...>

Hi all.

28 messages 2007/09/09

[#12201] how about actors implemented in ruby-core itself — hemant <gethemant@...>

Hi,

12 messages 2007/09/20

[#12248] arbitrary Unicode characters in identifiers? — David Flanagan <david@...>

12 messages 2007/09/26

[#12284] gc.c -- possible logic error? — Hugh Sasse <hgs@...>

I've been looking at Tom Copeland's memory allocation problem:

36 messages 2007/09/28
[#12329] Re: gc.c -- possible logic error? — Tanaka Akira <akr@...> 2007/10/01

In article <Pine.GSO.4.64.0709281302390.26570@brains.eng.cse.dmu.ac.uk>,

[#12305] Will 1.8.6 remain compiled with VC6? — "Luis Lavena" <luislavena@...>

Hello Core developers.

29 messages 2007/09/30
[#12306] Re: Will 1.8.6 remain compiled with VC6? — "Austin Ziegler" <halostatue@...> 2007/09/30

On 9/30/07, Luis Lavena <luislavena@gmail.com> wrote:

New array methods cycle, choice, shuffle (plus bug in cycle)

From: David Flanagan <david@...>
Date: 2007-09-06 22:11:52 UTC
List: ruby-core #12085
Four new methods have been added to Array the Ruby 1.9 trunk.  I've got 
a couple of questions and comments and one bug report:

cycle is an iterator that is like calling each on the array within an 
infinite loop. Matz: have you considered generalizing this to be a 
method of Enumerable?

cycle has what I'd consider a bug: call it on an empty array and it will 
never return and will never invoke the associated block.

     ruby1.9 -e '[].cycle {}'

When I do this I can't even ^C to stop ruby. I have to kill -9 the 
process. I'd suggest that cycle simply return when the array is empty. 
That is, it cycles until the array becomes empty (which will be forever 
in most cases).  The patch I propose is at the bottom of this message.

choice returns a random element from the array.  I don't like the name 
of this method: neither the word "choice" nor it verb form "choose" 
imply randomness--instead they suggest the opposite.  I suggest just 
using the name "rand", "random" or "random_element". Most array methods 
are verbs, but a noun here would match the existing methods first and 
last.  Also, may I suggest a random! variant of the method that returns 
*and removes* a random element from the array?  first and last already 
have shift and pop to serve this purpose.

shuffle and shuffle! randomly permute an array and seem worth having.  I 
think I remember Josh Bloch (author of the Java collections library) 
writing somewhere that shuffling an array correctly is actually kind of 
hard to do, so I think it is great to have these methods, even if I 
can't think of a use case right now :-)

	David

--- array.c.orig        2007-09-06 15:00:02.000000000 -0700
+++ array.c     2007-09-06 15:03:30.000000000 -0700
@@ -2940,6 +2940,7 @@

      RETURN_ENUMERATOR(ary, 0, 0);
      for (;;) {
+       if (RARRAY_LEN(ary) == 0) return Qnil;
         for (i=0; i<RARRAY_LEN(ary); i++) {
             rb_yield(RARRAY_PTR(ary)[i]);
         }


In This Thread

Prev Next