如何使自定义数据类型可订购?

Mik*_*and 0 haskell

我有一个Haskell的自定义数据类型,我想作为一个键使用Data.MapData.Graph以及其他的查找表。

data State = State
  { playerIdx :: Int
  , piles :: [Int]
  } deriving Show
Run Code Online (Sandbox Code Playgroud)

我如何使它可订购?以下似乎不起作用:

data State = State
  { playerIdx :: Int
  , piles :: [Int]
  } deriving (Show, Ord)
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 7

如果您将某物作为 的实例Ord,则它也需要是 的实例Eq,因此您应该同时派生EqOrd

data State = State
  { playerIdx :: Int
  , piles :: [Int]
  } deriving (Eq, Ord, Show)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢威廉,大概OP会收到一条错误消息,说“没有从'派生'子句中产生的(Eq State)实例......”(?)所以@MikeRand的教训是:不要只说“doesn”似乎工作”,但请给我们报告的错误。首先阅读它——它本身可能会给你答案。 (2认同)