有没有理由使用f有界多态而不是类型类?
它们都解决了编写函数f(a:A):A
的问题,其中A
必须支持给定的一组操作(方法)(实现接口/是类型类的实例)。 / p>
答案 0 :(得分:2)
最终用户代码可能更简单,更短,看起来更好。
示例:
def first[A](s: Seq[A]): A = s.head
如果Seq
是类型类,则用户必须编写以下内容:
def first[A, F[_]](s: F[A])(implicit S: Seq[F]): A = S.head(s)