簡體   English   中英

F#類型推斷錯過了給定的信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM