我喜欢节省6个键位,在我看来,“fn”代替“function”或“lambda”完全值得这个票价,但我预见 if-seq/when-seq 会有一些成本。主要是有损 Clojure 的其他优点。
我喜欢 seq 是一个简单的习语,几乎出现在所有上下文中。
我喜欢在思考条件逻辑时不用担心复杂的转换。
我喜欢(即使只有一点错误)将序列库与应用程序语言区分开来。
我敬畏 Clojure 与真值之间的现有交换。
为了改进我关于重构的抱怨,“if-seq”可以称为“if-let-seq”,并且可以添加一个“let-seq”,这样添加/移除条件就只涉及“if-”或“when-”前缀。 但这样你会失去4个中6个节省的按键,忘记了letfn的教训,并且陷入了含有“-seq”命名形式的另一种形式的滑坡之中。
接下来,"some-seq","remove-seq","take-while-seq"等,通过类似的组合将seq与它们的内嵌测试混合。
在所有这些负面评价之后,我要说的是,如果有人急于为我节省一些按键,我很乐意有一个Java var-args互操作性,这样我就不需要写出“maaaakkkkeee aaannnn arrraaaayyy ooffff ttthhiiiinnngggsss”。