【发布时间】:2021-04-22 02:52:06
【问题描述】:
为了合并两个列表,可以使用以下代码。
[(x,y) | x <- [1, 2, 3], y <- [4, 5, 6]]
或者
(,) <$> [1,2,3] <*> [4,5,6]
哪些产品
[(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
如果给定 N 个列表而不是 2 个列表,它们将以这种方式组合在一起,如何做到这一点?
如果可能的话,最好使用列表理解,因为我发现它最容易解释。
【问题讨论】:
-
我认为你必须使用
[[Int]]而不是[(Int, Int)] -
@user 我不确定我是否理解你的意思,抱歉我是haskell的新手
-
如果你想把它推广到 N 个列表,你将不能使用元组,因为你不能只向一个元组添加一个元素,所以你需要列表。不过,您也许可以创建自己的类似元组的构造,您可以轻松地进行 cons 和 uncons 操作。 (顺便说一下,这是一个笛卡尔积)
标签: list haskell functional-programming list-comprehension combinatorics