在通用go中模拟方法类型参数

时间:2020-06-18 18:26:31

标签: go generics functor

观看了Philip Wadler关于轻量级的演讲后,我对最新的go generics draft感到非常兴奋。但是现在有了新的通用仿制药草案的版本供我们使用,看来轻量级的某些事情不再可行。在talkpaper中,他都引入了一个类似/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 }

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

1 个答案:

答案 0 :(得分:1)

您还没有通过泛型类型;在您的示例代码中,FunctorFunction视为非通用。正确的代码(编译为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)
}
相关问题