相关疑难解决方法(0)

为什么F#的类型推断不能处理这个?

我有一个FileInfo序列,但我只关心它们的字符串名称,所以我想要一个字符串序列.起初我尝试过这样的事情:

Seq.map (fun fi -> fi.Name) fis
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,F#的类型推断不足以允许这样做,并让我明确地给"fi"类型:

Seq.map (fun (fi : FileInfo) -> fi.Name) fis
Run Code Online (Sandbox Code Playgroud)

为什么需要这个注释?如果知道那个fis : seq<FileInfo>,那么Seq.map : ('a -> 'b) -> seq<'a> -> seq<'b>,它不应该推断lambda表达式的类型是FileInfo -> 'b,然后,从而fi.Name : string进一步推断它的类型是FileInfo -> string

f# type-inference

13
推荐指数
1
解决办法
910
查看次数

标签 统计

f# ×1

type-inference ×1