如何在haskel中获取一系列有序卡片,例如,如果我有这个序列
findSeq [(SIX,H),(SEVEN,H),(EIGHT,C),(NINE,H)]
我正在使用具有显式模式的函数,该函数也返回单个卡。我知道使用过滤器,但我想不出这样做的方法:D我想显示类似`
的内容[(SIX,H),(SEVEN,H)]
更新:我现在有了这个
findSeq::[Card]->[Card]
findSeq [] = []
findSeq (h:t)
|null t = [h]
|Just h==(pCard (head t) pack)=h:findSeq t
|otherwise=[h]
答案 0 :(得分:3)
请注意zip cards (tails cards)
如何为您提供列表cards
的连续卡片组列表。
现在您只需要从此列表中takeWhile
,比较您的值和套装:
findSeq cards = takeWhile sameCards $ zip cards (tails cards) where
sameCards (value1, suit1) (value2, suit2) =
suit1 == suit2 & value1 `precedes` value2
我想你已经定义了precedes
这样的函数。
注意:我目前没有Haskell编译器;代码未经过试验。