我是 Scala 的新手,通过 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 文档时遇到了麻烦。这让我觉得可能有一种更简洁、更实用的方法来获得我想要的结果。有人有好的解决方案吗?
最佳答案
这个怎么样:
val pairs = for(x <- nums; y <- nums) yield (x, y)
关于list - 组成所有对的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11803349/