Haskellで私は得ました:
data Foo a where
Bar :: a -> Foo a
Map :: (a -> b) -> Foo a -> Foo b
instance Functor Foo where
fmap = Map
Scalaで私が思いついた:
import cats.Functor
trait Foo[A]
case class Bar[A](t: A) extends Foo[A]
case class Map[A,B](fun: A => B,foo: Foo[A]) extends Foo[B]
implicit val fooFunctor: Functor[Foo] = new Functor[Foo] {
def map[A,B](fa: Foo[A])(f: A => B) = Map(f,fa)
}
しかしBar(40).map(_+2)
、私に与えます:
error: value map is not a member of Bar[Int]
私は Scala にかなり慣れていないため、継承の方法がよくわかりません。
私は何が欠けていますか?