数组函子运动

时间:2012-10-19 01:34:04

标签: arrays scala manifest scalaz

我正在查看20 Intermediate Scala Exercises并且在锻炼方面遇到一些困难4.不幸的是我无法在任何地方找到任何解决方案,我想知道它是否真的可以解决。

Fluffy显然是伪装的Functorfurryfmap

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] = ???
  }

问题是我无法在没有上下文绑定Array[B]的情况下创建B: ClassManifest,但如果我添加一个,则会违反Fluffy特征的契约。

由于这些问题来自2008年,假设在Manifest之前,是Scala 2.9中忽略涉及数组的练习的唯一选择,还是有其他方法可以忽略?

1 个答案:

答案 0 :(得分:2)

根据this,自scala 2.8以后它无法解决。