list - 用于处理整数元组的 Haskell 函数
问题描述
我刚刚开始学习 Haskell,并正在尝试创建一个函数,该函数对包含 6 个整数的元组执行多项检查。这些检查包括:
- 所有数字都不一样;
- 交替数字是偶数和奇数,或奇数和偶数;
- 备用数字相差两个以上;
- 第一对和中间的数字对形成数字,它们都是最后一个数字的倍数
问题是我可以尝试这个并有一些工作功能,比如
contains e [] = False
contains e (x:xs)
| x == e = True
| otherwise = contains e xs
unique :: [Int] -> Bool
unique [] = True
unique (x:xs)
| contains x xs = False
| otherwise = unique xs
对于第一个要求,但正如您所见,这依赖于使用列表而不是元组。如果有人可以帮助我如何为元组创建这些函数以及任何代码效率建议,我将不胜感激。
解决方案
您可以使用以下方法将 6 元组转换为列表:
tuple6ToList :: (a, a, a, a, a, a) -> [a]
tuple6ToList (a, b, c, d, e, f) = [a, b, c, d, e, f]
然后例如在列表上运行检查。这可能更简单,因为然后可以在列表上递归,而对于元组,这意味着您将检查“展开”为对元素的单独检查。
推荐阅读
- android - React Native:非法节点 ID 设置为 Animated.Add 节点的输入
- java - 如何在 replaceAll 的值中转义 $
- ruby - SSL证书错误通过rvm安装ruby
- javascript - 如果对象不存在,则将对象添加到现有状态,如果存在则更新它 React 状态
- java - 我无法访问我从主循环定义的类?[解决了]
- c# - 如何设置在 DropDownListFor 中选择的所有元素并添加像 checkBox 这样的图标
- python - 在 SQLAlchemy IN 语句中传递变量
- python - 使用 Python 加载表时,BigQuery 不会跳过 CSV 的标题行
- python - 为什么 pyinstaller 看不到 pyvisa-py?
- node.js - “crypto.createCipheriv with chinese character”的输出不正确