On Saturday, 29 December 2012 at 20:59:56 UTC, Stewart Gordon wrote:
On 29/12/2012 01:18, Peter Alexander wrote:
My question now is what to do with really large ranges? For example, if we have a range of permutations of the elements in a set, when the set is larger than 21 the number of permutations is 21 factorial, which is
over 2^64. As far as I see, there are three options:

They look like four to me.

It's also three, for large values of three :-)


If we define a length that may overflow, then sooner or later some code will be called on it that calls hasLength on the range, finds it to be true, and then relies on length and malfunctions because the value returned doesn't match the actual length.

Using this logic, chain shouldn't have length either (it can overflow, as I demonstrated in the original post), but it does, and it should. There are many ranges in Phobos that may overflow in length.

The problem with permutations is that, for the kinds of permutations you are likely to use often, length will not overflow. It would be really useful to have length available when this is the case.

Reply via email to