def map2[A,B,C](as: List[A], bs: List[B])(f: (A,B) => C): F[C] =
  flatMap(fa)(a => map(fb)(b => f(a,b))

flatMap 가지고 map2 선언하면 이런 모양인데

val as = List(1, 2, 3, 4)
val bs = List(0, 2, 4, 8)
listMonad.map2(as, bs)(_ * _)

내가 바라는 거랑 다르게 길이 16개 짜리 리스트가 나옴.

코드를 잘 생각해보니 16개가 나오는 게 맞는 거 같음.

Monad에서 이렇게 정의하는 거로 알고 있었는데

제가 먼가 잘못 생각하고 있는 건가요