在泛型 go 中模拟方法类型参数

看完 Philip Wadler 关于轻量级围棋的演讲后,我对最新的围棋泛型草案感到非常兴奋。但是现在有了一个可供我们使用的新泛型草案版本,似乎轻量级围棋中的一些东西不再可能。在谈话和论文中,他介绍了一个类似函数的接口,称为List. 论文中的方法不太奏效。


type Any interface {}


type Function(type a Any, b Any) interface {

    Apply(x a) b

}


type Functor interface {

   Map(f Function) Functor

}

失败并出现错误:cannot use generic type Function(type a, b) without instantiation


如果您尝试向该方法添加类型参数,并使用您得到的普通函数:methods cannot have type parameters


我想知道是否有人找到了使函子与当前版本的草案一起使用的方法。


浮云间
浏览 191回答 1
1回答

繁星淼淼

您还没有使用泛型类型;在您的示例代码中,Functor将Function其视为不是通用的。正确的代码(编译,见这里)将是:type Function(type a Any, b Any) interface {    Apply(x a) b}type Functor(type a Any, b Any) interface {   Map(f Function(a,b)) Functor(a,b)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go