У меня есть последовательность 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
?