我在Haskell中有一个函数,它返回卡片的后继者。我知道如何使用列表理解来访问该卡,但不太确定如何获得下一张卡,所以pos + 1。这是我的代码:
pCard::Card->Deck->Card
pCard (K,C) _ = (A,S) --exception for last card
pCard crd pck = head [p|(pos,p)<-(zip [0..51] pck),crd==p]
答案 0 :(得分:3)
提示:使用dropWhile (/= crd) pck
从开头删除所有卡片,直到找到您的卡片。然后,剩余的第一张卡片是crd
。之后的那个是你想要的那个。
但是,如果pck
是标准订单中的牌组,则在整个牌组上循环以找到下一张牌似乎效率很低。
答案 1 :(得分:3)