【发布时间】:2015-12-02 15:56:32
【问题描述】:
例如,如果我有这个序列,我如何在 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]
【问题讨论】:
-
您想要随机序列还是从
n到m的特定序列? -
我想移动顺序的前两张卡,所以这两张应该返回,否则,如果 SEVEN 是 C,那么什么都没有,因为那意味着我只有一张卡,所以没有顺序。我只能从开头移动它们,而不是从列表的任何其他部分移动,所以头部应该在 0 上移动
-
您使用
take 2 seq获取前两个。我不明白你的问题和评论的其余部分,你需要给出更好的解释。 -
我正在尝试查看位置 0 上的卡片是否是下一张卡片的前身,如果是,则取走它,并继续直到我有一系列卡片,否则,仅返回 []。所以 [(SIX,H),(SEVEN,H),(EIGHT,H),(NINE,C)] 将只返回头部的有序序列,即 [(SIX,H),(SEVEN,H) ,(八,H)]
标签: list haskell list-comprehension