【发布时间】:2017-02-14 09:36:53
【问题描述】:
我正在寻找访问 Haskell 元组中的第三个元素。元组是 (String, String, Int) 类型,我想要 Int。我尝试过以我在网上看到的方式创建自己的,主要是:
get3rd (_,_,x) = x
*我也尝试过使用类型声明:(String, String, Int) -> Int 并为元组创建自定义类型并使用它。
如果我输入的元组全部由整数组成,则此方法有效,但是一旦将字符串放入,我会收到此错误:数据构造函数不在范围内:Mary :: String *Mary 是任意字符串,输入的两个字符串都出错。任何帮助都会很好地解决这个问题!
【问题讨论】:
-
这行得通,所以错误可能出现在您没有向我们展示的代码中。
Mary是什么? -
您输入的是
(Mary, Mary, 1)而不是("Mary", "Mary", 1)吗? -
get3rd ("Mary", "Mary", 1)在这里与get3rd :: (String, String, Int) -> Int和推断类型 (get3rd :: (t, t1, t2) -> t2) 都可以正常工作(应该这样:))。因此,如果您仍然有问题,您可能需要向我们提供一个最小的工作示例(即带有main :: IO ()的.hs文件的完整内容,它不会为您编译)。 -
只是想补充一点,如果您发现自己使用 >2 个元素元组,则可能值得创建一个新的数据类型。
-
你能发布完整的代码吗?