欢迎!请在 关于页面 上了解有关此功能的更多详细信息。
ClojureScript 编译器在尝试为 clojure.lang.LazySeq 执行 emit-constant 时出错。
示例: https://www.refheap.com/paste/3901
在第三行定义 syms 作为 LazySeq,然后在第七行对其进行引用。错误包含在 refheap 中。
将 cljs.core.list 发射为此类型似乎可以解决问题。
由 dnolen 发表的评论
您能否准确地指出 LazySeq 在此处发出位置?LazySeq 不是一个字面量,因此这看起来像是宏中的错误。我可能是错的。谢谢!
由 bendlas 发表的评论
懒序列似乎是在第七行,'~syms 形式中引入的
`(let [mappings# (into {} (map-indexed #(identity [%2 %1]) '~syms))
Clojure 允许嵌套懒序列:https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java#L4538
顺便提一下:相关的协议不是字面量,而是 print-dup 多重方法。我们在 CLJS 中有/应该有 print-dup 吗?
附加的补丁0001没有为LazySeq添加一个情况,但是将PersistentList和Cons的两个情况合并为一个ISeq。
这种方法看起来是可接受的,但这是一个旧的补丁,我们能更新到主分支吗?