Preface: 1. Your status quo version is about 16s on my laptop.
2. The output differs from your repo's output.txt on one item: It corrects "accesing" to "accusing" rather than "acceding". Next: (append-map edits1 (edits1 s)) is very large -- 40,000+ items for "cat". But it looks like Norvig prunes the edit distance 2 list to known words? Say where `ht` is the training dict: (define (edits2 ht s) (for*/list ([x (in-list (edits1 s))] [y (in-list (edits1 x))] #:when (hash-ref ht y #f)) y)) That yields 2000+ items for "cat". When I make that change, my run time decreases from ~16s to ~10s, and produces the same output (which differs from output.txt in the same way I mentioned above). In relative terms this would probably get it close to the Python version? ____________________ Racket Users list: http://lists.racket-lang.org/users