小编mmh*_*mmh的帖子

模式匹配中的Monoid mempty

我试着编写一个maximum类似于中的函数的广义函数Prelude.我的第一个naiv方法看起来像这样:
maximum' :: (F.Foldable a, Ord b) => a b -> Maybe b
maximum' mempty = Nothing
maximum' xs = Just $ F.foldl1 max xs

但是,当我测试它时,Nothing无论输入如何,它总是返回:
> maximum' [1,2,3]
> Nothing

现在我想知道是否有可能获得Monoid类型实例的空值.我写的测试函数正常工作:
getMempty :: (Monoid a) => a -> a
getMempty _ = mempty

> getMempty [1,2,3]
> []

我已经看过这两个问题,但我没有弄清楚答案是如何解决我的问题的:在空集中
使用Maybe在Haskell Haskell模式匹配中编写一个最大Monoid

我将如何重写maximum'函数以使其工作?

haskell pattern-matching monoids

5
推荐指数
2
解决办法
907
查看次数

标签 统计

haskell ×1

monoids ×1

pattern-matching ×1