gpt4 book ai didi

haskell - 使用以下函数查找元组中的第 n 个元素

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

“使用以下带有两个参数的函数:

nth :: (a,a,a,a,a) -> Int -> a
其中 Int 值应返回五元素元组的第 Int 值。”
我试过了:
nth (a,b,c,d,e) x = (a,b,c,d,e) !! x
但是 GHC 给了我一个错误信息:
file.hs:11:21: error:
* Couldn't match expected type `[a1]'
with actual type `(a, b, c, d, e)'
* In the first argument of `(!!)', namely `(a, b, c, d, e)'
In the expression: (a, b, c, d, e) !! x
In an equation for `nth':
nth (a, b, c, d, e) x = (a, b, c, d, e) !! x
* Relevant bindings include
e :: e (bound at file.hs:11:14)
d :: d (bound at file.hs:11:12)
c :: c (bound at file.hs:11:10)
b :: b (bound at file.hs:11:8)
a :: a (bound at file.hs:11:6)
nth :: (a, b, c, d, e) -> Int -> a1
(bound at file.hs:11:1)
我应该怎么办?我应该如何写这个方程的元组部分?
提前感谢您的回答!

最佳答案

您不能使用 (!!) :: [a] -> Int -> a 因为,正如签名所说,它适用于列表,而不是元组。您可以使用模式匹配并将其实现为:

nth :: (a, a, a, a, a) -> Int -> a
nth (a, _, _, _, _) 0 = a
nth (_, b, _, _, _) 1 = b
nth (_, _, c, _, _) 2 = c
nth (_, _, _, d, _) 3 = d
nth (_, _, _, _, e) 4 = e
有提议将三元组定义为 (a, (b, c))因此它是一个递归结构,其中一个 n 元组被定义为一个 2 元组,其中一个 n-1 元组作为第二项。但情况并非如此(目前)。

关于haskell - 使用以下函数查找元组中的第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69499363/

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