2024 Clojure 状态调查!中分享你的想法。

欢迎!请查看关于页面,了解更多关于这是如何工作的信息。

0
Clojure

在 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 表达式解析的改进。

3 答案

0

评论由: jafingerhut

Dennis,你可能想稍微澄清一下描述,如果我对这个工单的理解正确的话。所提议的更改不会更改编译器的行为,除了在编译期间有一定速度提升?

0

评论由: killme2008

是的,这个补丁不会更改编译器的行为。所有测试都正常。

在 LetExpr 解析器中看到的 recurMismatches 向量,请参阅

https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java#L6062-6065

仅在检测循环特殊形式的类型不匹配时使用,对于 let 特殊形式没有必要初始化。因此我只是在初始化之前添加了一个 if(isLoop) 条件。

0
参考:https://clojure.atlassian.net/browse/CLJ-1521(由 killme2008 举报)
...