Hi there, I had a look at the implementations of Knuth's algorithm S at rosetta code: http://rosettacode.org/wiki/Knuth's_algorithm_S#Racket
What baffles me is the fact that the Racket version is so slow. Running some sample on my laptop I have: Ruby: ruby kas.rb 0.57s user 0.01s system 99% cpu 0.574 total Perl: perl kas.pl 1.24s user 0.00s system 99% cpu 1.244 total Racket: racket kas.rkt 2.68s user 0.01s system 99% cpu 2.700 total I tried to improve but didn't get a significant improvement. Finally, I found why it is slow. In the Racket sample there is: (when (< (random) (/ n count)) (vector-set! vec (random n) item)) which I changed to (when (< (* count (random)) n) (vector-set! vec (random n) item)) Now I have: racket kasX.rkt 0.36s user 0.01s system 99% cpu 0.372 total This far slower than compiled languages but I think it is quite ok. The slowness seems to have to do with rational and converting from rational to real, just my guess. Question: Is the way I improved it the right way, or is there a better more idiomatic approach? -- Manfred ____________________ Racket Users list: http://lists.racket-lang.org/users