-
type lambdasscala/scala3 2024. 4. 23. 14:55
object Test { type MyList[A] = List[A] type MyListV2 = [A] =>> List[A] type MyMap[K, V] = Map[K, V] type MyMapV2 = [K, V] =>> Map[K, V] class Functor[F[_]] type MyFunctor[F[_]] = Functor[F] type MyFunctorV2 = [F[_]] =>> Functor[F] trait Monad[M[_]] { def flatMap[A, B](fa: M[A])(f: A => M[B]): M[B] } class ZIO[R, E, A] class ZIOMonad[R, E] extends Monad[[A] =>> ZIO[R, E, A]] { override def flatMap[A, B](fa: ZIO[R, E, A])(f: A => ZIO[R, E, B]): ZIO[R, E, B] = ??? } def main(args: Array[String]): Unit = { val x : MyListV2[Int] = List(3) } }
주의: type lambdas 와 polymorphic function types 을 헷갈리지 말자 - 참고
'scala > scala3' 카테고리의 다른 글
Function Context (0) 2024.04.12 Either using cats and ox (0) 2024.04.04 play-json 에서 scala3 enum 사용하기 (0) 2024.03.29 Exports (0) 2024.03.22 opaque type (0) 2024.03.22