当前位置: 首页 > 知识库问答 >
问题:

如何使用foldr(或foldMap)实现最小值?

党航
2023-03-14

我想用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也会得到额外的分数,但这似乎更难。

共有1个答案

白腾
2023-03-14

你可以做:

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) 
 类似资料:
  • 问题内容: 我需要将注意力集中在指定的窗口上,而我头上看到的唯一方法是将其前面的所有窗口最小化,直到找到正确的窗口为止。 我该怎么做? Windows 7,没有特定的工具包…。 每种类型的窗口,例如,firefox和控制台命令 问题答案: 您需要通过窗口枚举并匹配窗口标题才能获得所需的窗口。下面的代码搜索标题为“ firefox”的窗口并设置焦点: 为了最小化窗口,下面的行:

  • 本文向大家介绍如何使用css实现跨浏览器的最小高度?相关面试题,主要包含被问及如何使用css实现跨浏览器的最小高度?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 最少使用(LFU)是一种高速缓存算法,用于管理计算机内的内存。此方法的标准特性涉及系统跟踪内存中块被引用的次数。当缓存已满且需要更多空间时,系统将以最低参考频率清除项目。 例如,用Java来实现最近使用的对象缓存的最佳方法是什么? 我已经使用LinkedHashMap实现了一个(通过保持访问对象的次数),但是我很好奇是否有任何新的并发集合会更好。 考虑这种情况:假设缓存已满,我们需要为

  • 我正在测试一些使用JWindow和隐藏jframe的代码,所以我必须创建最小化、最大化和关闭按钮,以方便用户使用。单击创建的按钮时,如何将状态设置为帧。

  • 问题内容: 匿名类如何扩展超类或实现接口? 问题答案: 匿名类 必须 像其他Java类一样扩展或实现某些东西,即使它只是just 。 例如: 这里是实现的匿名类的对象。 匿名类可以使用相同的语法扩展另一个类: 您无法实现的是实现多个接口。您需要一个命名类来做到这一点。但是,匿名内部类和命名类都不能扩展多个类。

  • 问题内容: 您是否知道一个流行的库(Apache,Google等),该库具有可靠的最小- 最大堆Java实现,即允许在其中查看其最小值和最大值并删除其中的元素的堆? 问题答案: 番石榴:。