gpt4 book ai didi

haskell - 如何更新元组列表中的某个元组元素?

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

这里是 Haskell 初学者。

我有一个 (a, b) 类型的元组列表,如下所示:[(1, "One"), (2, "2")],和一对 (key, value)

我想创建一个递归函数,它接受一个元组对和所有类型 (a, b) 的列表,并在用传递的值替换与传递的键关联的所有值后返回列表:

changeTup :: (Eq a) => (a,b) -> [(a,b)] -> [(a,b)]

示例输出:

> changeTup (1, "Hello") [(1, "One"), (2, "Two")] 
=> [(1, "Hello"), (2, "Two")]

我做了一些挖掘,看起来最好的方法是使用 map。我试过了,但没有得到任何好的结果。

这是我的代码:

changeTup :: (Eq a) => (a,b) -> [(a,b)] -> [(a,b)]
changeTup (y,z) [] = [(y,z)]
changeTup (y,z) (x:xs) = map replace
where replace (key, value)
| y == key = (key, z)
| otherwise = (key, value)

我不确定如何在 map 中增加列表 (x:xs)。我遇到了一个预期的类型错误

最佳答案

关于 map 函数的事情是遍历列表(或另一个模糊的列表形状的东西)是它的全部工作。在你的代码中,你有一个非常好的 replace 函数,你想应用到列表的元素 (x : xs) - 这样做就像简单如 map replace (x : xs)

关于haskell - 如何更新元组列表中的某个元组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69354472/

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