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

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

回答

是的,存在这样的类型。它是ArgData.Semigroup 中定义的类型。它的EqOrd实例仅基于第一个元素进行比较,并且它有各种其他实例(如Functor),它们根据第二个元素起作用。


以上是Haskell-内置元组,Ord定义为仅按第一个元素进行比较?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>