为什么clojure会将名称中的破折号转换为文件系统中的下划线?

Zub*_*air 27 clojure

我一直在使用clojure几个月而且我真的不明白的一件事是为什么命名空间名称中的破折号必须在文件系统中表示为下划线.任何人都可以向我解释这一点,是否有可能在文件名中使用破折号?

Stu*_*rra 32

这是Java互操作性的必要解决方法.

当Clojure命名空间是AOT(提前)编译成Java .class文件时,它必须具有一个有效Java标识符的名称.Dash在Java类名称中无效,因此Clojure将它们转换为下划线.它还将字符转换*为像_STAR_.