Project

General

Profile

Feature #6176

Allow Enumerable#flatten to take a block

Added by trans (Thomas Sawyer) about 7 years ago. Updated about 7 years ago.

Status:
Rejected
Priority:
Normal
Target version:
-
[ruby-core:43474]

Description

I see a new method #flat_map has been added to Enumerable. Yet passing a block to #flatten has no use. That seems a waste, as it adds yet another method to remember when one we already know can do the job and makes sense.

History

Updated by drbrain (Eric Hodel) about 7 years ago

I think #flat_map makes more sense than #flatten accepting a block. It's unclear to me what #flatten would do with the block based on the name alone.

Also, there is no Enumerable#flatten

Updated by trans (Thomas Sawyer) about 7 years ago

I think #flat_map makes more sense than #flatten accepting a block. It's unclear to me what #flatten would do with the block based on the name alone.

I never felt that this is a good kind of argument per-se. For instance, at first I did not understood the use of the term #map or what it would do with a block on the name alone. The term #collect made much more sense to me, but in time I became accustomed to #map, and being shorter that's all I use now.

So for #flatten, seeing that we all already use it, I'm not sure how it could be very unclear. In other words, what else could #flatten do with a block? Seems to me there are only too general choices (for any such method really), either it collects or it conditions. Do you think the block would make more sense as a condition of when to flatten and when to not? Maybe that would be better, and I would be willing to support that instead.

I just don't like to see new methods invented if another method could serve the purpose, so I think it's good to be sure about it.

Updated by mame (Yusuke Endoh) about 7 years ago

  • Status changed from Open to Assigned
  • Assignee set to matz (Yukihiro Matsumoto)

#flatten is recursive by default. #flat_map is not.
So I don't think it is a good idea to extend #flatten.

Anyway, #flat_map is already included in 1.9.
We no longer need to extend #flatten, I think.

--
Yusuke Endoh mame@tsg.ne.jp

Updated by trans (Thomas Sawyer) about 7 years ago

Ok. I agree. Reject issue.

Updated by mame (Yusuke Endoh) about 7 years ago

  • Status changed from Assigned to Rejected

Done. Thanks.

--
Yusuke Endoh mame@tsg.ne.jp

Also available in: Atom PDF