static IterableIterator allWordsOfAlphabet_fixedLength(fS alphabet, final int length) { ret new IterableIterator() { L l = rep((Int) 0, length); public bool hasNext() { ret true; // should change } public S next() { S s = makeString(); int i = 0; while (i < l(l)) { int n = l.get(i); if (n+1 < l(alphabet)) { l.set(i, n+1); break; } l.set(i++, 0); } if (i >= l(l)) null; ret s; } S makeString() { StringBuilder buf = new StringBuilder(l(l)); for (int i = 0; i < l(l); i++) buf.append(alphabet.charAt(l.get(i))); ret str(buf); } }; }