我喜欢节省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"等,以类似的方式将seq与它们的内嵌测试组合。
在这个消极之后,我会说我喜欢Java var-args互操作,它不需要我写出“maaaakkkkeee aaannnn arrraaaayyy ooffff ttthhiiiinnngggsss”。