【发布时间】:2021-06-24 02:07:12
【问题描述】:
一个数据库列表包含元组,每个元组包含一个唯一标识符字符串和与其关联的字符串列表,如下所示:
example = [("id1",["value1","value2","value3"]),
("id2",["value4","value5"]),
("id3",["value3","value6"])]
如您所见,一个字符串值可以出现多个标识符,就像 'value3' 的情况,它对应于 'id1' 和 'id3'。
我有兴趣编写一个函数,该函数将数据库和字符串值作为参数并返回这些字符串对应的所有 ID 的列表,如下所示:
lookScan :: database -> string -> [id]
所以lookScan example "value3"的结果应该是["id1", "id3"]
这几天我一直在摸不着头脑,每当我似乎即将破解这个问题时,我总是会遇到一堆令人困惑的错误。我知道这应该用两个守卫来完成,这使它成为一个递归解决方案,但内部逻辑让我无法理解。
到目前为止我所拥有的:
lookScan ((id, stringsList):allEntries) string
| -- code if equality
| -- code if no equality
一个特别难以捉摸的问题是如何获取 'stringsList' 的每个元素并将其与参数 'string' 进行比较,以便检查是否相等。
任何形式的帮助,即使是最细微的提示,都将不胜感激!谢谢大家! :)
【问题讨论】:
标签: list haskell recursion functional-programming tuples