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