Haskell-内置元组,其中Ord定义为仅按第一个元素进行比较?

埃文

我对Haskell还是比较陌生,因此希望这不是一个愚蠢的问题。我正在寻找一种常见的/众所周知的类型,其本质上是一个元组,但是已经Ord定义为仅与第一个元素进行比较。

我可以这样定义自己:

data RankedItem a = RankedItem Double a deriving (Show)

instance Eq (RankedItem a) where
  (RankedItem lkey _) == (RankedItem rkey _) = lkey == rkey

instance Ord (RankedItem a) where
  (RankedItem lkey _) `compare` (RankedItem rkey _) = compare lkey rkey

是否有内置类型或常用的第三方容器来实现这一目标?

Aplet123

是的,存在这种类型。这是Arg在Data.Semigroup中定义类型它的EqOrd实例仅根据第一个元素进行比较,并且它还有各种其他实例(如Functor)根据第二个元素进行操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Haskell中按第一个元素然后第二个元素对元组列表进行排序

Haskell:在元组列表中查找第一个元素为x的元组

如何从仅匹配 Haskell 中元组的第一个值的元组列表中删除元素

Haskell - 按最后一个元组元素对元组列表进行排序

通过haskell中的列表理解提取元组的第一个元素

Haskell过滤器的第一个元素

列表中的第一个元素haskell

Haskell反转尾巴但保留第一个元素

返回Haskell中列表的第一个元素

删除满足谓词的第一个元素(Haskell)

删除元素的第一个实例(Haskell)

从列表中的3个元组中获取第一个和第二个元素-Haskell

Haskell:如果两个元组的第一个元素相等,则在元组列表中添加第二个元素?

按haskell中的元素之一对元组进行排序

Haskell地图,直到满足第一个条件

第一个 Haskell 程序未启动

从Haskell中的Set中获取第一个元素(如果存在)

Haskell:检查列表中的第一个元素是否重复

Haskell 列表输出中缺少第一个元素

Haskell组功能/第一个元素始终丢失

元组的Haskell列表比较对

对元组列表进行排序,其中第一个元组项目为字母数字

Haskell:与Ord比较,但返回最小的

Haskell,找到第二个元素最少的tupel,如果第二个元素具有两个相同值的tuple,则使用第一个元素进行排序

在Haskell中为Tree数据定义一个Map

Haskell 比较两个列表的长度,但其中一个是无限的?

在Haskell中定义元素

Haskell:运行两个monad,保持第一个的结果

按元组的第一个元素分组列表