观看了Philip Wadler关于轻量级的演讲后,我对最新的go generics draft感到非常兴奋。但是现在有了新的通用仿制药草案的版本供我们使用,看来轻量级的某些事情不再可行。在talk和paper中,他都引入了一个类似/api/events/:id
的仿函数接口。本文中的方法不太有效。
match.params
失败,错误:List
,如果您尝试向该方法添加类型参数,并使用常规函数,则会得到:type Any interface {}
type Function(type a Any, b Any) interface {
Apply(x a) b
}
type Functor interface {
Map(f Function) Functor
}
我想知道是否有人找到了使函子与当前版本的草案一起工作的方法。
答案 0 :(得分:1)
您还没有通过泛型类型;在您的示例代码中,Functor
将Function
视为非通用。正确的代码(编译为see here)为:
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)
}