簡體   English   中英

Haskell中的Comonad類型類是什么?

[英]What is the Comonad typeclass in Haskell?

Haskell中的Comonad類型類是什么? 與Comonad包中的Control.Comonad的Comonad一樣 (也歡迎提供Comonad類型類的任何其他包的解釋)。 我模糊地聽說過Comonad,但我真正知道的是它提供了extract :: wa -> a ,類似於Monad的return :: a -> ma

在“真實”代碼中注意Comonad的“真實生活”用途的獎勵積分。

這些鏈接可能會有所幫助:

  1. 評估細胞自動機是常用的 特別是,“每當你看到大量數據結構從大量小而類似的計算拼湊在一起時,我們就很有可能處理一個comonad”。
  2. 序列,流和段
  3. 日常生活中的共生體

這並沒有完全回答我的問題,但我想以答案格式提供一些相關信息:

“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 (>>=)的參數槽的箭頭,並且extractextend也是如此。 Monad / comonad法律規定,當你將returnextract放入該槽時,結果就是標識箭頭。 法律是相同的,“只是用箭頭翻轉”。 這是一個超級手聽的答案,但希望它提供了一些見解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM