При переносе некоторого кода в последнюю версию 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: одна или несколько перегрузок этого метода имеют аргументы карри. Подумайте о том, чтобы изменить состав этих членов, чтобы они брали аргументы в кортеже
Обратите внимание, что раньше это работало безупречно на F # 1.9.6.2 (сентябрь CTP)