Can monad with broken associativity law yield incorrect result in for-comprehension?
问题 Here is a Monad instance for ListT (copied from montrivo) case class ListT[M[_], A](value: M[List[A]]) implicit def listTMonad[M[_]: Monad] = new Monad[ListT[M, *]] { override def flatMap[A, B](fa: ListT[M, A])(f: A => ListT[M, B]): ListT[M, B] = ListT( Monad[M].flatMap[List[A], List[B]](fa.value)( list => Traverse[List].flatTraverse[M, A, B](list)(a => f(a).value) ) ) override def pure[A](a: A): ListT[M, A] = ListT(Monad[M].pure(List(a))) override def tailRecM[A, B](a: A)(f: A => ListT[M,