【发布时间】:2020-11-08 06:37:12
【问题描述】:
我是 Haskell 的新手,想知道如何执行以下操作:
L = [[1,2],[1,2,3],[1,2,3,4]]
如何摆脱所有子列表 ([1,2], [1,2,3]) 并仅获得 [[1,2,3,4]] 的结果?
【问题讨论】:
-
在
Data.List中使用isInfixOf -
我尝试了以下方法,第一个函数有效,但第二个函数导致错误,我可能遗漏了一些明显的东西。 subList :: [Int] -> [Int] -> Bool subList a b = if isSubsequenceOf a b then False else True filterOutSublists :: [[Int]] -> [[Int]] filterOutSublists (n1:n2:ns) = filter subList $ n1 n2 ++ filterOutSublists(n2:ns)
-
如果它们不是彼此的子列表怎么办,例如
L = [[1, 2], [3, 4]]呢? -
XY 问题?或许一开始就不要生成这些短名单。
-
如果您有更新,请edit您的问题,cmets 不是放置 Haskell 代码的好地方。