在将一些代码迁移到最新版本的 F#(包含在 VS2010 b1 中)时,我遇到了一个问题,我想知道是否有可用的解决方法以及 - 如果没有 - 为什么 F# 编译器的行为被修改为不支持剧情。
type Foo(a) =
[<OverloadID("CurriedAbc")>]
member public x.Abc (p:(oneType * anotherType) seq) otherParm = method impl...
//this overload exists for better compatibility with other languages
[<OverloadID("TupledAbc")>]
member public x.Abc (p:Dictionary<oneType, anotherType>, otherParm) =
x.Abc(p |> Seq.map(fun kvp -> (kvp.Key, kvp.Value))) otherParm
此代码产生以下编译时错误:
错误 FS0191:此方法的一个或多个重载具有 curried 参数。考虑重新设计这些成员以采用元组形式的参数
请注意,这曾经在 F# 1.9.6.2(9 月 CTP)上完美运行