x,y) -6ren">
gpt4 book ai didi

F# 在 func `lambda` 和 `lambda` 之间存在差异 |> func

转载 作者:行者123 更新时间:2023-12-04 03:37:30 27 4
gpt4 key购买 nike

我正在使用 FSharpPlus 库,但两者之间存在差异

#r "nuget: FSharpPlus"
open FSharpPlus

memoizeN (fun x y -> x,y) // error FS0073: internal error: recursive class hierarchy (detected in TypeFeasiblySubsumesType), ty1 = MemoizeN

(fun x y -> x,y) |> memoizeN // OK

为什么会这样,有没有办法利用前者?

最佳答案

这不是因为 lambda,这是一种角落类型推理案例。

F# 类型推断是从左到右进行的,因此在某些情况下,它无法推断出泛型函数的正确类型,除非已经推断出其参数的类型信息。

一个更简单的例子可能是这样的:

let x = (fun lst -> lst.Length) [0]

关于F# 在 func `lambda` 和 `lambda` 之间存在差异 |> func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66622657/

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