【发布时间】:2011-09-18 03:28:35
【问题描述】:
可能重复:
Cartesian product
我是 Haskell 新手,我有一个问题。我想做一些函数,它将获取列表的第一个元素并连接到第二个列表的所有元素,然后从第一个列表中获取第二个元素并执行相同的操作。 例如我想采取: [[1],[2],[3]) 和 [[4],[5],[6]] 并输入输出
[([1],[4]),([1],[5]),([1],[6]),
([2],[4]),([2],[5]),([2],[6]),
([3],[4]),([3],[5]),([3],[6])]
我发现的closes是转置
transpose [[1,2,3],[4,5,6]]
[[1,4],[2,5],[3,6]]
我将不胜感激。
编辑: 真丢人。我找到了解决方案
[[x,y] | x <- [[1],[2],[3]], y <- [[4],[5],[6]]]
结果是:
[[[1],[4]],[[1],[5]],[[1],[6]],[[2],[4]],[[2],[5]],[[2],[6]],[[3],[4]],[[3],[5]],[[3],[6]]]
【问题讨论】:
-
谢谢它正是我想要的:)
标签: haskell math combinatorics cartesian-product