【发布时间】:2017-03-18 20:01:25
【问题描述】:
在我的 haskell 程序中,我有一个以[(key, value)] 格式表示数据库的列表。例如,这是一个有效的数据库:[("key1", "value1"), ("key2", "value2"), ("key3", "value3")]。 key 和 value 数据将始终具有 String 类型。
我的问题是:是否可以通过重载 read 函数 来编写 reading 操作 并以这种方式使用它:read dbList "key1"?如果是,我该如何解决这个问题?输出需要为("not found","value data for key not exists") 或("found", "value1")。
我已经查找了如何解决这个问题,但我发现的只是如何对一个输入参数使用读取函数以及如何定义新类型以便为该特定类型创建读取实例是需要的。但是我仍然很好奇我是否可以用两个输入参数以某种方式重载读取函数。
【问题讨论】:
-
read :: Read a => String -> a用于从字符串表示创建特定类型的值,而不是用于执行数据库查找。 -
感谢您的有用评论。我的老板要求我将 read 函数与预期的代码示例一起使用,我想确定这是否可行,因为我找不到任何解决方法。
-
他知道
Read类吗?read本身不能被重载,因为它实际上不是由Read类定义的。 -
也许他只是写了一个例子,也许他没有深入分析。我认为如果不是逐个字符读取 就可以了。我只是好奇在行动之前是否有可能。
标签: haskell overloading