class Functor f where
fmap :: (a -> b) -> f a -> f b

instance Functor [] where
fmap = map

fmap (\x -> x * 2) [1, 2, 3]

↓

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

implicit val functorListInstance: Functor[List] = new Functor[List] {
def map[A,B](fa: List[A])(f: A => B): List[B] = fa map f
}

implicitly[Functor[List]].map(List(1,2,3))(2 *)

こう書けばわかるでしょ