fcn ccnt(textInBitBucket){ letters:=["a".."z"].pump(List().write,0); // array of 26 zeros textInBitBucket.howza(0).pump(Void,'wrap(c){ // pump text as ints if(97<=c<=122) c-=97; else if(65<=c<=90) c-=65; else return(Void.Skip); letters[c]+=1 }); sum:=letters.sum(); println(sum," letters"); letters.enumerate().pump(List,'wrap([(c,n)]){ "%s(%d:%d%)".fmt((c+65).toChar(),n,n*100/sum)}) .concat(",").println(); } ccnt(Data(0,Int,"This is a test")); ccnt(File("dict.txt").read());