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 报告)
...