구문이 약간 다르며 추가 가져 오기가 필요하고 스칼라 String
이 문자 목록의 별칭이 아니기 때문에 제네릭 버전이 편리하지 않다는 점을 제외하고는 거의 동일합니다 하스켈 sequence
에서
import cats.instances.function._, cats.instances.list._, cats.syntax.traverse._
val funcs: List[String => String] = List(identity, _.reverse)
val f = funcs.sequenceU
는 인자의 외부 입력 생성자 내측 유형에 대한 생성자 Monad
인스턴스의 Traversable
인스턴스를 필요로한다. 고양이의 sequence
는 (이름 Traversable
이 이미 표준 라이브러리에 의해 촬영 때문에) Traverse
라고 거의 같 Traversable
이며,보다 정확한 제약 하스켈의 sequence
만의 모나드 인스턴스가 필요하다 대신 Monad
의 Applicative
인스턴스를 (필요 역사적 이유).
cats.implicits._
을 가져올 수 있으면 좋겠지 만 그럴 경우 다른 것들이 많이 있습니다. 위의 가져 오기는 필요한 최소 유형 클래스 인스턴스와 구문 확장을 제공합니다.
당신은 이런 String => List[String]
입니다 f
을 사용할 수 있습니다 : 당신은 2.12.1에있어 및 -Ypartial-unification
컴파일러 플래그를 사용할 수있는 경우
scala> f("test")
res0: List[String] = List(test, tset)
주
, 당신은 단지
.sequence
하지
.sequenceU
쓸 수 있는지 . 이전 스칼라 버전에서
U
이 필요한 이유는 긴 이야기입니다. 설명을 보려면
blog post here을 참조하십시오.