我正在尝试学习如何列出理解,并且我正在尝试找出一种方法来找到列表的所有子序列,但我不太确定人们会如何去做。有人可以帮助我吗?
最佳答案
如果要访问此功能,可以使用 subsequences
中的 Data.List
函数。
subsequences [1,2,3]
>>> [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
如果你想知道它是如何实现的,你可以检查函数的 source code ,它在 Hackage 上可用。
在这种情况下,它是:
subsequences :: [a] -> [[a]]
subsequences xs = [] : nonEmptySubsequences xs
nonEmptySubsequences :: [a] -> [[a]]
nonEmptySubsequences [] = []
nonEmptySubsequences (x:xs) = [x] : foldr f [] (nonEmptySubsequences xs)
where f ys r = ys : (x : ys) : r
关于haskell - 你如何找到一个列表的所有子序列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5373927/