【发布时间】:2020-05-06 15:42:31
【问题描述】:
在 F# 中,我定义了一个带有泛型成员的接口:
type MyType =
abstract MyMember<'a> : 'a -> int
我想写一个函数,可以创建一个实现这个接口的对象:
module MyType =
let create f =
{
new MyType with
member __.MyMember(x) = f x
}
目前编译失败,错误信息如下:
This code is not sufficiently generic. The type variable 'a could not be generalized because it would escape its scope.
是否可以通过内联和静态解析类型参数(或类似的东西)来完成这项工作?谢谢。
【问题讨论】:
-
简短回答 - 你不能这样做。 F# 没有更高级别的类型,简单来说,这意味着函数在作为值传递时会失去其通用性。这有点相关:stackoverflow.com/a/42599144/180286
标签: f#