gpt4 book ai didi

list - Haskell:根据第一个值在列表中查找元组的第二个值

转载 作者:行者123 更新时间:2023-12-05 01:02:53 24 4
gpt4 key购买 nike

我在这里有一个函数,用于查看元组列表并通过获取第一个值来查找元组中的第二个值。这是到目前为止的功能:

lookup :: String -> [(String,String)] -> String
lookup _ _ [] = "Not found"
lookup x y zs = if (notFound x zs)
then "Not found"
else (head [b | (a,b) <- zs, (a==x)])

如果没有包含给定的第一个字符串的元组,则 notFound 函数只会返回一个 Bool 为真。问题是,我在 Hugs 中遇到了这种类型的错误:
ERROR "find.hs" (line 22): Type error in explicitly typed binding
*** Term : lookup
*** Type : String -> [(String,String)] -> [a] -> String
*** Does not match : String -> [(String,String)] -> String

我认为这与虚拟“未找到”值有关,该值与生成的列表中的字符串类型不同,但我不确定。

最佳答案

我认为您的显式类型声明是错误的。你有:

lookup :: String -> [(String,String)] -> String

但我认为应该是
lookup :: String -> String -> [(String,String)] -> String

实际上,再看一遍之后,您似乎没有使用第二个参数“y”。所以你可以像这样删除它和下划线
lookup :: String -> [(String,String)] -> String
lookup _ [] = "Not found"
lookup x zs = if (notFound x zs)
then "Not found"
else (head [b | (a,b) <- zs, (a==x)])

这将允许您保留您拥有的类型声明。

关于list - Haskell:根据第一个值在列表中查找元组的第二个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/815086/

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