我喜欢省去6个按键,在我看来,“fn”取代“function”或“lambda”完全值得入场费,但我预见if-seq/when-seq会带来一些成本。主要是侵蚀Clojure的其它优点。
我喜欢seq是一种简单惯用法,在所有上下文中都存在。
我喜欢不需要担心复杂转换就可以思考条件逻辑。
我喜欢这种外观(即使它略微夸张),即序列库与语言区分开来。
我对Clojure与真值逻辑的现有关系感到敬畏。
为了改善我对重构的抱怨,可以将"if-seq"称为"if-let-seq",并添加一个"let-seq",这样添加/删除条件就只需涉及"if-"或"when-"前缀。但那样你将损失6个按键中的4个,同时忘记了letfn的教训,并滑向了一个带有"-seq"名称的备选形式宇宙。
接下来,"some-seq","remove-seq","take-while-seq"等,将与它们内嵌的测试类似地组成序列。
在所有这些负面评论之后,我想说我将很高兴看到一个Java var-args互操作,它不会让我写出"maaaakkkkeee aaannnn arrraaaayyy ooffff ttthhiiiinnngggsss"。