使用静态解析的类型参数是否可以使用curried参数调用类方法?

时间:2016-08-21 15:13:38

标签: f#

type Test() =
    member t.A(a: int -> int) (b: int) = ()

let cl = Test()

let f a b =
    (^a : (member A: (int -> int) -> int -> unit) cl, a, b)

以上说它无法找到成员或对象构造函数A。是否有可能以某种方式使上述工作?

1 个答案:

答案 0 :(得分:4)

不,没有改变定义就无法调用它。 我不确定它是否符合规范,但您可以在the source code中找到限制,过滤掉咖喱成员。

无论如何,如果你想使用curried参数,你可以使用lambda函数,它将起作用:

type Test() =
    member t.A(a: int -> int) = fun (b: int) -> ()

let cl = Test()

let f a b =
    (^a : (member A: (int -> int) -> (int -> unit)) cl, a) b