const target = "METHINKS IT IS LIKE A WEASEL"; const C = 100; // Number of children in each generation. const P = 0.05; // Mutation probability. const A2ZS = ["A".."Z"].walk().append(" ").concat(); fcn fitness(s){ Utils.zipWith('!=,target,s).sum(0) } // bigger is worser fcn rnd{ A2ZS[(0).random(27)] } fcn mutate(s){ s.apply(fcn(c){ if((0.0).random(1) < P) rnd() else c }) } parent := target.len().pump(String,rnd); // random string of "A..Z " gen:=0; do{ // mutate C copies of parent and pick the fittest parent = (0).pump(C,List,T(Void,parent),mutate) .reduce(fcn(a,b){ if(fitness(a)