I have been using clojure for a couple of months now and one thing I really don\'t understand is why dashes in namespace names must be represented as underscores in the file
Do you mean that the .class files on disk have underscores where the functions in Clojure had dashes? I'm sure I read that it's something to do with the JVM not supporting dashes in those file names. (Or at least it not being a guarantee that it supports them.)
This is only a limitation of the class file names, and Clojure silently deals with this problem anyway. Your own code can still handle files with dashes in the filename.
I'm sorry that I don't have a reference for this right now.