我喜欢节省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 ttthhhee tttthhiiiinnngggsss"。