Kiểu chữ Comonad trong Haskell là gì? Như trong Comonad từ Control.Comonad trong gói comonad (giải thích về bất kỳ gói nào khác cung cấp kiểu chữ Comonad cũng được hoan nghênh). Tôi đã mơ hồ nghe nói về Comonad, nhưng tất cả những gì tôi thực sự biết về nó là những gì cung cấp extract :: w a -> a
, tương tự như của Monad return :: a -> m a
.
Điểm thưởng khi ghi chú các lần sử dụng Comonad trong "đời thực" trong mã "thực".
return :: a ~> m a
, flip bind :: (a ~> m b) -> (m a ~> m b)
. Đảo ngược các mũi tên nguệch ngoạc và bạn sẽ có được các hoạt động 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
)