繁体   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