haskell - 在 Haskell 中创建一个包含三元组所有可能变体的数组
问题描述
我是 Haskell 的新手,我正在尝试创建一个函数,它接受一个三元组并返回一个三元组数组,如下所示:
tripleVariations 1 (0,0,0)
=> [(1,0,0), (0,1,0), (0,0,1)]
我了解如何使用模式匹配匹配三元组中的特定值,我什至创建了一个自定义函数,将函数映射到三元组,但我不明白如何替换三元组的一个值,将其添加到数组中然后继续到三元组中的下一个值。我发现我倾向于根据命令式范式过多地尝试解决这些问题,这正是我想要避免的。欢迎任何帮助,谢谢!
解决方案
当然你可以写它:
tripleVariations w (x,y,z) = [(w,y,z), (x,w,z), (x,y,w)]
如果您希望它适用于任何大小的元组,它会更复杂......但您不这样做,那么为什么要浪费精力呢?
根据Haskell:如何映射元组? 没有办法遍历一个元组,因为元组可以有不同的类型。(Int, String, Char)
例如,迭代类型是没有意义的。如果您想编写与每个部分都具有相同类型的元组一起使用的代码,那么您可能应该使用列表而不是元组。
推荐阅读
- javascript - 如何使用 javascript 或 jquery 选择供应商前缀?
- python - 使用句子创建向量
- c++ - 第 25 行的“表达式必须具有整数或无范围枚举类型”
- python - 在 PySpark 中导入用户定义的模块失败
- azure-devops - 从 CLI 获取 Azure Devops NPM 提要身份验证令牌
- openldap - ActiveMQ Artemis 无法针对 OpenLDAP 进行身份验证
- c# - 将 SupportedRuntime 设置为 4.6 后缺少装配错误 (System.Runtime.InteropServices.RuntimeInformation)
- php - 将 ACF 文件插入 CSS 伪元素
- javascript - 不要从 URL 中获取 GET 参数
- pandas - 哪个更好,多个文件的多个请求或单个文件的单个请求 S3?