我正在开发一些适用于硬盘上文件的应用程序。我有以下“实体”:
final case class File(path: String)
final case class FileChecksum(f: File, checksum: Long)
我还有以下类型类:
trait Checksum[T]{
def checksum(t: T): Long
}
所有这些都由以下特征操作:
trait Model{
def fromFile(file: File)(implicit checksum: Checksum[File]): FileChecksum
}
而且看起来还不错。但我决定重构它并应用无标签最终。所以模型现在看起来像:
trait Model[F[_]]{
def fromFile(file: File)(implicit checksum: Checksum[F, File]): F[FileChecksum]
}
trait Checksum[F[_], T]{
def checksum(t: T): F[Long]
}
让我困惑的问题是 typeclass trait Checksum[F[_], T]
。现在取决于上下文F
。那真的是一个类型类吗?还是我看错了方向?