[#8997] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Mathieu Bouchard <matju@...>

On Tue, 3 Oct 2006, matz wrote:

77 messages 2006/10/04
[#8998] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/04

Hi,

[#9029] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Mathieu Bouchard <matju@...> 2006/10/08

On Wed, 4 Oct 2006, Yukihiro Matsumoto wrote:

[#9030] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/08

Hi,

[#9034] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Dave Burt <dave@...> 2006/10/09

Yukihiro Matsumoto wrote:

[#9041] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9042] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9043] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9044] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9045] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9047] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9050] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — James Edward Gray II <james@...> 2006/10/09

On Oct 9, 2006, at 10:19 AM, dblack@wobblini.net wrote:

[#9053] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Eero Saynatkari <ruby-ml@...> 2006/10/09

On 2006.10.10 00:31, James Edward Gray II wrote:

[#9055] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — James Edward Gray II <james@...> 2006/10/09

On Oct 9, 2006, at 11:50 AM, Eero Saynatkari wrote:

[#9056] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9054] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9066] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9072] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/10

Hi --

[#9083] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/10

Hi,

[#9119] What about 'splay'? — dblack@...

Hi --

37 messages 2006/10/11
[#9122] Re: What about 'splay'? — Eero Saynatkari <ruby-ml@...> 2006/10/11

On 2006.10.12 02:32, dblack@wobblini.net wrote:

[#9127] Re: What about 'splay'? — Sean Russell <ser@...> 2006/10/11

On Wednesday 11 October 2006 13:55, Eero Saynatkari wrote:

[#9188] Symbol < String in Ruby > 1.8 — dblack@...

Hi --

107 messages 2006/10/15
[#9192] Re: Symbol < String in Ruby > 1.8 — Yukihiro Matsumoto <matz@...> 2006/10/16

Hi

[#9212] Re: Symbol < String in Ruby > 1.8 — Charles Oliver Nutter <Charles.O.Nutter@...> 2006/10/17

Yukihiro Matsumoto wrote:

[#9238] Re: Symbol < String in Ruby > 1.8 — Charles Oliver Nutter <Charles.O.Nutter@...> 2006/10/18

Charles Oliver Nutter wrote:

[#9244] Re: Symbol < String in Ruby > 1.8 — Sam Roberts <sroberts@...> 2006/10/18

On Thu, Oct 19, 2006 at 05:06:02AM +0900, Charles Oliver Nutter wrote:

[#9255] Re: Symbol < String in Ruby > 1.8 — Yukihiro Matsumoto <matz@...> 2006/10/19

Hi,

[#9256] Re: Symbol < String in Ruby > 1.8 — Sam Roberts <sroberts@...> 2006/10/19

Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 01:40:42PM +0900:

[#9190] Re: Symbol < String in Ruby > 1.8 — "Rick DeNatale" <rick.denatale@...> 2006/10/16

On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9191] Re: Symbol < String in Ruby > 1.8 — dblack@... 2006/10/16

Hi --

[#9194] Re: Symbol < String in Ruby > 1.8 — "Rick DeNatale" <rick.denatale@...> 2006/10/16

On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9196] Re: Symbol < String in Ruby > 1.8 — Yukihiro Matsumoto <matz@...> 2006/10/16

Hi,

[#9202] Re: Symbol < String in Ruby > 1.8 — "Rick DeNatale" <rick.denatale@...> 2006/10/16

On 10/16/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#9203] Re: Symbol < String in Ruby > 1.8 — James Edward Gray II <james@...> 2006/10/16

On Oct 16, 2006, at 3:06 PM, Rick DeNatale wrote:

[#9205] String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Sam Roberts <sroberts@...> 2006/10/16

On Tue, Oct 17, 2006 at 05:14:09AM +0900, James Edward Gray II wrote:

[#9218] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Rick DeNatale" <rick.denatale@...> 2006/10/17

On 10/16/06, Sam Roberts <sroberts@uniserve.com> wrote:

[#9220] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Nobuyoshi Nakada <nobu@...> 2006/10/17

Hi,

[#9225] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/18

Hi --

[#9226] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — James Edward Gray II <james@...> 2006/10/18

On Oct 17, 2006, at 7:29 PM, dblack@wobblini.net wrote:

[#9230] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/18

Hi --

[#9231] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Eric Hodel <drbrain@...7.net> 2006/10/18

On Oct 18, 2006, at 4:18 AM, dblack@wobblini.net wrote:

[#9232] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/18

On 10/18/06, Eric Hodel <drbrain@segment7.net> wrote:

[#9234] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — mathew <meta@...> 2006/10/18

On 10/18/06, Nikolai Weibull <now@bitwi.se> wrote:

[#9236] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/18

On 10/18/06, mathew <meta@pobox.com> wrote:

[#9237] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Mauricio Fernandez <mfp@...> 2006/10/18

On Thu, Oct 19, 2006 at 04:24:24AM +0900, Nikolai Weibull wrote:

[#9240] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/18

On 10/18/06, Mauricio Fernandez <mfp@acm.org> wrote:

[#9242] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/18

Hi --

[#9247] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Rick DeNatale" <rick.denatale@...> 2006/10/19

On 10/18/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9250] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Jim Weirich <jim@...> 2006/10/19

Rick DeNatale wrote:

[#9261] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/19

Hi --

[#9262] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Yukihiro Matsumoto <matz@...> 2006/10/19

Hi,

[#9264] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/19

Hi --

[#9267] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/19

On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9277] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/19

Hi --

[#9285] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/20

On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9288] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/20

Hi --

[#9289] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Jim Weirich <jim@...> 2006/10/20

dblack@wobblini.net wrote:

[#9294] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Yukihiro Matsumoto <matz@...> 2006/10/20

Hi,

[#9300] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/20

Hi --

Re: What about 'splay'?

From: "Rick DeNatale" <rick.denatale@...>
Date: 2006-10-12 20:09:33 UTC
List: ruby-core #9174
On 10/12/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
> Hi --
>
> On Thu, 12 Oct 2006, Dave Burt wrote:
>
> > dblack@wobblini.net wrote:
> >> ... The
> >> whole problem, though, is that this method's purpose is to represent
> >> the object as an array, but we can't use to_a or to_ary.  It's hard to
> >> come up with a fully good alternative.
> >
> > Please allow me to disagree. We can and currently do use to_a, and I do
> > not see the benefit of this new method.
> > I think that means you're agreeing :-)

And as you know, I'm in the same camp.

It looks like in the past, to_ary was used.  At least that's what the
Pickaxe implies:

P. 340 Parallel Assignment:
   "1. If the last rvalue is prefixed with an asterisk and implements
to_ary, the rvalue is replaced with the elements of the array, with
each element forming its own rvalue."

P 373 - in the Duck Typing chapter
  "A small number of strict conversion functions are built into the
standard library.

    to_ary -> Array
       Used when the interpreter needs to convert a object into an array for
       parameter passing or multiple assignment.

                 class OneTwo
                      def to_ary
                          [1, 2]
                      end
                 end
                 ot = OneTwo.new
                 a, b = ot
                 puts "a= #{a}, b = #{b}"
                 printf("%d -- %d\n", *ot)

        produces:
                a = 1, b = 2
                1 -- 2

Now it seems that somewhere along the way, the EXPLICIT use * prefix
got changed to use to_a instead of to_ary. Extending the example above

               a, b = *ot
has the same result as
               a, b = ot

Now if we define the class TwoThree

    class TwoThree
           def to_a
                [2, 3]
            end
     end

and now:

     tt = TwoThree.new
     c, d = tt
     c => #<TwoThree:0xb7d6c1d4>
     d => nil

but
     tt = *tt
     c => 2
     d => 3

This is all under 1.8.  Under the current 1.9:

    a, b = ot
    a =>#<TwoThree:0xb7d6c1d4>
    b => nil
    a, b = *ot
    a =>#<TwoThree:0xb7d6c1d4>
    b => nil

    c, d = tt
    c => #<TwoThree:0xb7dc9454>
    d = nil

    c, d = *tt
    c => #<TwoThree:0xb7dc9454>
    d = nil

So, FWIW, the current 1.9 breaks the P 373 example in the Pickaxe.

Now recently, I was going to suggest that instead of to_values,
to_rvalues might be a better name of to_splat if we NEED to have it,
this is because for parallel assignment, or parameter assignment, *
can only really send a message to an rvalue, since on the left hand
side (or in the formal parameter) it really modifies the
interpretation of a variable not an object.

However this morning someone posted _why's trick of using * for a case
branch e.g.

Executives = #w[Fred, Jo, Sally]

case employee
   when *Executives
        # employee is an executive
end

Here, I'm not sure how to classify Executives as either an rvalue or
an lvalue, it's really the receiver of :===  here.

Now that led to another test of 1.8 vs. 1.9

Under 1.8

case 1
 when ot
    puts "got it"
end
=> nil

case 1
   when *ot
      puts "got it"
end
got it
=> nil

So under 1.8 case doesn't implicitly splat case branch values, but it
will use to_ary on an explicit splat.

case 3
   when tt
       puts "got it"
 end
=> nil

case 3
    when *tt
       puts "got it"
    end

Now under the current 1.9 none of these examples work, even _why's case trick.

And that seems to be a shame!

-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

In This Thread