我喜欢节省 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互操作性,它不需要我写“maaaaakkkkeeaaaannnnarrrraaaaaayyyyy ooffff ttthhiiiinnngggsss”。