gpt4 book ai didi

f# - 为什么此 f# 代码无法编译?

转载 作者:行者123 更新时间:2023-12-01 04:44:19 24 4
gpt4 key购买 nike

我希望它是一个接受两个字符串并返回一个整数选项的函数。

 let helper (f : string -> string -> bool * int) = f >> function
| (true, item) -> Some item
| (false, _) -> None

最佳答案

通过扩展代码更容易解​​释,因此函数传递/组合更少。

让我们删除组合运算符 >>> 并使用管道 |> 代替,添加显式 aString 参数:

let helper (f : string -> string -> bool * int) aString =
f aString |> function
| (true, item) -> Some item
| (false, _) -> None

现在让我们使用 fun 而不是带有显式参数 xfunction:

let helper (f : string -> string -> bool * int) aString =
f aString
|> fun x ->
match x with
| (true, item) -> Some item
| (false, _) -> None

现在让我们通过内联 fun 来完全移除管道:

let helper (f : string -> string -> bool * int) aString =
match (f aString : string -> bool * int) with
| (true, item) -> Some item
| (false, _) -> None

此代码等同于您开始时使用的代码。 f aString 是只应用了一个字符串的 f 函数。由于柯里化(Currying),此表达式的类型为 string -> bool * int。我在上面的代码中添加了一个类型注释来证明这一点。在生成 bool * int 的结果之前,需要提供另一个字符串。

关于f# - 为什么此 f# 代码无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46446287/

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