【问题标题】:Haskell function to work on integer tuple用于处理整数元组的 Haskell 函数
【发布时间】:2020-10-16 12:24:49
【问题描述】:

我刚刚开始学习 Haskell,并正在尝试创建一个函数,该函数对包含 6 个整数的 tuple 执行多项检查。 这些检查包括:

  1. 所有数字都不一样;
  2. 交替数字是偶数和奇数,或奇数和偶数;
  3. 替代数字相差两个以上;
  4. 第一对和中间的数字对构成数字,它们都是最后一对的倍数

问题是我可以尝试这个并且有一些工作功能,比如

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

对于第一个要求,但正如您所见,这依赖于使用 list 而不是元组。 如果有人可以帮助我如何为元组创建这些函数以及任何代码效率建议,我将不胜感激。

【问题讨论】:

  • 这不是一个元组,这是一个列表。
  • 您可以将元组转换为列表。
  • 这就是问题的重点

标签: list haskell tuples


【解决方案1】:

您可以将 6 元组转换为列表,使用:

tuple6ToList :: (a, a, a, a, a, a) -> [a]
tuple6ToList (a, b, c, d, e, f) = [a, b, c, d, e, f]

然后对列表进行检查。这可能更简单,因为可以在列表上递归,而对于元组,这意味着您将检查“展开”为对元素的单独检查。

【讨论】:

  • 谢谢。由于我正在处理的问题是专门讨论元组的,所以我想知道是否有一个我不知道的简单元组方法,因此对仅使用列表和转换犹豫不决,但这是有道理的。
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
相关资源
最近更新 更多