[#25936] [Bug:1.9] [rubygems] $LOAD_PATH includes bin directory — Nobuyoshi Nakada <nobu@...>

Hi,

10 messages 2009/10/05

[#25943] Disabling tainting — Tony Arcieri <tony@...>

Would it make sense to have a flag passed to the interpreter on startup that

16 messages 2009/10/05

[#26028] [Bug #2189] Math.atanh(1) & Math.atanh(-1) should not raise an error — Marc-Andre Lafortune <redmine@...>

Bug #2189: Math.atanh(1) & Math.atanh(-1) should not raise an error

14 messages 2009/10/10

[#26222] [Bug #2250] IO::for_fd() objects' finalization dangerously closes underlying fds — Mike Pomraning <redmine@...>

Bug #2250: IO::for_fd() objects' finalization dangerously closes underlying fds

11 messages 2009/10/22

[#26244] [Bug #2258] Kernel#require inside rb_require() inside rb_protect() inside SysV context fails — Suraj Kurapati <redmine@...>

Bug #2258: Kernel#require inside rb_require() inside rb_protect() inside SysV context fails

24 messages 2009/10/22

[#26361] [Feature #2294] [PATCH] ruby_bind_stack() to embed Ruby in coroutine — Suraj Kurapati <redmine@...>

Feature #2294: [PATCH] ruby_bind_stack() to embed Ruby in coroutine

42 messages 2009/10/27

[#26371] [Bug #2295] segmentation faults — tomer doron <redmine@...>

Bug #2295: segmentation faults

16 messages 2009/10/27

[ruby-core:26317] Re: New Enumerable#flat_map

From: Marc-Andre Lafortune <ruby-core-mailing-list@...>
Date: 2009-10-26 11:03:54 UTC
List: ruby-core #26317
Thanks to both of you for the answers :-)

I've written some basic Rubyspecs for it.

On Sun, Oct 25, 2009 at 6:48 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
>
> In message "Re: [ruby-core:26282] New Enumerable#flat_map"
> n Sun, 25 Oct 2009 05:02:28 +0900, Marc-Andre Lafortune <ruby-core-mailing-list@marc-andre.ca> writes:
> |
> |Hi Matz,
> |
> |I noticed the new Enumerable#flat_map (aka collect_concat) and I was
> |wondering what prompted the creation of this method.
>
> It's taken from flatMap from Scala or concatMap from Haskell.
>
> |In what kind of circumstances is flat_map needed?
>
> The following is the direct translation from the example in the
> "Programming Scala" book:
>
> lass Person
> ef initialize(name, is_male, *children)
> name = name
> is_male = is_male
> children = children
> nd
> ttr_reader :name, :children
> ef male?
> ! @is_male
> nd
> nd
>
> lice = Person.new("Alice", false)
> ob = Person.new("Bob", true)
> hris = Person.new("Chris", false, alice, bob)
>
>  [alice, bob, chris].reject(&:male?)
> flat_map{|p| p.children.map{|c| [p.name,c.name]}}
>
> which prints name pairs of a mother and a child.
>
> |I'm probably missing something, but what is the difference between:
> | num.collect_concat(&block)
> |and
> | num.map(&block).flatten(1)
> |?
>
> They do same thing, besides flat_map is shorter, clearer, and bit more
> efficient, without any magic number.  should have made the default
> value for #flatten to 1, but it's different story.
>
> atz.
>
>

In This Thread

Prev Next