diff options
author | Lukas Rytz <lukas.rytz@epfl.ch> | 2008-04-04 10:03:03 +0000 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@epfl.ch> | 2008-04-04 10:03:03 +0000 |
commit | 8d1aa644f830b61a86c8397d1f4b190a0ff9510d (patch) | |
tree | 0b43c193ea5ecddd6c32e3b6d17410b286b7bb7c | |
parent | b5dae302418fee4b3d6492ad1027650032a133c3 (diff) | |
download | scala-8d1aa644f830b61a86c8397d1f4b190a0ff9510d.tar.gz scala-8d1aa644f830b61a86c8397d1f4b190a0ff9510d.tar.bz2 scala-8d1aa644f830b61a86c8397d1f4b190a0ff9510d.zip |
test for t0716
-rw-r--r-- | test/pending/pos/t0716.scala | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/pending/pos/t0716.scala b/test/pending/pos/t0716.scala new file mode 100644 index 0000000000..98ba9bb2aa --- /dev/null +++ b/test/pending/pos/t0716.scala @@ -0,0 +1,24 @@ +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+) ) +} |