모든 횡단 가능한 모나드에는 수반되는 시퀀스가 ​​있습니까?

StackOverflow https://stackoverflow.com/questions/19854497

  •  29-07-2022
  •  | 
  •  

문제

나는보고 있었다 scalaz 그리고 대부분의 모나드에는 다음과 같은 능력이 있다는 것을 알 수 있습니다. 횡단했다 List, Option, Identity 등등 그리고 그것이 모든 횡단 가능한 객체도 시퀀스를 가질 수 있다는 것을 의미하는지 궁금합니다. 고려하다.

만약 그것이 사실이라면(제가 틀렸을 수도 있습니다), 다음의 결과는 무엇입니까? Identity 예를 들어:

Identity(Option(1)) 이게 될까? Option(Identity(1))?아니면 제가 뭔가를 놓치고 있는 걸까요? 그렇다면 어떤 조언이라도 매우 도움이 될 것입니다.

편집하다

실제로 나는 다음과 같은 신원 서열에 대해 정확했습니다.

Identity(Option(1)) 정말로 된다 Option(Identity(1)).그러면 해당 질문 부분이 해결되었습니다.

그래서 내 질문은 원래 제목으로 다듬어졌습니다. 탐색 가능한 모든 모나드는 순서대로 연결될 수 있습니까?

도움이 되었습니까?

해결책

sequence 항등 함수를 사용하여 순회하는 것으로 매우 간단하게 정의할 수 있습니다.하스켈에서:

sequence = traverse id

또는 Scalaz 6(위의 두 번째 링크)에서는 훨씬 더 장황합니다.

def sequence[N[_], B](implicit
  a: A <:< N[B],
  t: Traverse[M],
  n: Applicative[N]
): N[M[B]] = traverse((z: A) => (z: N[B]))

그렇습니다. 탐색 가능한 인스턴스가 있는 모든 유형은 순서가 지정될 수 있습니다(그리고 모나드일 필요도 없습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top