值限制错误:
let myFn (s : string) (args : obj seq) = ()
let myOtherFn = myFn ""
无值限制错误:
let myFn (s : string) (args : obj list) = ()
let myOtherFn = myFn ""
为什么?
值限制错误:
let myFn (s : string) (args : obj seq) = ()
let myOtherFn = myFn ""
无值限制错误:
let myFn (s : string) (args : obj list) = ()
let myOtherFn = myFn ""
为什么?
所有绑定都是自动泛化的主题。
由于seq<'T>
是一个接口(IEnumrable 的别名),因此推断的类型myOtherFn
将
val myOtherFn : ('_a -> unit) when '_a :> seq<obj>
是通用的,但是 myOtherFn 不是函数声明(请阅读上面链接中的值限制部分),因此自动泛化不能推断出这是相同的作为val myOtherFn : seq<obj> -> unit
.
要强制自动泛化,您可以向 myOtherFn 添加显式参数
let myOtherFn args = myFn "" args