gpt4 book ai didi

具有两个输入的 Haskell 读取函数重载

转载 作者:行者123 更新时间:2023-12-02 07:22:05 25 4
gpt4 key购买 nike

在我的 haskell 程序中,我有一个以 [(key, value)] 格式表示数据库的列表。例如,这是一个有效的数据库:[("key1", "value1"), ("key2", "value2"), ("key3", "value3")]keyvalue 数据将始终为 String 类型。

我的问题是:是否可以通过重载读取函数并以这种方式使用它来编写读取操作:read dbList "key1"?如果是,我该如何解决这个问题?输出需要是 ("not found","value data for key not exists")("found", "value1")

我查过如何解决这个问题,但我发现的只是如何对一个输入参数使用读取函数,以及如何定义一个新类型以便为该特定类型创建一个读取实例,如果它是需要的。但是我仍然很好奇我是否可以用两个输入参数以某种方式重载读取函数。

最佳答案

你想要的函数是lookup,它是Prelude的一部分。

> :t lookup
lookup :: Eq a => a -> [(a, b)] -> Maybe b
> let dbList = [("key1", "value1")]
> lookup "key1" dbList
Just "value1"
> lookup "key2" dbList
Nothing

如果您确实需要您显示的元组形式的输出,您可以对结果进行模式匹配。

case lookup dbList someKey of
Just x -> ("found", x)
Nothing -> ("not found", "data for " ++ key ++ " does not exist")

关于具有两个输入的 Haskell 读取函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42879220/

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