欢迎!请访问 关于 页面以获取更多有关如何使用本站的信息。
当尝试为 clojure.lang.LazySeq 类型生成常量时,cljs 编译器会报错。
示例: https://www.refheap.com/paste/3901
在示例中,syms 定义在第 3 行为一个 LazySeq,然后在第 7 行进行了引用。错误包括在 refheap 中。
对于此类型的 cljs.core.list 生成似乎解决了问题。
评论者:dnolen
您能准确找到 LazySeq 在此处是如何生成的吗?LazySeq 不是文字量,我觉得这可能是宏中的错误。我可能错了。谢谢!
评论者:bendlas
Lazy seq 似乎是第 7 行的 '~syms 表达式中引入的
`(let [mappings# (into {} (map-indexed #(identity [%2 %1]) '~syms))
Clound 允许嵌套使用 LazySeq:https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java#L4538
顺便提一下:相关的协议不是文字量,而是 print-dup 多方法。在 CLJS 中我们是否有 print-dup?
附加的补丁0001没有为LazySeq添加用例,但将PersistentList和Cons的两个用例合并为一个ISeq用例。
这种方法似乎可以接受,但这是一个旧的补丁,我们能否更新到master版?