我正在尝试编写一个函数,其第三个参数可以是 (Int, Int)
或 Maybe (Int, Int)
。这可能吗?
randomFunction :: [Char] -> [[Int]] -> Either (Int, Int) Maybe (Int, Int) -> Bool
最佳答案
你问的东西的语法是:
Either (Int, Int) (Maybe (Int, Int))
但这不太可能是惯用的解决方案。我怀疑这更有可能是这两种解决方案之一:
可能 (Int, Int)
。手头有 (Int, Int)
的调用者可以将其包装在 Just
中。 (此解决方案始终适用。)(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/