Apa kelas tipe Comonad di Haskell? Seperti dalam Comonad dari Control.Comonad dalam paket comonad (penjelasan tentang paket lain yang menyediakan kelas tipe Comonad juga diterima). Saya samar-samar pernah mendengar tentang Comonad, tetapi yang saya benar-benar tahu tentang itu adalah penyediaan extract :: w a -> a
, semacam paralel dengan Monad return :: a -> m a
.
Poin bonus untuk mencatat penggunaan Comonad dalam "kehidupan nyata" dalam kode "nyata".
return :: a ~> m a
, flip bind :: (a ~> m b) -> (m a ~> m b)
. Membalikkan berlekuk-lekuk panah dan Anda mendapatkan operasi 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
)