在
(fn [& xs] (if xs 1 2))
不推断{{xs}}参数的类型。如果我们将其推断为{{seq}}类型,则可以发出不经检查的{{if}}输出。(这样的代码示例是{{str}}的变长参数中不必要的检查。)
尽管这种变化对性能影响不大,但它可以稍微减小生成的代码大小,并有助于对错误代码进行更好的诊断。
cljs.user=> (fn [& xs] (+ xs 1)) 警告:cljs.core/+, 所有参数必须是数字,第1行获得了[seq number]类型而不是数字类型 <cljs repl>