haskell - 如何声明一个参数可以是 (Int, Int) 或 Maybe (Int, Int

我正在尝试编写一个函数,其第三个参数可以是 (Int, Int)Maybe (Int, Int)。这可能吗?

randomFunction :: [Char] -> [[Int]] -> Either (Int, Int) Maybe (Int, Int) -> Bool

最佳答案

你问的东西的语法是:

Either (Int, Int) (Maybe (Int, Int))

但这不太可能是惯用的解决方案。我怀疑这更有可能是这两种解决方案之一:

  1. 只接受 可能 (Int, Int)。手头有 (Int, Int) 的调用者可以将其包装在 Just 中。 (此解决方案始终适用。)
  2. 只接受 (Int, Int)。提供默认的 (Int, Int)——比如 (0, 0),当然正确的选择取决于函数的作用——调用者可以使用如果他们有一个 Maybe (Int, Int) 并且它的值为 Nothing。 (这个解决方案几乎总是可行的,但在极少数情况下,该函数可能会特别对待 Nothing 以致于它不能被任何特定的 (Int, Int) 模拟。)

关于haskell - 如何声明一个参数可以是 (Int, Int) 或 Maybe (Int, Int) 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74249358/

相关文章:

node.js - react native : A failure occurred while

sql - 删除 R 中的模糊重复项

python - 如何在 python 中过滤和打印特定的 json 字典

c - 在分配内存之前对灵活成员数组的第一个元素使用 sizeof 是未定义的行为?

r - 更快地填充矩阵

c++ - 如何使用索引初始化数组元素

python - 列表到列表字典(Python 优化)

r - 使用 group_by() 根据条件折叠 R 中的数据集

php - 按列中的子数组对数据行进行分组,并创建具有可变深度的子集

powershell - 执行功能默认操作,除非给出管道输入?