我有列表列表,需要将它与另一个列表列表组合在一起。示例输入: A:[1,2,3,4,5,6,7,8] B:[1,2,3,4,5,6,7,8]
输出示例:[1,2,1,2,1,2,3,4,..,7,8,5,6,7,8,7,8]
包含4个列表的2个列表将返回一个列表大小为4*4 = 16的列表
我尝试过递归地组合列表,但我知道即使可以通过,它也不会起作用。
mergeAll [[]] [[]] = [[]]
mergeAll [[]] b = b
mergeAll a [[]] = a
mergeAll xs ys = mergeAll (merge xs ys) (drop 1 ys)
merge :: [[a]] -> [[a]] -> [[a]]
merge [[]] [[]] = [[]]
merge xs [[]] = xs
merge [[]] ys = ys
merge (x:xs) (y:ys) = ((x++y):xs)发布于 2019-11-06 04:49:16
您可以使用列表理解:
[ xs ++ ys | xs <- listOfLists1, ys <- listOfLists2 ]发布于 2019-11-06 04:08:06
你可以这样做
Prelude> let doit = \as bs -> as >>= \a -> bs >>= \b -> pure (a ++ b)
Prelude> doit [[1,2],[3,4],[5,6],[7,8]] [[1,2],[3,4],[5,6],[7,8]]
[[1,2,1,2],[1,2,3,4],[1,2,5,6],[1,2,7,8],[3,4,1,2],[3,4,3,4],[3,4,5,6],[3,4,7,8],[5,6,1,2],[5,6,3,4],[5,6,5,6],[5,6,7,8],[7,8,1,2],[7,8,3,4],[7,8,5,6],[7,8,7,8]]发布于 2019-11-06 12:59:54
https://stackoverflow.com/questions/58718516
复制相似问题