【问题标题】:Extracting a single value from a tuple in a list in Haskell从 Haskell 列表中的元组中提取单个值
【发布时间】:2014-10-18 14:16:12
【问题描述】:

所以我有一个元组列表

lis = [(5,6), (5,3), (5,2)]

如何提取元组的第一个值,即 5。

我知道你会用 head lis 来获取头部,但这会返回 (5,6),我想要 5。

更大的图景是能够获得一个元组列表的头部,并将其与另一个元组列表中的每个值进行比较,看看它是否匹配。

【问题讨论】:

    标签: list haskell tuples


    【解决方案1】:

    这很简单,只需使用fst 函数从元组中提取第一个值:

    λ> let lis = [(5,6), (5,3), (5,2)]
    λ> fst $ head lis
    5
    

    【讨论】:

    • 但是说我想在函数中使用它我在声明中遇到语法错误(意外符号“$”)
    • @Richard 你能做一个SSCCE吗?
    • 不,我不确定那是什么
    • @Richard,写一个你想写的代码的小而独立的例子。理想情况下,它应该编译。但一般来说,对错误消息的一部分进行描述而没有导致它的代码不会为您提供有用的答案。
    • Thefourtheye 提供了最后一段代码,但仍然产生错误
    【解决方案2】:

    如果您想在另一个表达式中使用lamba:

     (\(x, _) -> x) (head lis)
    

    或者如果你想要一个单独的功能:

     first :: (a, b) -> a
     first (x, _) = x
    

    不过,有一个函数称为 fst

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多