[英]F# type inference misses given information
如果我聲明這個F#函數:
let extractColumn col (grid : List<Map<string, string>>) =
List.map (fun row -> row.[col]) grid
編譯器抱怨:
錯誤FS0752:運算符'expr。[idx]'已根據此程序點之前的信息用於不確定類型的對象。 考慮添加其他類型約束
為lambda的row
參數添加類型注釋會修復它:
let extractColumn col (grid : List<Map<string, string>>) =
List.map (fun (row : Map<string, string>) -> row.[col]) grid
為什么不能從extractColumn
函數的grid
參數中獲取row
的類型?
F#的類型推斷從左到右,從上到下。
List.map (fun row -> row.[col])
部分中沒有grid
類型。
使用管道運算符|>
:
let extractColumn col (grid : Map<string, string> list) =
grid |> List.map (fun row -> row.[col])
使您的示例按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.