Qu’est ce que la classe Comonad en Haskell? Comme dans Comonad à partir de Control.Comonad dans le package comonad (les explications de tous les autres paquets fournissant une classe Comonad sont également les bienvenues). J’ai vaguement entendu parler de Comonad, mais tout ce que je sais vraiment, c’est que cela fournit des extract :: wa -> a
, extract :: wa -> a
sorte de parallèle avec le return :: a -> ma
de Monad return :: a -> ma
.
Des points bonus pour noter les utilisations “réelles” de la Comonad en code “réel”.
Ces liens peuvent être utiles:
Cela ne répond pas entièrement à ma question, mais je voulais mettre des informations pertinentes sous forme de réponse:
“co” (vaguement) signifie “retourner les flèches”. Voici un aperçu approximatif de cela.
Considérons les opérations monadiques:
return :: a ~> ma flip (>>=) :: (a ~> mb) -> (ma ~> mb)
Inverser les flèches ondulées et vous obtenez les opérations communes:
extract :: a <~ wa extend :: (a <~ wb) -> (wa <~ wb)
(Écrit avec des flèches normales)
extract :: wa -> a extend :: (wa -> b) -> wa -> wb
Notez que dans ce format, return
est une flèche qui se trouve juste dans le slot d'argument pour flip (>>=)
, et il en va de même pour extract
et extend
. Les lois Monad / Comonad stipulent que lorsque vous placez un return
ou un extract
dans cet emplacement, vous obtenez la flèche d'identité. Les lois sont les mêmes, "juste avec les flèches retournées". C'est une réponse superbe, mais j'espère que cela vous donnera un aperçu.