Haskell의 Comonad typeclass는 무엇입니까? 에서 Comonad에서와 같이 comonad 패키지 Control.Comonad (A Comonad의 typeclass는 또한 제공하는 다른 패키지의 설명은 환영합니다). 나는 Comonad에 대해 막연하게 들었지만, 내가 그것에 대해 정말로 아는 extract :: w a -> a
것은 Monad의 return :: a -> m a
.
“실제”코드에서 Comonad의 “실제”사용에 대한 보너스 포인트.
답변
다음 링크가 도움이 될 수 있습니다.
- 세포 오토마타를 평가하는 것은 혼수 상태 입니다. 특히 “많은 작지만 유사한 계산에서 큰 데이터 구조가 결합 된 것을 볼 때마다 우리가 코 모나드를 다룰 가능성이 큽니다”.
- 시퀀스, 스트림 및 세그먼트
- 일상 생활의 코 모나드
답변
이것은 내 질문에 완전히 대답하지는 않지만 몇 가지 관련 정보를 대답 형식에 넣고 싶었습니다.
“co”(느슨하게)는 “화살표 뒤집기”를 의미합니다. 여기에 대한 대략적인 시각이 있습니다.
모나드 연산을 고려하십시오.
return :: a ~> m a
flip (>>=) :: (a ~> m b) -> (m a ~> m b)
구불 구불 한 화살표를 반대로하면 코모 나딕 연산이 나타납니다.
extract :: a <~ w a
extend :: (a <~ w b) -> (w a <~ w b)
(일반 화살표로 작성)
extract :: w a -> a
extend :: (w a -> b) -> w a -> w b
공지 사항이 형식, 방법 return
너무의 인수 슬롯에 맞게 일이 화살표이고 flip (>>=)
, 동일한은 사실이다 extract
하고 extend
. 모나드는 / comonad 법은 둘 때 말 return
또는 extract
해당 슬롯에, 결과는 신원 화살표입니다. 법칙은 “화살표를 뒤집은 상태에서”동일합니다. 그것은 매우 손쉬운 대답이지만 약간의 통찰력을 제공하기를 바랍니다.