Haskell의 Comonad typeclass는 무엇입니까? 에서 Comonad에서와 같이 comonad 패키지 Control.Comonad (A Comonad의 typeclass는 또한 제공하는 다른 패키지의 설명은 환영합니다). 나는 Comonad에 대해 막연하게 들었지만, 내가 그것에 대해 정말로 아는 extract :: w a -> a
것은 Monad의 return :: a -> m a
.
"실제"코드에서 Comonad의 "실제"사용에 대한 보너스 포인트.
“co”와 노멀의 차이점이 무엇인지 정말로보고 싶습니다. 나는 모나드가 무엇인지 압니다. 그래서“co”가 무엇을 의미하는지 안다면, comonad가 무엇인지 스스로 결론을 내리고 그것을 깊이 이해할 수 있습니다. Alexey Romanov의 대답은 그 측면에서 아무것도하지 않았습니다.
—
Evi1M4chine
@ Evi1M4chine : "co"(느슨하게)는 "화살표 뒤집기"를 의미합니다. 여기에 대한 대략적인 시각이 있습니다. 모나드 연산을 고려하십시오 :
—
댄 버튼
return :: a ~> m a
, flip bind :: (a ~> m b) -> (m a ~> m b)
. 구불 구불 화살표를 역방향 당신은 comonadic 작업을 얻을 : extract :: a <~ w a
, extend :: (a <~ w b) -> (w a <~ w b)
( extract :: w a -> a
, extend :: (w a -> b) -> w a -> w b
)
@Dan Burton에게 감사합니다. 모나드를 사용하는 동안에는 "내부"(새롭고 변경된 것을 넣는 것)에서 작업하고 코 모나드를 사용하여 "외부"에서 작업합니다 (마지막으로 꺼내거나 변경하기 위해). . 그 견해가 맞습니까? 깊은 이해에 확실히 도움이되기 때문입니다.
—
Evi1M4chine
코 모나드는 공동 효과를 모델링하는 데 사용할 수 있습니다. 여기 coeffects에 큰 소개합니다 : tomasp.net/coeffects
—
zeronone은