gpt4 book ai didi

haskell - 无法从 Haskell 元组获取第一个值

转载 作者:行者123 更新时间:2023-12-01 22:04:27 25 4
gpt4 key购买 nike

我有一个形式为 ([(Int, Int, Int)], Int, Int) 的值

我需要一个函数,它以 ([(Int, Int, Int)], Int, Int) 的形式获取数据并返回 [[(Int, Int, Int )]]

假设我的列表名为it。当我运行 fst it

我收到这个错误

 * Couldn't match expected type `(a, b0)'
with actual type `([(Int, Int, Int)], Int, Int)'
* In the first argument of `fst', namely `it'
In the expression: fst it
In an equation for `it': it = fst it
* Relevant bindings include it :: a (bound at <interactive>:9:1)

我无法理解自己做错了什么。有人可以帮我吗。我想获取 it 的第一个值,它是一个列表列表。

最佳答案

如签名所示,fst :: (a, b) -> a返回 2 元组的第一个 项。所以不是 3 元组(或任何 n 元组 n ≠ 2)。

对于 3 元组(及更高元组),通常使用模式匹配(例如在 lambda 表达式中)。例如:

\(x, _, _) -> x

是一个获取 3 元组第一项的 lambda 表达式。

或者您可以定义一个函数来进行这种模式匹配,例如:

fst3 :: (a, b, c) -> a
fst3 (x, _, _) = x

关于haskell - 无法从 Haskell 元组获取第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52615752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com