스칼라 미래처럼 보이는 스 카스 모나드를 사용하는 몇 가지 질문을 봅니다. Here 및 here. 전역 실행 컨텍스트를 사용하지 않고 암시 적 유형 클래스로 이것을 해결하는 만족스러운 방법을 보지 못했지만 이러한 유형 클래스의 가져 오기에는 컨텍스트에 대한 정적 지식이 없어야합니다. 여기에 누락 된 것이 있습니까? (scalaz.concurrent.Future를 사용하지 않는다고 가정)스칼라 scalaz.Monad [scala.concurrent.Future], 실행 컨텍스트는 어떻습니까?
1
A
답변
1
는 모나드가 Future로 알려진 콜 사이트에서 암묵적으로 사용할 수 있어야합니다. 귀하의 프로그램에 존재하는 유형 클래스에 대해 잠재적으로 여러 다른 정의를 둘러싼 어색함이 있지만 거기에 정적으로 구현할 필요가 없다는 것에 동의합니다.
import scala.concurrent.Future
import scalaz._
import Scalaz._
def foo[A, T[_]: Traverse, M[_]: Monad](t: T[M[A]]): M[T[A]] =
implicitly[Traverse[T]].sequence(t)
def bar(l: List[Future[Int]])(implicit ctx: ExecutionContext): Future[List[Int]] =
foo(l)
만`Applicative`이 foo``가 필요하며이 여기에 대신 형 제약 조건으로 사용함으로써해야
https://github.com/scalaz/scalaz/blob/v7.1.0/core/src/main/scala/scalaz/std/Future.scala#L8
참고. 나는 질문을하기 때문에'Monad'만을 선택했습니다. – drstevens