gpt4 book ai didi

F# 类型推断遗漏给定信息

转载 作者:行者123 更新时间:2023-12-04 23:01:41 27 4
gpt4 key购买 nike

如果我声明这个 F# 函数:

let extractColumn col (grid : List<Map<string, string>>) =
List.map (fun row -> row.[col]) grid

编译器提示:

error FS0752: The operator 'expr.[idx]' has been used on an object of indeterminate type based on information prior to this program point. Consider adding further type constraints

为 lambda 的 row 参数添加类型注释修复它:

let extractColumn col (grid : List<Map<string, string>>) =
List.map (fun (row : Map<string, string>) -> row.[col]) grid

为什么它不能从 extractColumn 函数的 grid 参数中获取 row 的类型?

最佳答案

F# 的类型推断是从左到右、从上到下进行的。

grid 类型在 List.map (fun row -> row.[col]) 部分不可用。

使用管道运算符|>:

let extractColumn col (grid : Map<string, string> list) =
grid |> List.map (fun row -> row.[col])

使您的示例按预期工作。

关于F# 类型推断遗漏给定信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com