首页 > 解决方案 > 在 Haskell 中创建一个包含三元组所有可能变体的数组

问题描述

我是 Haskell 的新手,我正在尝试创建一个函数,它接受一个三元组并返回一个三元组数组,如下所示:

tripleVariations 1 (0,0,0)
=> [(1,0,0), (0,1,0), (0,0,1)]

我了解如何使用模式匹配匹配三元组中的特定值,我什至创建了一个自定义函数,将函数映射到三元组,但我不明白如何替换三元组的一个值,将其添加到数组中然后继续到三元组中的下一个值。我发现我倾向于根据命令式范式过多地尝试解决这些问题,这正是我想要避免的。欢迎任何帮助,谢谢!

标签: haskell

解决方案


当然你可以写它:

tripleVariations w (x,y,z) = [(w,y,z), (x,w,z), (x,y,w)]

如果您希望它适用于任何大小的元组,它会更复杂......但您不这样做,那么为什么要浪费精力呢?

根据Haskell:如何映射元组? 没有办法遍历一个元组,因为元组可以有不同的类型。(Int, String, Char)例如,迭代类型是没有意义的。如果您想编写与每个部分都具有相同类型的元组一起使用的代码,那么您可能应该使用列表而不是元组。


推荐阅读