[haskell] Haskell의 Comonad typeclass는 무엇입니까?

Haskell의 Comonad typeclass는 무엇입니까? 에서 Comonad에서와 같이 comonad 패키지 Control.Comonad (A Comonad의 typeclass는 또한 제공하는 다른 패키지의 설명은 환영합니다). 나는 Comonad에 대해 막연하게 들었지만, 내가 그것에 대해 정말로 아는 extract :: w a -> a것은 Monad의 return :: a -> m a.

“실제”코드에서 Comonad의 “실제”사용에 대한 보너스 포인트.



답변

다음 링크가 도움이 될 수 있습니다.

  1. 세포 오토마타를 평가하는 것은 혼수 상태 입니다. 특히 “많은 작지만 유사한 계산에서 큰 데이터 구조가 결합 된 것을 볼 때마다 우리가 코 모나드를 다룰 가능성이 큽니다”.
  2. 시퀀스, 스트림 및 세그먼트
  3. 일상 생활의 코 모나드

답변

이것은 내 질문에 완전히 대답하지는 않지만 몇 가지 관련 정보를 대답 형식에 넣고 싶었습니다.

“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해당 슬롯에, 결과는 신원 화살표입니다. 법칙은 “화살표를 뒤집은 상태에서”동일합니다. 그것은 매우 손쉬운 대답이지만 약간의 통찰력을 제공하기를 바랍니다.


답변