欢迎!请参阅关于页面,了解更多关于如何使用本网站的信息。
在 LetExpr 解析器中看到 recurMismatches 向量
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java#L6062-6065
如果不是循环表达式,没有必要在其中添加初始化值 'false'。
我们可以将其重写为
`
if(isLoop) { for (int i = 0; i < bindings.count()/2; i++) { recurMismatches = recurMismatches.cons(RT.F); } }
这是对解析 let 表达式的微小改进。
评论者:jafingerhut
Dennis,如果您对这个想法正确,您可能希望稍微澄清描述,所提出的更改不会改变编译器的行为,除了在编译期间产生小的速度提升吗?
评论者:killme2008
是的,补丁不会改变编译器的行为。所有测试都是正常的。
它仅在检测循环特设形式的类型不匹配时使用,对于 let 特设形式不需要初始化。因此,我在初始化之前添加了一个 if(isLoop) 条件。