簡體   English   中英

為什么 Haskell 中的函子上沒有幺半群的類型類?

[英]Why is there no type class for monoids on functors in Haskell?

我承認這個問題有點不具體,但我想知道為什么我從來沒有在 Haskell 中偶然發現一個用於函子上的幺半群的類型類。 我只是想念它,這次缺席是否有充分的理由,或者完全是由於歷史原因? 恕我直言,下面的繼承圖沒有右上角看起來有點奇怪:

  Functor
     |
     V
Applicative ––> Alternative
     |               |
     V               V
   Monad    ––>  MonadPlus

這里要考慮的一個關鍵因素是,“來自Functor的箭頭到底意味着什么?” 如果沒有將FunctorFunctorPlus統一的公理,那么您不妨定義instance Monoid (F t) where ...並完成它。 那么你在尋找什么公理——只是fmap f fempty = fempty或者fmap fx <|> fmap fy == fmap f (x <|> y) ...?

另一個關鍵因素是缺乏有趣的結構,這些結構是函子而不是應用。 可能有一個論點與泛型編程(元編程deriving關鍵字)有關,其中一切都是乘積的總和,因此我們可以為任何類型的* -> *派生Applicative ,但我不知道細節。 FunctorPlus可能具有的唯一價值是“ FunctorPlus做 Alternative 所做的相同的事情”,所以如果這個集合真的很小,那么顯然沒有多少附加值。

暫無
暫無

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

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