On 17 Jun 2009, at 2:01 pm, Richard O'Keefe wrote: On second thoughts, let strings = "" : [pref++[last] | pref <- strings, last <- ['a'..'z']] in tail strings seems more Haskellish than the stupidly clever counting-based code I had in mind. With this it's much easier to see what it's up to.