Please, consider that it is a bad idea/practice (in general) to emit calls to functions in a namespace/lib.
Indeed, if I try your version of the code in eclipse with clojuredev (but that would be the same problem with other IDEs as well), whenever the file gets recompiled, it will launch the main function ! Because in clojure, compile is really a 'compile and 'load feature.
I think the -main function is here to implement the main() method of the java class that the :gen-class directive of the namespace declaration has.
Since there has been no specific prefix specified, all functions that will be part of the generated class will just begin with -.
If Tzach had put a prefix to, say sudoku , then the main java method method would have been mapped to the sudoku-main clojure function. Please see
http://clojure.org/compilation and the docstrings of ns and gen-class for more detail.
Regards,
--
Laurent