我在 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]
最佳答案
提示:使用dropWhile (/= crd) pck
从头开始移除所有卡片,直到找到您的卡片。然后,剩下的第一张牌是crd
。下一个就是你想要的。
不过,如果 pck
是一副标准顺序的牌组,遍历整个牌组以找到下一张牌似乎效率很低。
关于list - 列表中的下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33529179/