我正在尝试使用Clojure代码的标准序列化,忽略空格,注释等.我正在考虑使用EDN.
根据我读到的内容,将s表达式序列化为EDN的标准方法是通过pr-str,这似乎与大多数Clojure的构造很好地协作.但是,对于包含正则表达式的代码(使用哈希字符串阅读器宏,等#"\d+"),这似乎不太适用.
user=> (pr-str '#"\d")
"#\"\\d\""
user=> (edn/read-string (pr-str '#"\d"))
RuntimeException No dispatch macro for: " Clojure.lang.Util.runtimeException (Util.java:221)
Run Code Online (Sandbox Code Playgroud)
我正在使用Clojure 1.8.0.
有什么建议?
谢谢!
编辑: 感谢您的回答和评论.我想开始使用EDN的原因是我想处理不受信任的代码.
我的想法是,我想阅读这段代码(任何语法上有效的Clojure代码),然后通过一些特殊用途的静态分析来确保它符合我认为"安全"的特定Clojure子集,并且只如果符合,我会认为执行此代码是安全的.出于这个原因,我想避免load-file,它会立即加载文件,也可能read-string由于这些警告而加载文件.