【发布时间】:2015-04-06 14:04:46
【问题描述】:
鉴于以下trait(来自这个有用的shapeless talk):
scala> trait NatT[F[_], G[_]] { def apply[T](f: F[T]): G[T] }
warning: there were two feature warnings; re-run with -feature for details
defined trait NatT
我相信这意味着NatT 接受两个更高级的参数:F 和G。
有了这个假设,我尝试创建一个 F 和 G 类型为 Option 的实例:
scala> case object Maybe extends NatT[Option, Option] {
| override def apply(f: Option[Int]) = f
| }
<console>:8: error: object creation impossible, since method apply in trait NatT of type [T](f: Option[T])Option[T] is not de
fined
case object Maybe extends NatT[Option, Option] {
^
<console>:9: error: method apply overrides nothing.
Note: the super classes of object Maybe contain the following, non final members named apply:
def apply[T](f: Option[T]): Option[T]
override def apply(f: Option[Int]) = f
^
如何解决创建Maybe 实例的这种尝试?
【问题讨论】:
标签: scala