t0716.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 25 行

SCALA
25
字号
trait Functor[F[_]] {  def fmap[A,B](fun: A=>B, arg:F[A]): F[B]}object Functor{  implicit val ListFunctor = new Functor[List] {    def fmap[A, B](f: A => B, arg: List[A]):List[B] = arg map f  }  final class OOFunctor[F[_],A](arg:F[A])(implicit ftr: Functor[F]) {    def fmap[B](fun: A=>B):F[B] = ftr.fmap(fun,arg)  }  //breaks if uncommented  implicit def lifttoOO[F[_],A](arg:F[A])(implicit ftr: Functor[F]) = new OOFunctor[F,A](arg)(ftr)  //works if uncommented  //implicit def liftListtoOO[A](arg:List[A]):OOFunctor[List,A] = new OOFunctor[List,A](arg)}object GeneralLiftingDemo extends Application {  import Functor._  val l = List(1,2,3)  println("OO : " + l.fmap( 1+) )}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?