我正在看20 Intermediate Scala Exercises,在练习4时遇到了一些困难。不幸的是,我在任何地方都找不到解决方案,我想知道它是否真的可以解决。Fluffy显然是伪装成的Functor,而furryfmap

trait Fluffy[F[_]] {
  def furry[A, B](f: A => B, fa: F[A]): F[B]
}

object Fluffy {
  // Exercise 1
  // Relative Difficulty: 1
  def ListFluffy: Fluffy[List] = new Fluffy[List] {
    def furry[A, B](f: A => B, fa: List[A]): List[B] = fa map f
         // am assuming this is the right idea...
  }

  // Exercise 4
  // Relative Difficulty: 1
  def ArrayFluffy: Fluffy[Array] = new Fluffy[Array] {
    def furry[A, B](f: A => B, fa: Array[A]): Array[B] = ???
  }
问题是,如果没有上下文绑定(bind)的Array[B],我将无法创建B: ClassManifest,但是如果我添加一个Fluffy,则会破坏Manifest特性的契约。
由于这些问题来自2008年(大概是在ojit_code之前),Scala 2.9中的唯一选择是忽略涉及数组的练习,还是我忽略了其他方法?

最佳答案

根据this的说法,它从scala 2.8开始就无法解决

09-19 08:12