On Saturday, 28 December 2013 at 23:05:54 UTC, monarch_dodra
wrote:
1. This is a minimal example of trying the permutations of a
character array.
-----
import std.algorithm;
void main () {
char [] a;
do { } while (nextPermutation(a));
}
-----
This gives a compile error. However, it works when I change
"char [] a" to "dchar [] a". Why?
Because next permutation (AFAIK) works on ranges with
*assignable* elements, and "char[]" is not such a range: It is
a read-only range of dchars.
Ouch, is it an exception hard-coded into the language itself? I
thought it's just the nextPermutation's parameter type
restrictions which don't allow "char []"...
2. Why does nextPermutation hang up for empty arrays? I
suppose that's a bug?
I suppose so. Please file it. If it is deemed "illegal", at the
very least, it should throw.
OK, will do that tomorrow (on Sunday).
Also, the example at
http://dlang.org/phobos/std_algorithm.html#nextPermutation
is wrong:
while (nextPermutation(a)) { }
should in fact be
do { } while (nextPermutation(a));
as above, or we miss the very first permutation.
Noted. I'll try to fix that in the comming days. Or if anybody
else submits the pull, I'll merge it (*hint* *hint*, *wink*)
Hmm, I'll look into how hard is that for a start...
Ivan Kazmenko.