作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天我试图通过 monoid 类型类减少函数列表,但由于某种原因,生成的函数期望它的参数是 Monoid 的实例。
GHCI 告诉我 mconcat [id, id, id, id]
的类型是 Monoid a => a -> a
.但我希望它是 a -> a
.
怎么了?
最佳答案
您正在使用此实例:
instance Monoid b => Monoid (a -> b) where
mempty _ = mempty
mappend f g x = f x `mappend` g x
a -> a
)。要获得您期望的实例,您可以将函数包装在
Endo
中:
appEndo (mconcat [Endo id, Endo id, Endo id, Endo id])
appEndo $ mconcat $ fmap Endo [id, id, id, id]
关于haskell - 如何使用函数的幺半群实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44344706/
我是一名优秀的程序员,十分优秀!