Forum: Ruby-core [ruby-trunk - Feature #7340][Open] 'each_with' or 'into' alias for 'each_with_object'

Posted by nathan.f77 (Nathan Broadbent) (Guest)
on 2012-11-13 00:18
(Received via mailing list)
Issue #7340 has been reported by nathan.f77 (Nathan Broadbent).

----------------------------------------
Feature #7340: 'each_with' or 'into' alias for 'each_with_object'
https://bugs.ruby-lang.org/issues/7340

Author: nathan.f77 (Nathan Broadbent)
Status: Open
Priority: Low
Assignee:
Category: lib
Target version: next minor


Following on from the discussions at #7297 and #7241, it is apparent 
that a shorter alias for 'each_with_object' would be much appreciated.
Posted by matz (Yukihiro Matsumoto) (Guest)
on 2012-11-13 03:07
(Received via mailing list)
Issue #7340 has been updated by matz (Yukihiro Matsumoto).


I dislike #into because it may or may not put something into the 
argument.
I am OK with #each_with.

Matz.

----------------------------------------
Feature #7340: 'each_with' or 'into' alias for 'each_with_object'
https://bugs.ruby-lang.org/issues/7340#change-32832

Author: nathan.f77 (Nathan Broadbent)
Status: Open
Priority: Low
Assignee:
Category: lib
Target version: next minor


Following on from the discussions at #7297 and #7241, it is apparent 
that a shorter alias for 'each_with_object' would be much appreciated.
Posted by merborne (kyo endo) (Guest)
on 2012-11-13 03:26
(Received via mailing list)
Issue #7340 has been updated by merborne (kyo endo).


matz (Yukihiro Matsumoto) wrote:
> I dislike #into because it may or may not put something into the argument.
> I am OK with #each_with.
>
> Matz.

I would appreciate if you could look at #6687. but #each_with is OK for 
me :-)
----------------------------------------
Feature #7340: 'each_with' or 'into' alias for 'each_with_object'
https://bugs.ruby-lang.org/issues/7340#change-32835

Author: nathan.f77 (Nathan Broadbent)
Status: Open
Priority: Low
Assignee:
Category: lib
Target version: next minor


Following on from the discussions at #7297 and #7241, it is apparent 
that a shorter alias for 'each_with_object' would be much appreciated.
Posted by rosenfeld (Rodrigo Rosenfeld Rosas) (Guest)
on 2012-11-13 12:26
(Received via mailing list)
Issue #7340 has been updated by rosenfeld (Rodrigo Rosenfeld Rosas).


The reason I dislike each_with_object and each_with is the "each" on 
them. "each"'s return value isn't meaningful to me. That's why I would 
prefer "map_to", "map_into" or just "into".

"into" here doesn't mean putting values "into" the array or hash. It 
means: "turn/map object into a hash/array/whatever". It is not about 
putting something into the passed object, but about converting the 
original object (say numbers) into the object being passed as the 
initial value like a hash or an array.

It is ok to chain operations as a pattern (like the one used by jQuery) 
so that an_array.each{...}.sort would justify "each" returning the 
original "an_array", but only to be able to chain operations and not 
because "each" implies returning anything meaningful.

In that sense, each_with_object is currently supposed to return some 
meaningful value. That is why I'd prefer to call it "map_to", "map_into" 
or just "into".

numbers.map_into({}){...} should read "map numbers into a hash where 
...". It would be even shorter if we just abbreviated "map_into" as just 
"into".

Also, if there is any chance that this wouldn't be an alias to 
each_with_object, I'd prefer the block's arguments order to be inverted 
to be symmetric to "inject".
----------------------------------------
Feature #7340: 'each_with' or 'into' alias for 'each_with_object'
https://bugs.ruby-lang.org/issues/7340#change-32853

Author: nathan.f77 (Nathan Broadbent)
Status: Open
Priority: Low
Assignee:
Category: lib
Target version: next minor


Following on from the discussions at #7297 and #7241, it is apparent 
that a shorter alias for 'each_with_object' would be much appreciated.
Posted by Matthew Kerwin (mattyk)
on 2012-11-13 12:37
(Received via mailing list)
On 13 November 2012 21:25, rosenfeld (Rodrigo Rosenfeld Rosas) <
rr.rosas@gmail.com> wrote:

> putting something into the passed object, but about converting the original
> just "into".
>
> numbers.map_into({}){...} should read "map numbers into a hash where ...".
> It would be even shorter if we just abbreviated "map_into" as just "into".
>
> Also, if there is any chance that this wouldn't be an alias to
> each_with_object, I'd prefer the block's arguments order to be inverted to
> be symmetric to "inject".


I believe, given that explanation, that #map_to is a far more 
appropriate
name than #map_into . . . and suddenly the reservations I had about this
alias start to fade away.

There is a clear semantic distinction between #each_with, where the 
focus
is on the action performed in the block, and #map_to, where the focus is 
on
the object returned from the block.  So the question is: is this
alias/method meant to be an analogue for #each, or for #map ?


--
  Matthew Kerwin, B.Sc (CompSci) (Hons)
  http://matthew.kerwin.net.au/
  ABN: 59-013-727-651

  "You'll never find a programming language that frees
  you from the burden of clarifying your ideas." - xkcd
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.