如何在Haskell元组中访问第n个元素

阿米尔·纳贝伊(Amir Nabaei)

我有这个:

 get3th (_,_,a,_,_,_) = a

在GHCI中可以正常工作,但是我想用GHC编译它并给出错误。如果我想编写一个函数来获取元组的第n个元素并能够在GHC中运行,该怎么办?我的所有程序都如下所示,该怎么办?

 get3th (_,_,a,_,_,_) = a


 main = do 

    mytuple  <- getLine 
    print $  get3th mytuple
q

您的问题是getLine给您一个String,但是您想要某种元组。您可以通过将转换String为元组来解决问题,例如,使用内置read函数。这里的第三行尝试将解析StringInts的六元组

main = do
  mystring <- getLine

  let mytuple = read mystring :: (Int, Int, Int, Int, Int, Int)

  print $ get3th mytuple

但是请注意,尽管这对于了解类型等很有用,但您切勿在实践中编写此类代码。至少有两个警告标志:

  1. 您的元组包含三个以上左右的元素。这样的元组很少需要,并且通常可以用列表,向量或自定义数据类型替换。元组很少用于临时地将两种数据变成一个值。如果您经常开始使用元组,请考虑是否可以创建自己的数据类型。

  2. 使用read读取结构不是一个好主意。read会在任何微小的小错误时以可怕的错误消息爆炸您的程序,而这通常不是您想要的。如果您需要解析结构,则最好使用真正的解析器。read对于简单的整数等就足够了,但仅此而已。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在PHP中访问数组的第N个元素

从Haskell中的元组中提取第n个元素(其中n和元组已给定参数)

如何从元组中删除第n个元素?

如何在 OCaml 的列表中提取元组的第 n 个元素

如何在opencv中访问Mat的第n个通道?

如何在JavaScript中获取数组的第n个元素?

如何在继承元组的类中访问元组的元素

如何从元组列表中提取第n个元素?

如何从python中的元组列表中提取等于值的第n个元素

如何在div中包装第n到第n个元素

OCaml:提取元组的第n个元素?

如何在Haskell列表中的元组中添加元素?

如何在Haskell中访问名为元组字段的新类型

如何访问元组中的元素?

如何访问元组列表中的元组元素

Haskell:获取Snoc列表中的第N个元素

如何在pyspark的RDD上访问元组中的单个元素?

如何在语义动作中访问元组的元素

如何以简洁的方式安全地访问容器中的每个第n个元素?

无法在Javascript中访问多维数组的第n个元素

在编译时,我如何断言元组的第n个元素是某种类型的可选元素?

如何在C ++中旋转向量中的第N个元素

如何在numpy数组中的所有numpy数组中删除第n个元素?

Haskell:从类型为元组的类型中检索第n个值

如何在jQuery中获取div以下的第N个元素

Rust-如何在集合中查找第n个最频繁的元素

如何在PHP中获取多维数组的第n个元素?

访问矩阵的第n个元素

在输入向量的笛卡尔积中创建第n个元素的元组