我想用foldr或foldMap实现最小化。根据这个练习,它应该有这个定义:
mini :: (Foldable t, Ord a) => t a -> Maybe a -- named "mini" to avoid name clash
这听起来非常简单,但我不知道下面的X可以替代X以使其工作。请帮忙吗?
mini xs = Just (foldr min X xs)
你也可以通过foldMap向我展示如何使用它来获得奖励积分,但这似乎更难。
答案 0 :(得分:4)
你可以这样做:
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)
答案 1 :(得分:-1)
您可以尝试将“X”替换为列表中的第一个元素。当然,现在应该处理使用空列表调用函数'mini'时的情况。