我是斯卡拉的全新人员,他对Haskell的函数式编程经验非常有限。编写所有对的列表
我想尝试编写从单个输入列表构建的所有可能的对列表。例如:
val nums = List[Int](1, 2, 3, 4, 5) // Create an input list
val pairs = composePairs(nums) // Function I'd like to create
// pairs == List[Int, Int]((1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1) ... etc)
我试图与整个列表中的每个元素上使用zip
,希望它在整个复制一个项目。它没有工作(只匹配第一个可能的对)。我不知道如何重复一个元素(Haskell与cycle
和take
我相信),而且我在遵循Scala文档时遇到了麻烦。
这让我想到可能有更简洁,功能更强的方法来获得我想要的结果。有人有一个好的解决方案吗?
这是非常有帮助的学习为要执行的操作的术语。在这种情况下,您正在尝试查找列表的产品。看看这个:http://stackoverflow.com/questions/8217764/cartesian-product-of-two-lists – Marcin 2012-08-03 21:23:59
@Marcin谢谢你。我发现在学习任何程度的函数式编程时遇到的最大绊脚石之一是挑选新的术语。 – KChaloux 2012-08-03 21:41:16
跨产品?与笛卡尔产品相同?如果Spark在这里相关,那么[这个答案](http://stackoverflow.com/a/26565173/1175496)也是相关的 – 2016-07-22 07:44:38