From: Marc-Andre Lafortune Date: 2010-04-04T05:55:01+09:00 Subject: [ruby-core:29240] [Bug #3089] limited size for Array#combination [patch] Bug #3089: limited size for Array#combination [patch] http://redmine.ruby-lang.org/issues/show/3089 Author: Marc-Andre Lafortune Status: Open, Priority: Low Category: core, Target version: 1.9.2 ruby -v: ruby 1.9.2dev (2010-04-03 trunk 27200) [x86_64-darwin10.2.0] I would expect the following to work, but it raises an error (0..100).to_a.combination(50).first(42) # => RangeError: too big for combination There is a limit of 1 << 31 potential results (or 1 <<63, depending on the platform). Since there is an explicit test for this, I learned the hard way I better ask if there is a valid reason for this artificial limit for #combination ? If not, and unless there is objection, I'll commit the attached patch. Note: I noticed this when implementing the block form of #product where a similar limit exists. Since #product without a block needs to return an array of this size, it is sensible that an error is raised in that case. When an block is given, though, I didn't see why there should be a limit, so the limitation applies only to the form without a block. This does mean, though, that arr.product(...) might not behave the same as arr.to_enum(:product, ...).to_a, at least until Enumerators have a length method (see issue #2673) ---------------------------------------- http://redmine.ruby-lang.org