Slide 23
Slide 23 text
w UZQFMFWFMLJOEQSPKFDUPSɺܕϥϜμ ͰܕίϯετϥΫλ
Λهड़͢ΔͨΊͷίϯύΠϥϓϥάΠϯ
w ͜͜ͰɺܕϥϜμͷQMBDFIPMEFSߏจɻ
w ࢀߟϨϕϧͷQMBDFIPMEFSߏจʜ-JTU
NBQ G @
w
trait MyFunctor[F[_]]{
def map[T, U](f: F[T])(func: T => U):F[U]
}
class EitherMyFunctor[L] extends MyFunctor[λ[R => Either[L, R]]]{
def map[T, U](f: Either[L, T])(func: T => U): Either[L, U] = f match {
case Right(r) => Right(func(r))
case Left(l) => Left(l)
}
}
class AnotherEitherMyFunctor[L] extends MyFunctor[Either[L, *]]{
def map[T, U](f: Either[L, T])(func: T => U): Either[L, U] = f match {
case Right(r) => Right(func(r))
case Left(l) => Left(l)
}
}
,JOEQSPKFDUPS