在
(fn [& xs] (if xs 1 2))
对于{{xs}}参数不会推断任何类型。如果我们将其推断为{{seq}}类型,则可以发出未检查的{{if}}。 (这种代码的一个示例是{{str}}的可变参数数量中不必要的检查。)
虽然这种改动不会对性能产生重大影响,但它可以略微减少生成的代码大小,并有助于对错误代码进行更好的诊断。
cljs.user=> (fn [& xs] (+ xs 1)) 警告: cljs.core/+, 所有参数都必须是数字,但在第1行获得了[序列 数字]代替 <cljs repl>