Racket appears to have 4 functions for making a canonical path, but each slightly different. They are cleanse-path, resolve-path, simplify-path, and normalize-path.
Clearly these functions don't do the same thing as some of them take in different arguments. But the docs lack any examples here. So, what are the differences between these four very similar functions?