我试着编写一个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'函数以使其工作?