我对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
是否有内置类型或常用的第三方容器来实现这一目标?
是的,存在这种类型。这是Arg
在Data.Semigroup中定义的类型。它的Eq
和Ord
实例仅根据第一个元素进行比较,并且它还有各种其他实例(如Functor
)根据第二个元素进行操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句