我想用foldr或foldMap实现最小值。根据练习,它应具有以下定义:

mini :: (Foldable t, Ord a) => t a -> Maybe a -- named "mini" to avoid name clash

听起来很简单,但是我不知道可以在下面的X中添加什么才能使其起作用。请帮助?
mini xs = Just (foldr min X xs)

而且,您也可以通过foldMap向我展示如何获得奖励积分,但这似乎更加困难。

最佳答案

您可以这样做:

mini :: (Foldable f, Ord a) => f a -> Maybe a
mini = foldr maybeMin Nothing
  where
    maybeMin x Nothing = Just x
    maybeMin x (Just y) = Just (min x y)

关于haskell - 如何使用foldr(或foldMap)实现最小值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37398457/

10-12 06:16