![](/img/trans.png)
[英]What are some motivating examples for Cofree CoMonad in Haskell?
[英]What is the Comonad typeclass in Haskell?
Haskell中的Comonad類型類是什么? 與Comonad包中的Control.Comonad的Comonad一樣 (也歡迎提供Comonad類型類的任何其他包的解釋)。 我模糊地聽說過Comonad,但我真正知道的是它提供了extract :: wa -> a
,類似於Monad的return :: a -> ma
。
在“真實”代碼中注意Comonad的“真實生活”用途的獎勵積分。
這些鏈接可能會有所幫助:
這並沒有完全回答我的問題,但我想以答案格式提供一些相關信息:
“co”(松散地)意味着“翻轉箭頭”。 這是一個粗略的視覺效果。
考慮monadic操作:
return :: a ~> m a
flip (>>=) :: (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
請注意,在這種格式中, return
是一個恰好適合flip (>>=)
的參數槽的箭頭,並且extract
和extend
也是如此。 Monad / comonad法律規定,當你將return
或extract
放入該槽時,結果就是標識箭頭。 法律是相同的,“只是用箭頭翻轉”。 這是一個超級手聽的答案,但希望它提供了一些見解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.