我想用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/