我有以下数据类型:有没有办法在Haskell的列表中加一个Enum Bounded Ord类型?
data Suit = Club | Diamond | Heart | Spade
deriving (Eq, Ord, Bounded, Enum)
data Rank =
R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 |
Jack | Queen | King | Ace
deriving (Eq, Ord, Bounded, Enum)
data Card = Card {suit::Suit, rank::Rank}
deriving (Eq, Bounded)
,现在有[Card]
列表。有没有办法让我在列表中加一个Card
的Rank
?例如给出一个清单[Card Club R2, Card Club R2]
我想使它[Card Club R3, Card Club R3]
。我写了下面的代码:
-- | Update certain number of cards' rank in the list.
updateRankList :: Int -> [Card] -> [Card]
updateRankList num (x : xs)
| num == 0 = []
| otherwise = updateRank x ++ updateRankList (num - 1) xs
-- | Update a card's rank, didn't finish.
updateRank :: Card -> Card
updateRank card =
而我卡住了。谁能帮我?谢谢。
一如既往,请想想边界条件,并更新你的问题。 – 2014-09-11 13:12:32
对不起,我不太清楚您的边界条件是什么意思。 – user3928256 2014-09-11 13:21:48
“Ace”的'plus'级别是什么?它应该环绕到“R2”吗? – Lee 2014-09-11 13:22:48