2017-11-19 27 views
2

조금 이해하려고 노력하고 있습니다. conduit.모나드 도관지도가 스트림을 나눕니다.

runConduit $ yield "abc" .| mapMC id .| sinkList 

을 실행하는 동안,

runConduit $ yield "abc" .| mapC id .| sinkList 

["abc"]을 제공 실행 ["a", "b", "c"] 제공합니다.

왜 모나드 버전이 스트림을 분할합니까?

답변

3

이것은 여기에있는 유형과 관련이 있습니다. mapCa -> b 유형의 기능을 예상하는 반면 mapMCMonadm의 일부 인스턴스에 대해 a -> m b을 예상합니다. 두 경우 모두 id을 해당 함수로 사용하고 있으므로 입력 한 내용이 첫 번째 예에서는 b으로, 두 번째 예에서는 m b으로 처리됩니다. ,

  • 문자
  • 단일 문자에 모나드 변환되는 두 번째 예제의 목록 순수 변환되는 첫 번째 예 : 당신이 항복하고 값이 유형 [Char]이기 때문에,이에 고장 목록 모나드

두 번째 예는 첫 번째와 같은 행동 pure (또는 return)와 id을 바꾸려면 내부.