[英]Why is there no type class for monoids on functors in Haskell?
我承認這個問題有點不具體,但我想知道為什么我從來沒有在 Haskell 中偶然發現一個用於函子上的幺半群的類型類。 我只是想念它,這次缺席是否有充分的理由,或者完全是由於歷史原因? 恕我直言,下面的繼承圖沒有右上角看起來有點奇怪:
Functor
|
V
Applicative ––> Alternative
| |
V V
Monad ––> MonadPlus
這里要考慮的一個關鍵因素是,“來自Functor
的箭頭到底意味着什么?” 如果沒有將Functor
與FunctorPlus
統一的公理,那么您不妨定義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.