У меня есть последовательность FileInfo, но я забочусь только об их именах строк, поэтому я хочу последовательность строк. Сначала я попробовал что-то вроде этого:
Seq.map (fun fi -> fi.Name) fis
Но по какой-то причине логический вывод типа F # недостаточно хорош, чтобы позволить это, и заставил меня явно указать тип для "fi":
Seq.map (fun (fi : FileInfo) -> fi.Name) fis
Зачем нужна эта аннотация? Если известно, что fis : seq<FileInfo>
и Seq.map : ('a -> 'b) -> seq<'a> -> seq<'b>
, то не следует ли из этого сделать вывод, что тип лямбда-выражения равен FileInfo -> 'b
, а затем, из fi.Name : string
, сделать вывод, что его тип равен FileInfo -> string
?